Remmina - The GTK+ Remote Desktop Client  v1.4.33
Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.

Arch Linux-based distributions

title: How to compile Remmina layout: single author_profile: false permalink: /how-to-compile-remmina/ toc: true toc_label: "Table of contents"

toc_icon: "book-open"

–>

Table of contents

[[TOC]]

Introduction

:exclamation: If you update this page remember to leave a note in the issue #1921

Follow this document to build Remmina from the source code.

Other compilation guides are deprecated.

You can help by keeping this document updated and adding info about other distributions.

How to read this document

Each section may contain specific information for your OS distribution. This is the only and main important thing to pay attention to; do not copy-and-paste without reading. :smiley:

Also, we assume BASH shell, therefore you might need to change some commands for other shells.

Install dependencies

The following dependencies are needed to build a full Remmina distribution, you may need to tailor it as per your needs.

The distributions below are sorted alphabetically by there names and then by their versions (latest first).

<details>

sudo pacman -S base-devel git avahi gtk3 libssh libvncserver gnome-keyring kwallet \
libgnome-keyring libpulse libsodium vte3 cmake libappindicator-gtk3 \
docbook-utils docbook-xsl pcre pcre2 spice-gtk spice-protocol gtk-vnc

</details>

<details>

Debian 11

sudo apt install build-essential git-core libssh-dev cmake libx11-dev libxext-dev libxinerama-dev \
libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev \
libxrandr-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libxi-dev libavutil-dev libjson-glib-dev\
libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt20-dev libpulse-dev \
libvte-2.91-dev libxkbfile-dev libtelepathy-glib-dev libjpeg-dev \
libgnutls28-dev libsecret-1-dev libavahi-ui-gtk3-dev libvncserver-dev \
libayatana-appindicator3-dev intltool libsecret-1-dev libwebkit2gtk-4.0-dev libsystemd-dev \
libsodium-dev libkf5wallet-dev libusb-1.0-0-dev libpcre2-dev

</details>

<details>

Debian 10

sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \
libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \
libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
libxml2-dev libxrandr-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \
libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \
libgcrypt20-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \
libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \
libsecret-1-dev libavahi-ui-gtk3-dev libvncserver-dev \
libappindicator3-dev intltool libsecret-1-dev \
libwebkit2gtk-4.0-dev libsystemd-dev libsodium-dev \
libkf5wallet-dev libusb-1.0-0-dev libpcre2-dev

</details>

<details>

Debian 9

sudo apt purge libssl-dev
sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \
libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \
libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
libxml2-dev libxrandr-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \
libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \
libgcrypt11-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \
libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \
libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev \
libappindicator3-dev intltool libsecret-1-dev \
libwebkit2gtk-4.0-dev libsystemd-dev libsodium-dev libpcre2-dev

</details>

<details>

Ubuntu 20.04+

sudo apt install build-essential git-core cmake libssl-dev libx11-dev \
libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \
libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
libxml2-dev libxrandr-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \
libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt20-dev \
libssh-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \
libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \
libavahi-ui-gtk3-dev libvncserver-dev libappindicator3-dev \
intltool libsecret-1-dev libwebkit2gtk-4.0-dev libsystemd-dev \
libsoup2.4-dev libjson-glib-dev libavresample-dev \
libsodium-dev libusb-1.0-0-dev libpcre2-dev

</details>

<details>

Ubuntu 18.04

sudo apt install build-essential git-core cmake libssl-dev libx11-dev \
libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \
libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
libxml2-dev libxrandr-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \
libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt11-dev \
libssh-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \
libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \
libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev \
libappindicator3-dev intltool libsecret-1-dev \
libwebkit2gtk-4.0-dev libsystemd-dev libsoup2.4-dev \
libjson-glib-dev libavresample-dev libsodium-dev \
libusb-1.0-0-dev libpcre2-dev

</details>

<details>

Red Hat-based distributions

Note

We use yum for all commands as it’s still an alias on those distros migrated to dnf.

External repositories

You can use the following snippet to determine the kind of repo you need, and set up the you repositories.

