ManjaroLinuxでChrome Remote Desktopを有効にする。

以前には設定して使ってたのですが、Chromium 自体がなぜか CPU 時間をめちゃくちゃ食っていたので、Manjaro 上ではずっと Firefox を使っていました。

でもそろそろコンソールを KVM スイッチで切り替えながら使うのも煩わしくなってきたので、もう一度使ってみようということでインストールしてみました。

まず、Manjaro では chrome-remote-desktop は AUR にあります。なので、Pamac(パッケージマネージャ GUI)で、AUR を有効にします。
当然ながら AUR は公式ではないので、何かあっても基本的には自己責任です。

AUR を有効にしたら、左側の「アップデート」をしてリポジトリを読み込み、「検索」で "chrome-remote-desktop" を検索します。
インストールが終わったら、Chromium を起動してブックマークバーのアプリアイコンを起動し、「Chromeリモートデスクトップ」を選択して PIN コードを取得、Windows 側に戻ってその PIN コードで接続します。

ちなみに上のスクリーンショットは GIMP で行いました。GIMP のスクリーンショットは、ショットボタンを押してから取り込みたいウィンドウをクリックして表に出し、指定秒数後に再度クリックすることで取り込むことができます。

さて、これだけだと毎回 PIN を入力しないと接続できません。そこでセッションを定義して常に接続可能なようにしておくと、いつでも Windows から接続が可能になります。
Chrome リモート デスクトップを使って他のパソコンにアクセスするの Linux のところの「ステップ3」、AUR の Package Details: chrome-remote-desktop のコメント、および Stack Exchange の Configuring Chrome Remote Desktop with Ubuntu Gnome 14.04 を参考にします。
  1. まず、/usr/share/xsessions/ にある *.desktop というファイルを確認します。うちの Manjaro は XFCE4 を使っているので、xfce.desktop というファイルがあります。
  2. xfce.desktop の中身を確認すると、最後のところに
    Exec=startxfce4
    Icon=
    Type=Application
    DesktopNames=XFCE
    という部分があります。この Exec で実行されているのがセッションです。
  3. ホームディレクトリに、.chrome-remote-desktop-session というファイルを作成します。ファイルの内容は、
    exec /usr/bin/startxfce4
    です。
  4. /opt/google/chrome-remote-desktop/chrome-remote-desktop ファイルを編集します。念のためオリジナルは cp chrome-remote-desktop chrome-remote-desktop.original とでもして保存しておきます。
    % diff -rub chrome-remote-desktop.original chrome-remote-desktop
    --- chrome-remote-desktop.original      2019-04-19 18:30:39.726890222 +0900
    +++ chrome-remote-desktop       2019-04-19 18:30:59.576888872 +0900
    @@ -75,11 +75,12 @@
     # with large or multiple monitors. This is a comma-separated list of
     # resolutions that will be made available if the X server supports RANDR. These
     # defaults can be overridden in ~/.profile.
    -DEFAULT_SIZES = "1600x1200,3840x2560"
    +#DEFAULT_SIZES = "1600x1200,3840x2560"
    +DEFAULT_SIZES = "1920x1080"
    
     # If RANDR is not available, use a smaller default size. Only a single
     # resolution is supported in this case.
    -DEFAULT_SIZE_NO_RANDR = "1600x1200"
    +DEFAULT_SIZE_NO_RANDR = "1920x1080"
    
     SCRIPT_PATH = os.path.abspath(sys.argv[0])
     SCRIPT_DIR = os.path.dirname(SCRIPT_PATH)
    @@ -101,7 +102,7 @@
     SYSTEM_SESSION_FILE_PATH = "/etc/chrome-remote-desktop-session"
    
     X_LOCK_FILE_TEMPLATE = "/tmp/.X%d-lock"
    -FIRST_X_DISPLAY_NUMBER = 20
    +FIRST_X_DISPLAY_NUMBER = 0
    
     # Amount of time to wait between relaunching processes.
     SHORT_BACKOFF_TIME = 5
    @@ -720,8 +721,8 @@
         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()
         display = self.get_unused_display_number()
         self.child_env["DISPLAY"] = ":%d" % display
    
  5. /etc/pam.d/chrome-remote-desktop というファイルを作成し、以下の内容を追加します。うちの場合、これがないと認証ができなくて chrome-remote-desktop がすぐに終了してしまいます。
    auth        required    pam_unix.so
    account     required    pam_unix.so
    password    required    pam_unix.so
    session     required    pam_unix.so
    
    ちなみにその時のエラーメッセージはこんな感じでした。
    % crd --restart
    The daemon is not currently running
    [0419/174820.966447:INFO:remoting_user_session.cc(691)] Daemon process started in the background, logging to
    [0419/174820.968761:WARNING:remoting_user_session.cc(613)] Failed to read from message pipe. Please check log
    
    Log file: /tmp/chrome_remote_desktop_20190419_174820_pXzIoB
  6. 終わったらファイルを保存して、systemctl --user enable chrome-remote-desktop します。また、% crd --start (あるいは systemctl --user start chrome-remote-desktop)もしておきます。
  7. chrome から「アプリ」→「Chrome リモートデスクトップ」をクリックし、一番下に追加された「リモート接続を有効にする」をクリックして、PIN コードを設定します。
  8. 他のパソコンから Chrome リモートデスクトップでこのパソコンを選択して、設定した PIN コードを入力します。
以上で常時接続可能になります。

0 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...