Remmina
Remmina is a free and open-source remote desktop client designed for Linux and other POSIX-based operating systems, enabling users to access and control remote computers over networks using protocols such as RDP, VNC, SSH, SPICE, and X2Go.[1] Developed initially by Vic Lee in 2009 and licensed under the GPLv2+, it provides a graphical user interface built with GTK+ for managing multiple remote connections efficiently.[2] The software emphasizes ease of use for system administrators, travelers, and remote workers, supporting features like multi-monitor setups, kiosk mode, and plugin extensibility via a Python wrapper.[3] Key to Remmina's functionality is its support for a variety of network protocols, each with customizable options tailored to specific needs; for instance, the RDP plugin allows configuration of color depth, sound redirection, and gateway support, while the VNC plugin includes options for repeater connections and view-only modes.[3] It also integrates SSH tunneling for secure access, SFTP for file transfers, and EXEC for running remote commands, with deprecated protocols like NX and XDMCP phased out since version 1.4.20 to focus on more modern and secure alternatives.[3] Available in over 67 languages and packaged for more than 50 Linux distributions, Remmina is community-driven, with ongoing development hosted on GitLab and funded through donations.[1] Beyond basic connectivity, Remmina stands out for its advanced tools, including screenshot capture, host key mappings for actions like toggling fullscreen, and opt-in usage statistics to improve the project, all while maintaining a lightweight footprint suitable for both desktop and server environments.[3] As copyleft libre software, it prioritizes user freedom and privacy, avoiding proprietary dependencies and ensuring all code is auditable by the open-source community.[1]Introduction
Overview
Remmina is a free and open-source remote desktop client licensed under the GNU General Public License (GPL), which enforces copyleft principles to ensure derivative works remain open.[4] It is designed primarily for POSIX-compliant operating systems, such as Linux and other Unix-like environments, enabling users to securely access, control, and share files with remote desktops from local machines.[1] This client facilitates remote connections through various network protocols, supporting tasks like system administration, remote work, and file transfer in diverse computing scenarios. Developed in the C programming language with the GTK+ library, Remmina offers seamless integration with desktop environments like GNOME, KDE, and others, providing a lightweight and responsive interface for managing connections.[1] It supports localization in 67 languages, making it accessible to a global user base, and is packaged for over 50 Linux distributions, ensuring broad compatibility across different systems.[1] As a community-driven project, Remmina relies on contributions from developers, translators, and users worldwide, with funding sustained through platforms like Liberapay and Open Collective to support ongoing maintenance and enhancements.[5][6]History
Remmina was initially developed in 2009 by Vic Lee as a GTK+-based remote desktop client aimed at providing a lightweight solution for connecting to various remote systems.[4][7] The project began on SourceForge, with early versions focusing on core protocols like RDP and VNC to meet the needs of Linux users managing remote connections.[4] In the second half of 2011, development transitioned to the FreeRDP project, where it was maintained as a sister project until the end of 2018, spanning nearly seven years of collaborative enhancements.[7] This period saw significant integration with FreeRDP for improved RDP support and overall protocol handling, building on Lee's foundational work.[7] By mid-2018, Remmina moved to an independent GitLab repository under the Remmina project, marking a shift toward community-driven maintenance with an emphasis on stability and broader adoption.[2] A key milestone was the first stable release, version 1.2.1, in May 2018, following extensive development under FreeRDP. Further evolution included the deprecation of unmaintained protocols such as NX and XDMCP in version 1.4.20, released in July 2021, to streamline the codebase.[3] The project's growth has been propelled by community contributions, expanding support for additional protocols like SPICE, SSH, and X2Go, while achieving translations into over 60 languages to enhance accessibility across global users.[1][8]Features
Supported Protocols
Remmina supports several active protocols for remote desktop and terminal connections, enabling users to access diverse systems through a unified interface. The Remote Desktop Protocol (RDP) facilitates connections to Windows environments, offering features such as configurable color depth, audio redirection, shared folders, and support for remote gateways to enhance security and performance.[3] Virtual Network Computing (VNC) provides cross-platform graphical access with options for repeater mode, view-only sessions, clipboard synchronization, and encryption to ensure secure remote control.[3] Secure Shell (SSH) enables terminal-based access and secure file transfer via SFTP, including authentication via passwords or identity files, session logging, and compression for efficient data handling.[3] The Simple Protocol for Independent Computing Environments (SPICE) is optimized for virtual machine management, supporting TLS encryption, USB redirection, audio channels, and dynamic resolution adjustments.[3] Additionally, EXEC allows local or remote command execution in asynchronous mode, while WWW supports web-based access through HTTP/HTTPS with proxy configurations and embedded browser capabilities.[3] X2Go, an extension of the NX protocol, delivers high-performance remote desktop sessions with features like session suspension and multimedia streaming over low-bandwidth connections.[9] Since version 1.4.20 released in 2021, Remmina has deprecated and removed support for NX, XDMCP, and Simple Terminal protocols due to reliance on outdated GTK functions like XEmbed and lack of maintenance, which remain the case as of version 1.4.41 (August 2025).[3][10][11][12] These protocols, once used for accelerated X11 forwarding (NX), direct X Display Manager Control (XDMCP), and basic terminal emulation (Simple Terminal), are no longer built or distributed with Remmina to prioritize modern, secure alternatives.[11] Remmina's protocol support is built on a modular plugin architecture, where each protocol is implemented as a loadable module in the plugins directory, allowing for easy extension and maintenance without altering the core application.[13] This design includes native C-based plugins for core protocols and experimental support for Python plugins, enabling developers to create custom protocol integrations by scripting against the Remmina Python API for tasks like connection handling and UI extensions.[14]User Interface and Capabilities
Remmina features a graphical user interface built on the GTK+ framework, which ensures seamless integration with Linux desktop environments such as GNOME.[15][3] The interface includes a central connection manager that organizes profiles into groups, supports tabbed sessions for handling multiple remote connections simultaneously, and provides a customizable toolbar for quick access to tools like scaling and fullscreen toggles.[3] A built-in search bar allows users to quickly locate and filter connection profiles, while optional tray icon support enables minimized operation and system notifications.[3] Among its core capabilities, Remmina offers multi-monitor support to extend remote sessions across multiple displays, kiosk mode for deploying in locked-down environments like thin clients, and versatile display options including full-screen mode, scaled viewing with adjustable quality, and persistence of the last-used view mode per connection.[1][3] Users can capture screenshots during sessions with configurable save locations and filenames, preventing automatic clipboard insertion for security, and define host keys for actions such as toggling fullscreen or scaling.[3] Double-clicking a profile in the manager initiates a connection directly, streamlining workflow for frequent users.[3] Advanced options enhance flexibility across session types, such as sharing local folders in RDP connections, displaying the remote cursor in VNC sessions, and enabling session logging with customizable paths in SSH terminals, including selectable color schemes for better visibility.[3] For accessibility and customization, Remmina is localized in 67 languages to support global users and employs a plugin architecture for extending functionality beyond core protocols.[1] Its GTK+ foundation facilitates deep integration with desktop environments like GNOME, allowing theme consistency and native keyboard shortcuts.[3]Development
Development Process
Remmina is primarily written in the C programming language, utilizing the GTK+ toolkit for its graphical user interface to ensure cross-desktop compatibility on Linux environments. The software features a modular plugin architecture that allows for extensible support of remote desktop protocols, enabling developers to add or modify protocol handlers without altering the core codebase. Essential dependencies include libfreerdp for Remote Desktop Protocol (RDP) functionality, libvncserver (incorporating libvncclient) for Virtual Network Computing (VNC) connections, and libssh for Secure Shell (SSH) tunneling and terminal access.[16][17] The project's development workflow is hosted on GitLab, where it has resided since June 2018, facilitating collaborative version control and issue tracking. Contributions from the community are integrated via merge requests, adhering to a fork-and-pull model that encourages bug fixes, feature enhancements, and code reviews. Building Remmina relies on CMake as the primary build system, which supports configurable compilation options for debugging and optimization. Additionally, the plugin framework extends to Python, allowing developers to create protocol plugins using scripting for rapid prototyping and integration.[2][18][19][20] Originally initiated as a solo effort by developer Vic Lee until mid-2011, Remmina was subsequently adopted by the FreeRDP team for temporary stewardship before transitioning to an open community model under the independent Remmina project. The current maintenance team comprises key contributors including Antenore Gatta, Giovanni Panozzo, Allan Nordhøy, Matteo F. Vescovi, and Hiroyuki Tanaka, who oversee code quality and integration. The project sustains itself through user donations collected via platforms such as Open Collective and Liberapay, which fund ongoing development and infrastructure. Community engagement occurs through channels like IRC on Libera.Chat and Matrix, while localization efforts are coordinated on Weblate, supporting translations into 67 languages to broaden accessibility.[7][21][5][6][1] Ongoing development prioritizes stability improvements to reduce crashes during multi-session handling, security enhancements such as updated TLS configurations for RDP connections compatible with legacy systems, and expanded multi-platform support across over 50 Linux distributions through refined packaging and dependency management.[22][1]Major Releases
Remmina's development began with the 0.8.x series, released between 2009 and 2011 under lead developer Vic Lee. These early versions introduced core functionality for remote desktop access, including initial support for RDP and VNC protocols, establishing Remmina as a lightweight GTK-based client for Linux users. The series focused on basic multi-protocol integration and plugin architecture to replace tools like rdesktop and vncviewer.[23] Following a period of development from 2011 onward, Remmina achieved version 1.2.30 stable release on May 28, 2018, marking a significant milestone in the FreeRDP era. This release emphasized plugin stability, enhanced RDP integration via FreeRDP libraries, and improved multi-protocol handling, including fixes for UI elements like search bar placement and OpenBSD linking issues. It represented the culmination of seven years of community contributions after the project's migration to GitHub under FreeRDP.[24] In the 1.4 series, version 1.4.20 was released in 2021, deprecating and removing support for the unmaintained NX, XDMCP, and Simple Terminal (ST) protocols to streamline the codebase and reduce maintenance overhead. This update prioritized active protocols like RDP, VNC, SPICE, and SSH, aligning with modern security standards and GTK dependencies.[25] Version 1.4.35, released on February 23, 2024, introduced new build dependencies including libcurl4-openssl-dev and libssl-dev version 3.0 or higher, enabling enhanced security features such as improved HTTP(S) support and SSL/TLS handling for remote connections. Optional Python plugin support was added via build flags like -DWITH_PYTHONLIBS=ON, further extending customization options.[26] Remmina's release cadence has been irregular and community-driven, with updates driven by volunteer contributors via GitLab merge requests, emphasizing bug fixes, compatibility enhancements (e.g., multi-monitor support introduced in versions beyond 1.4.10), and protocol updates rather than fixed schedules. As of November 2025, the latest release is version 1.4.41, available through GitLab tags, incorporating ongoing refinements like UI cleanups and FreeRDP revisions.[12][27]Installation and Usage
Packaging and Installation
Remmina is available in the official repositories of major Linux distributions, allowing straightforward installation via package managers. For Debian-based systems like Ubuntu, users can install it using the Advanced Packaging Tool (APT) with the commandsudo apt install remmina, which pulls in core dependencies such as GTK+3 and libfreerdp2.[22] On Fedora, the DNF package manager handles installation via sudo dnf install remmina, integrating with GNOME Keyring for secure credential storage.[22] Arch Linux users employ Pacman with sudo pacman -S remmina from the official repositories, or the AUR for development snapshots like remmina-git.[22]
For distribution-agnostic installation, Remmina supports containerized formats like Flatpak and Snap. Flatpak installation from Flathub involves running flatpak install flathub org.remmina.Remmina, followed by installing H.264 codecs with flatpak install org.freedesktop.Platform.openh264 for full multimedia support; this method ensures compatibility across desktops but may require additional configuration for SSH access. Snap provides another universal option, particularly suited for Ubuntu, via sudo snap install remmina for the stable channel or --edge for previews; however, Snap versions lack direct SSH tunneling and may encounter Wayland compatibility issues on some older systems.
Compiling Remmina from source offers access to the latest features, such as version 1.4.41, and requires building dependencies using CMake. Core libraries include GTK+3 (libgtk-3-dev), FreeRDP (libfreerdp-dev), libssh (libssh-dev), libvncserver (libvncserver-dev), and libsodium (libsodium-dev); starting with version 1.4.35, libcurl4-openssl-dev and libssl-dev (version 3.0.0 or higher) are mandatory build dependencies.[28] Protocol-specific options encompass libspice-protocol-dev for SPICE support and gtk-vnc for enhanced VNC handling. Installation steps involve cloning the repository from GitLab (git clone https://gitlab.com/Remmina/Remmina.git), creating a build directory, configuring with CMake (e.g., cmake -DCMAKE_BUILD_TYPE=Release -DWITH_FREERDP3=ON ..), compiling via make, and installing with sudo make install; users should first build FreeRDP if using the master branch.[29]
Distro-specific considerations enhance integration with desktop environments. On Ubuntu and Debian, the libayatana-appindicator3-dev package enables system tray icons for GNOME and other environments, addressing visibility issues in Wayland sessions.[29] Fedora and Red Hat derivatives require additional packages like libappindicator-gtk3-devel for app indicator support, while Arch users benefit from native VTE3 integration for terminal features.[22]
Basic Usage
To begin using Remmina after installation, launch the application from the system menu or by executing theremmina command in a terminal.[9][30] The main interface displays a list of saved connection profiles, with options for quick connections or creating new ones.
Creating a connection profile involves clicking the "+" icon or pressing Ctrl+N to open the profile editor. Select the desired protocol (such as RDP, VNC, or SSH), enter the server address (e.g., IP or hostname), specify credentials like username and password if required, and configure basic settings like resolution or color depth. Save the profile to store it for future use; profiles are saved as .remmina files in the user's configuration directory, typically ~/.config/remmina.[31][32][30]
To connect, double-click a profile from the list or select it and click the "Connect" button; Remmina will prompt for any necessary authentication and establish the session. Multiple sessions can be managed in tabbed windows, allowing switching between connections via the tab bar. To toggle fullscreen mode, use the session toolbar or keyboard shortcut (default host key is right Ctrl, combined with F for fullscreen); in fullscreen, a floating toolbar appears when pressing the host key plus Alt to access options like minimizing or scaling. Screenshots of the remote session can be captured directly from the session sidebar menu.[31][32][33][34]
For common tasks, file transfers in SSH sessions are handled by selecting the SFTP protocol in a profile, connecting to the server, and using the integrated file browser to upload or download files. In RDP connections, sound redirection to the local machine is enabled by setting the audio output mode to "local" in the advanced profile settings. VNC sessions support a view-only mode, activated via the protocol-specific options to observe without input control. Basic troubleshooting for connectivity issues includes configuring SSH port forwarding in profile advanced settings or using pre- and post-connection commands to establish tunnels (e.g., for secure RDP access).[33][35][36][37]
Profile management features include editing existing profiles by right-clicking them in the main list and selecting properties, grouping them into folders (e.g., "Work" or "Home") for organization during creation or editing, and using the search bar at the top of the interface to quickly locate profiles by name or group. The toolbar provides icons for common actions like adding profiles, connecting, or accessing preferences, facilitating efficient navigation.[32][33][30]