```bash

Get some info of the currently installed distribution

Note: This is used to determine what repositories need to be be installed

and to create the relevant URLs

distro_name="$(grep -Po '^ID="*[^"]*' /etc/os-release)" distro_version="$(rpm -E %$distro_name)"

if [ "$distro_name" = 'fedora' ]; then distro_name_short='fedora' else distro_name_short='el' epel_repo='epel-release' fi

epel (on CentOS only): required for openjpeg2-devel, openssl-devel

rpmfusion-free-updates (on both CentOS and Fedora): required for ffmpeg-devel

PowerTools (on CentOS 8+ only)

okay (on CentOS 8+); required for avahi-ui-devel

sudo yum -y install $epel_repo \ https://download1.rpmfusion.org/free/${distro_name_short}/rpmfusion-free-release-${distro_version}.noarch.rpm

if [ "$distro_name" = 'centos' ] && [ "$distro_version" = 8 ]; then sudo dnf config-manager –enable PowerTools sudo rpm -ivh http://repo.okay.com.mx/${distro_name}/${distro_version}/x86_64/release/okay-release-1-3.el${distro_version}.noarch.rpm

Disable okay repo for potential package conflicts

sudo dnf config-manager –disable okay fi

### Update `yum` cache and packages
This step might require a reboot.
```bash
sudo yum -y upgrade

Install dependencies on CentOS and Fedora

sudo yum -y install alsa-lib-devel atk-devel avahi-ui-gtk3 cairo-devel cmake3 \
cups-devel docbook-style-xsl ffmpeg-devel gcc gcc-c++ git \
glib2-devel gnutls-devel gstreamer1-devel \
gstreamer1-plugins-base-devel gtk3-devel harfbuzz-devel \
json-glib-devel libappindicator-gtk3 \
libappindicator-gtk3-devel libgcrypt-devel \
libsecret-devel libSM-devel libsodium libsodium-devel \
libsoup-devel libssh-devel libusb-devel \
libvncserver-devel libX11-devel libXcursor-devel \
libXdamage-devel libXext-devel libXi-devel \
libXinerama-devel libxkbfile-devel libXrandr-devel \
libxslt libxslt-devel libXtst-devel libXv-devel make \
ninja-build openjpeg2-devel openssl-devel pango-devel \
pulseaudio-libs-devel vte291 vte291-devel \
webkitgtk4-devel xmlto xorg-x11-server-utils pcre2 pcre2-devel

In recent versions of Fedora replace xorg-x11-server-utils with xprop

</details>

<details>

FreeBSD 11 dependencies

sudo pkg install cmake gccmakedep git pkgconf libX11 libXext libXinerama libXcursor \
libXdamage libXv libxkbfile alsa-lib cups ffmpeg pulseaudio libssh \
libXi libXtst libXrandr xmlto gstreamer1 gstreamer1-plugins ffmpeg \
libx264 qt5-qmake qt5-buildtools pcre2 gtk-vnc

</details>

Set up your development environment

Choose a folder where you will download and compile your code and stick to it.

mkdir -p "$HOME/remmina_devel"
export RMHOME="$HOME/remmina_devel"
cd "$RMHOME"
## Set the following only if you need to install Remmina in a different PATH
RMDEST='/opt/remmina'
which cmake3 > /dev/null 2>&1 && alias cmake="$(command -v cmake3)"

Remove packaged Remmina and FreeRDP

<details>

Arch Linux-based distributions

pacman -Rs remmina freerdp

</details>

<details>

Debian/Ubuntu-based distributions

Newer versions of Debian/Ubuntu

sudo apt purge "?name(^remmina.*)" "?name(^libfreerdp.*)" "?name(^freerdp.*)" "?name(^libwinpr.*)"

Older versions of Debian/Ubuntu

sudo apt-get --purge remove freerdp-x11 remmina remmina-common \
remmina-plugin-rdp remmina-plugin-vnc remmina-plugin-gnome \
remmina-plugin-nx remmina-plugin-telepathy remmina-plugin-xdmcp
sudo apt-get --purge remove libfreerdp-dev libfreerdp-plugins-standard \
libfreerdp1

</details>

<details>

Red Hat-based distributions

sudo yum -y remove freerdp\* remmina\*

</details>

<details>

FreeBSD (TODO)

TODO: FreeRDP is a requirement of GNOME because of Vinagre

