UbuntuでChrome Remoteデスクトップを使用すると、普段つかっているGUIが出ず壁紙だけになる問題を解消する

2018年7月8日Linux・Ubuntu TipsLinux, Ubuntu, リモートデスクトップ, Chrome

Ubuntu DesktopでChrome Remote Desktopを使うと、バックグラウンド画面だけが出てしまって行き詰まってしまうことがある。具体的には、 背景画像だけが出てきてしまい、コマンドも何も実行することが出来なくなる。

これは、Chome Remote Desktopが新規に仮想画面を立ち上げてしまうせいなので、以下の様に修正を行い、既存の画面に接続する設定とすれば良い。

Chrome Remoteデスクトップをストップする

まず、Chrome リモートデスクトップのhostをstopする。

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop

そして、エディタで「/opt/google/chrome-remote-desktop/chrome-remote-desktop」を下記の通り編集する。

FIRST_X_DISPLAY_NUMBERを「0」に設定

FIRST_X_DISPLAY_NUMBERは、開くX-Windowの番号を設定するもの。一番最初のものが普段使っているものなので、「0」に設定する。

436行目をコメントアウト

436行目に、下記のようなコードがある。このコードは、その画面が利用されている画面に他のセッションを開く設定である。当然「利用している画面」を表示したいので、その部分をコメントアウト。

   while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
   display += 1

上記をコメントアウトする。

719行目の一部をコメントアウト

719行目に以下の様なコードがある。

  def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    self._launch_x_server(x_args)
    self._launch_x_session()

これを、下記のように「self._launch_x_server(x_args)」と「self._launch_x_session()」のみコメントアウトし、また一部の設定を追加する。

  def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    #self._launch_x_server(x_args)
    #self._launch_x_session()
    display = self.get_unused_display_number()
    self.child_env["DISPLAY"] = ":%d" % display

Google Chrome リモートデスクトップを起動する

ここまで終えたらChrome リモートデスクトップを起動する。

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --start

次のように、普段使っている画面が表示される。

screen-of-session

私はUbuntu 16.04付属のNetworkManagerを捨てて、/etc/network/interfaces等を操作して運用をしている。そのため、Splashtop等を利用することが出来ず、とはいえVNCは遅すぎる。なので、Google Chromeリモートデスクトップは非常に優れたソリューションだ。
こんな形で設定することで、外出先でもUbuntuを操作することが出来る。