geditをうまく設定しないとChrome Remote Desktopはインストールできない

##1. はじめに
はじめにChrome Remote Desktopをインストールをして使ってみたものの、クライアント側からホスト側にログイン出来ず、使えないやと思って代わりにVNC接続ないしSSH接続なんかでリモートデスクトップをしようとしていたが、
`“○○○”と通信できません。リモートコンピュータが利用可能になっていて、ファイアウォールによって画面共有がブロックされていないことを確認してください。`
となってしまいうまくいかなかったので、再びChrome Remote Desktopに戻っていじってみたら成功したという話です。
端的に結論を言うならば、<font color="red">`gedit`がうまいこと立ち上がらなかった</font>ということです。`gedit`でコケていてこのページをご覧になっている方は[トラブルシューティング](#5-トラブルシューティング)に直行してください。
初心者丸腰なので、何か間違いがあったら教えてくださると助かります。何卒。

##2. 環境
### ホスト
OS：Ubuntu 18.04 GNOME

### クライアント
OS：High Sierra 10.13.6

##3. インストール手順
基本的には<font color="red">\[1\]</font>[外出先から自宅のUbuntu18.04に接続する（Chromeリモートデスクトップ）](http://xvideos.hatenablog.com/entry/chrome-remote-desktop-ubuntu1804)に従います。

###3.1. aptを使ってChromeをインストール
あらかじめ`curl`を`apt-get`でインストールしてからChromeのインストールを行います。

```bash
$ sudo apt-get update
$ sudo apt-get install curl
```

```bash
$ curl https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
$ sudo apt update
$ sudo apt install google-chrome-stable
```


###3.2. Chrome Remote Desktopのインストール

<font color="red">\[1\]</font>の手順通りにうまく進めばいいのですが、筆者は少しつまりました。詳しくは[5. トラブルシューティング](#5-トラブルシューティング)を参照。
####3.2.1. [Chrome Remote Desktop](https://chrome.google.com/webstore/detail/gbchcmhmhahfdphkhkmpfmihenigjmpp)アプリをダウンロードする。
クリック↑
####3.2.2. [64 ビット Debian パッケージ](https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb)をダウンロード
クリック↑
####3.2.3. 以下のコマンドを実行

```bash
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
$ sudo apt-get install -f
$ sudo usermod -a -G chrome-remote-desktop $USER
```
<font color = "red">注意：</font>　`$USER`の部分はご自身のユーザーネームに置き換えてください。bash(ないしはshellとか)に表示されているはずです。`hogehoge@hoge-MacBook-fugafuga:$`の`hogehoge`の部分。


####3.2.4. [拡張機能](https://remotedesktop.google.com/access/)を追加しておく。
ここでアイコンが追加されるはず。

####3.2.5. 再起動

```bash
$ sudo reboot
```


ここまでではまだうまく動きません。堪忍五両思案十両。

##4. インストールが終わったら

ここからが大事。

###4.1. RemoteDesktopを止める。

```bash
$ sudo systemctl stop chrome-remote-desktop.service
```
###4.2. バックアップをとる

```bash
$ sudo cp /opt/google/chrome-remote-desktop/chrome-remote-desktop /opt/google/chrome-remote-desktop/chrome-remote-desktop.orig
```
###4.3. ファイルを編集
<h5>4.3.1</h5>

```bash
$ echo $DISPLAY
```
を実行して返ってきた値を覚えておく。
<h5>4.3.2</h5>
編集画面を開く。

```bash
$ sudo gedit /opt/google/chrome-remote-desktop/chrome-remote-desktop
```
<h5>4.3.3</h5>
`DEFAULT_SIZES`をみつけて、`DEFAULT_SIZES = "1920x1080"`ないし、自分の好きなように設定する。(`*`ではなく、`x`なのでご注意を。)

<h5>4.3.4</h5>
`FIRST_X_DISPLAY_NUMBER`をみつけて、`$ echo $DISPLAY`で返ってきた値を入力。（筆者は`:0`）

```bash
$ FIRST_X_DISPLAY_NUMBER = 0
```
<h5>4.3.5</h5>
関数`get_unused_display_number`を探して以下のように修正。

```python
  @staticmethod
  def get_unused_display_number():
    """Return a candidate display number for which there is currently no
    X Server lock file"""
    display = FIRST_X_DISPLAY_NUMBER
    # while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    #   display += 1
    return display
```

<h5>4.3.6</h5>
関数`launch_session`を探して以下のように修正。

```python
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
```

###4.4. 再起動
保存して、Remote Desktopを再起動。

```bash
$ sudo systemctl restart chrome-remote-desktop.service
```



##5. トラブルシューティング
###5.1. gedit

```termina
$ sudo gedit /opt/google/chrome-remote-desktop/chrome-remote-desktop
```

```terminal
>>>Unable to init server: Could not connect connection refused
....
```
となってしまうアクシデントに対して

```terminal
$ sudo apt-get install --reinstall gedit
```

で解決。



###5.2. 編集不可能
ファイルが開けたところで今度は<font color="red">編集できない</font>アクシデント。
`gedit`を`vi`に変えるだけで解決するだろうという甘い考えは通用せず。
ググりながら色々施してみました。結果

```
$ xhost si:localuser:root
```
これを実行すれば治りました。


##6. Overview

- Chromeをダウンロード

- Chrome Remote Desktopアプリをダウンロード
 
- 64 ビット Debian パッケージをダウンロード

- `$ sudo dpkg -i google-chrome-stable_current_amd64.deb`

- `$ sudo apt-get install -f`

- `$ sudo usermod -a -G chrome-remote-desktop $USER`

- `$ sudo reboot`

- `$ sudo systemctl stop chrome-remote-desktop.service`

- `$ sudo cp /opt/google/chrome-remote-desktop/chrome-remote-desktop /opt/google/chrome-remote-desktop/chrome-remote-desktop.orig`

- `$ sudo gedit /opt/google/chrome-remote-desktop/chrome-remote-desktop`,[修正](#43-ファイルを編集)。

- `$ sudo systemctl restart chrome-remote-desktop.service`

##7. 終わりに
知識不足により、突貫工事になってしまいました。より良い方法があればぜひご教授ください。



###7.1. 参考文献
[How to Install Chrome Remote Desktop on Ubuntu 18.04](https://medium.com/@vsimon/how-to-install-chrome-remote-desktop-on-ubuntu-18-04-52d99980d83e)
[外出先から自宅のUbuntu18.04に接続する（Chromeリモートデスクトップ）](http://xvideos.hatenablog.com/entry/chrome-remote-desktop-ubuntu1804)