</details>

Get the sources

git clone --branch stable-2.0 https://github.com/FreeRDP/FreeRDP.git "$RMHOME/freerdp" && mkdir -p "$RMHOME/freerdp/build"
git clone https://gitlab.com/Remmina/Remmina.git "$RMHOME/remmina" && mkdir -p "$RMHOME/remmina/build"

Build FreeRDP

cd "$RMHOME/freerdp/build"
if [[ -n "$RMDEST" ]] ; then
FREERDPDST="-DCMAKE_INSTALL_PREFIX:PATH=$RMDEST/freerdp"
else
FREERDPDST="-DCMAKE_INSTALL_PREFIX:PATH=/usr"
fi
cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON -DWITH_PULSE=ON -DWITH_CUPS=ON \
-DWITH_OPENH264=OFF -DWITH_FFMPEG=ON -DWITH_X264=OFF \
$FREERDPDST ..
make && sudo make install
if [[ -n "$RMDEST" ]] ; then
echo /opt/remmina_devel/freerdp/lib | \
sudo tee /etc/ld.so.conf.d/freerdp_devel.conf > /dev/null
sudo ldconfig
sudo ln -s "$RMDEST/freerdp/bin/xfreerdp" /usr/local/bin/
fi
## You can test FreeRDP by connecting to an RDP host
xfreerdp +clipboard /sound:rate:44100,channel:2 /v:hostname /u:username

Build Remmina

if [[ -n "$RMDEST" ]]; then
RMINSTPATH="-DCMAKE_INSTALL_PREFIX:PATH=$RMDEST/remmina"
CMAKEPREFIX="-DCMAKE_PREFIX_PATH=$RMDEST/freerdp"
else
RMINSTPATH="-DCMAKE_INSTALL_PREFIX:PATH=/usr"
CMAKEPREFIX="-DCMAKE_PREFIX_PATH=/udr"
fi
cd "$RMHOME/remmina"
cmake -DCMAKE_BUILD_TYPE=Debug "$RMINSTPATH" "$CMAKEPREFIX" \
-DWITH_CUPS=ON -DWITH_FREERDP_MASTER=ON \
-DWITH_LIBSSH=ON -DWITH_NEWS=ON -DWITH_EXAMPLES=ON \
-DWITH_PYTHONLIBS=OFF -DWITH_GVNC=ON -B build
make -C build && sudo make -C build install

Remove everything

cd "$RMHOME/remmina/build"
sudo make uninstall
cd "$RMHOME/freerdp/build"
sudo rm $(< install_manifest.txt)
sudo rmdir $(find $(whereis freerdp remmina | grep -Po "^[^:]*: \K.*$") -type d | tac)

Notes

Remmina in the system tray on GNOME 3

:exclamation: Please help improving this section adding distribution specific details.

Current GNOME Shell versions does not include system tray, therefore vanilla GNOME will not show the Remmina system tray icon and menu. Press Super+M to see the Remmina icon on the message bar. If you want to fix this, you could install either KStatusNotifierItem/AppIndicator Support, or Ayatana Indicators

Below is a guide how to install the extension. For more information on installing the chrome-gnome-shell , see the documentation

<details>

How to install KStatusNotifierItem/AppIndicator Support extension

This method installs the extension locally (i.e. for current user only), and the commands are ment to run only on Red Hat based distributions

  1. Install chrome-gnome-shell package.
sudo yum -y install chrome-gnome-shell
  1. Install the browser extension. Go to GNOME extension website and click on Click here to install browser extension; or you can install it from Firefox Browser Add-ons.
  2. Install the KStatusNotifierItem/AppIndicator Support extension by clicking on the toggle on that page (it must be on on position). Then confirm the installation.
  3. Don’t forget to re-login the GNOME. :smiley: </details>

Remmina in the system tray on Xfce

:information_source: This might be outdated. If you know the current state of this issue or any workaround(s), open an issue.

Xfce and other desktop environments without app indicator support, will not show you the system tray icon if you are executing Remmina from its compilation folder (e.g. ~/remmina) because it contains a folder named remmina. For more infomation, see Bug #1363277 on Launchpad.

Credits

Writing this guide has been possible only thanks to amazing job done by , , ,