Ubuntu 16.04: Unityデスクトップ環境にXRDPで接続する

Griffon's IT Libraryの記事によると、.xsessionにunityを記載することでUnityへリモート接続できるようなることが発見されています。この記事ではunityに加えてインディケーター等も動かすようにして、できる限りローカルマシンのデスクトップに近いものを実現します。

1 TigerVNCのインストール

以下のスクリプトでTigerVNCをインストールします。

#!/bin/sh

set -e

# Install TigerVNC.
sudo apt remove -y vnc4server
sudo apt-get install -y git devscripts xserver-xorg-dev

mkdir tigervnc
cd tigervnc

git clone https://github.com/TigerVNC/tigervnc
cd tigervnc/
git checkout ff872614b507d0aa8bfbd09ef41550390cfe658a

ln -s contrib/packages/deb/ubuntu-xenial/debian
chmod a+x debian/rules
sudo apt install -y $(dpkg-checkbuilddeps 2>&1 | \
                        sed -e 's/.*build dependencies://g' -e 's/([^)]*)//g')
fakeroot debian/rules binary
cd ..

sudo dpkg -i ./*.deb || (sudo apt -f install -y && sudo dpkg -i ./*.deb)
cd ..

2 XRDPのインストール

XRDPをインストールします。

$ sudo apt install -y xrdp

3 ~/.xsessionの作成

接続するユーザのホームディレクトリに.xsessionを作成します。

$ cat ~/.xsession
/usr/lib/gnome-session/gnome-session-binary --session=ubuntu &
/usr/lib/x86_64-linux-gnu/unity/unity-panel-service &
/usr/lib/unity-settings-daemon/unity-settings-daemon &

for indicator in /usr/lib/x86_64-linux-gnu/indicator-*; do
  basename=`basename ${indicator}`
  dirname=`dirname ${indicator}`
  service=${dirname}/${basename}/${basename}-service
  ${service} &
done

unity

4 gnome-control-centerの追加

ここまでの設定だと、画面右上の"System settings…"を選択するとgnome-control-centerを実行しようとしてしまいます。そこでgnome-control-centerを本来呼ぶべきunity-control-centerへのシンボリックリンクとします。

$ sudo ln -s /usr/bin/unity-control-center /usr/bin/gnome-control-center

5 Unityデスクトップ環境にXRDPで接続する

"Microsoft Remote Desktop"で接続すると以下のようになります。

0002_XRDP.png