RDP With Copy&Paste From Windows to xrdp on Debian

The package of xrdp (Version 6.1.2) that is available in Debian does lack support for Copy&Paste.

The „master“ branch of xrdp on github provides this feature but is not packaged for Debian at the moment.

To have it available, I built it manually on my Debian server. The procedure took about 1 hour, most of the time is spent compiling the „X11rdp backend“, a specialized X server that is provided by the xrdp project.

Some Advice

Words of caution beforehand: I seldomly replace packages that are available in my distribution with own builds, and even if I do it, I normally would install them to /usr/local and not, as described in this article, to /usr and /etc. In this specific case I wanted the build to appear as a drop-in replacement for the Debian packaged version, so that I could reuse my existing customizations in /etc/X11. If you install to /usr/local instead, more integration work could be required that is not covered by this article.

Otherwise, I have tested that it works, and I have also tested that a local X server still works after this procedure has been performed.

The Procedure

I first removed the Debian package of xrdp.

~$ sudo dpkg -r xrdp

I downloaded the xrdp sources from github:

~$ git clone https://github.com/neutrinolabs/xrdp.git

I installed some packages that are required for the build procedure. The following list is probably not complete, because I already had some of the stuff installed:

~$ sudo aptitude install automake autoconf libtool-bin libxext-dev \
   libxfixes-dev libxrandr-dev  libxrender-dev wget x11proto-fixes-dev  \
   x11proto-render-dev x11proto-xext-dev xvfb

I built xrdp (and its helper program xrdp-sesman) and installed them. They are the front-end talking to the RDP client over the network connection.

~$ cd xrdp
xrdp$ sh bootstrap
xrdp$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
xrdp$ make
xrdp$ sudo make install

I built the executable X11rdp. It is the back-end, an X server that runs the X clients and interacts with them.

This build procedure will download additional sources from xrdp.org via HTTP using wget. The build process amounts to a complete freedesktop.org style X11 compilation, incuding, amongst others, a full-blown Python 2.7 build, so it will take time:

xrdp$ cd xorg/X11R7.6
X11R7.6$ sh buildx.sh default

I copied the resulting executable X11rdp into a directory in my system’s PATH so that it is available to xrdp-sesman:

X11R7.6$ sudo cp rdp/X11rdp /usr/local/bin

I restarted xrdp, now using the github master branch version:

X11R7.6$ sudo service xrdp restart

To avoid a Debian installation overwriting this installation, I created a file /etc/apt/preferences.d/disable-xrdp:

Package: xrdp
Pin: release o=Debian
Pin-Priority: -1

Result

Now I can connect to my Linux server using remote desktop, having complex copy&paste support (I tested transferring plain text and pixmaps).