UserLAndにVSCodeをインストール

#はじめに
UserLAnd上のDebianでVSCodeを動かしたいという物好きのメモ。
VSCodeの他、ブラウザや日本語環境も同時に準備します。
UserLAnd特有のはまりどころがあったので、VSCode使う人以外も参考になる…かも。

#デスクトップ環境の導入
VSCodeの起動にためにはデスクトップ環境が必須なのでLXDEを準備。

##下準備
debianをSSHで起動。
何にしてもまずは下準備。
ファイルの編集のためのvimも導入。

```Bash
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install vim
```

##LXDE導入
最小構成でいいのでlxde-coreをインストール。


```Bash
$ sudo apt install lxde-core
```

解像度の変更は~/.vncrcを修正。

```Bach:~/.vncrc
$geometry = "1600x900";
```

##VNC接続準備
VNC接続時にLXDEが自動で起動するようにVNC起動スクリプトの最終行を修正。

```/support/startVNCserverStep2.sh
#DISPLAY=localhost:51 xterm -geometry 80x24 +0+0 -e /bin/bash --login &
source /etc/profile.d/userland_profile.sh
DISPLAY=localhost:51 startlxde &
```
userland_profile.shを読み込まないと、コマンド実行時に下記のようなエラーが出る。
これがなかなか解決できず苦戦。

```Bash
$ ssh
ssh: error while loading shared libraries: libdl.so: cannot open shared object file: No such file or directory
```

##XSDL接続準備
Android9以降でもXSDLを使いたい場合があります。
UserLAndはAndroid9以降の場合、XSDL接続が抑止されているのでSSH接続後にXSDLに接続することになります。そのため、起動用シェルを作成。

```Bash:~/xsdl.sh
#!/bin/sh
export DISPLAY=localhost:0
startldex &
```

この設定を追記後、下記手順でXSDLによるLXDE利用が可能。
1. XSDL起動
2. UserLAndのdebianをSSH接続で起動
3. シェルを実行

```
$ ./xsdl.sh &
```

#デスクトップ環境整備
デスクトップをある程度使えるようにブラウザと日本語環境を整備。

##Chromium導入
Chromiumを起動するときには"--no-sandbox"オプションが必要。

```Bash
$ sudo apt install chromium
```

##タイムゾーン変更
タイムゾーンの変更は[ココ](https://qiita.com/pioka/items/e6a7a2ecdf356675d49d)が非常に参考になりました。

```
$ sudo rm /etc/localtime 
$ sudo echo Asia/Tokyo > /etc/timezone 
$ sudo dpkg-reconfigure -f noninteractive tzdata
```


##日本語環境の整備
日本語環境の準備は[ココ](https://qiita.com/z80oolong/items/7575b11c4f1078e81a69)が非常に参考になりました。

```
$ sudo apt install fonts-noto-cjk
$ sudo apt install locales
```

/etc/locale-genを開いて下記の行をコメントアウトを外す。

```Bach:/etc/locale-gen
ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8
```
localeファイルの生成

```
$ sudo /usr/sbin/locale.gen
```

起動時に環境変数を設定するようスクリプトを修正。

```Bach:/etc/profile.d/userland_profile.sh
export LANG="ja_JP.UTF-8"
export LC_ALL="ja_JP.UTF-8"
export LANGUAGE="ja"
```

設定後、debianを再起動すると日本語環境になります。

##fcitx-mozcの導入
日本語が入力でないとコメント等が書けないのでfcitx-mozcを導入。
上記の日本語環境整備が終わっていないとfcitxをインストールしても漢字変換できませんでした。

```Bash
$ sudo apt install fcitx-mozc
$ sudo apt install dbus-x11
$ sudo im-config -n fcitx
```

そして下記の環境変数を追加。(2020/02/15 ディレクトリが誤っていたため修正)

```Bash:/etc/profile.d/userland_profile.sh
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export CLUTTER_IM_MODULE=fcitx
```

LXDE上でfcitxが自動起動してきてくれないので下記を追加。

```Bash:/etc/xdg/lxsession/LXDE/autostart
@fcitx 
```

これで再起動するとctrl+spaceで漢字変換ができるようになります。

#VSCodeのインストール
VSCodeといいつつ、[HeadMelted](https://code.headmelted.com/)のCode-OSSです。
apt.shの実行でサクッとインストールできると思いきや1.42はエラーが出て起動しなかったため、1.32をインストールします。

## GPGKeyの追加
HeadMeltedのGPGKeyを追加します。

```Bash
$ wget https://packagecloud.io/headmelted/codebuilds/gpgkey
$ sudo apt-key add gpgkey
```

## apt.shの編集と実行
apt.shをダウンロードして1.42をインストールしないよう修正します。

```Bash
$ wget https://code.headmelted.com/installers/apt.sh
```

最新版をインストールする行をコメントアウト

```Bash:apt.sh
# apt-get install -t ${repo_name} -y ${code_executable_name};
```

apt.shをルート権限で実行

```
$ sudo su
# chmod 755 apt.sh
# ./apt.sh
```

## VSCodeのインストール
1バージョン古い1.32をインストールします。

```Bash
$ sudo apt install code-oss=1.32.0-1550644676
```

##libxcb.so.1のコピーと編集
libxcb.so.1をコピーして編集しないとVSCodeは動きません。

```Bash
$ cd /usr/share/code-oss
$ sudo cp /usr/lib/aarch64-linux-gnu/libxcb.so.1 .
$ sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' libxcb.so.1
```

#VSCodeの設定
VSCodeのバグのせいらしく、Backspaceが効かない、5キーがBackspaceになる等の問題があります。
この修正のためスタートメニューからCode-OSSをクリックして起動させ、設定を変更します。

起動後、
1. File -> Preference -> Settingsをクリックします。
2. 表示されたSettingsタブのテキストボックスに"keycode"と入力します。
3. "keyboard:dispatch"というプロパティが表示されるので、"code"から"keyCode"に変更します。
4. VSCodeを再起動します。


#ゴール！
これでスタートメニューのcode-OSSクリックするとVSCodeが利用できる…はずです。
お疲れさまでした。

#おわりに
はじめてのQiita投稿です。
わかりづらい点があったら申し訳ありません。