Linux on Chromebook のソフトウェア開発者向けカスタマイズ例

Linux on Chromebook が安定して普段使いにも無理がなくなって来た Chromebook, しかしガシガシコーディングするにはラストワンインチくらいが「快適」にはちょっと足りないかなーという感じなのでちょっと試行錯誤してます。

# カスタマイズの前提

- 対象デバイスはキーボードとタッチパネルを備えた Chromebook です
- そこそこ CPU パワーがないと実用的でない選択肢があります。具体的には Terminal の Hyper はめっちゃ重い
- 特にこだわりませんでしたが Stable Channel でも採用できる手段のみになりました。Linux on Chromebook 以降、Dev Channel にする理由は少なくなったと思います

# Linux 日本語入力

のっけからお好み次第ですよね。私は [fcitx](https://code.google.com/archive/p/fcitx/) + [Mozc](https://github.com/google/mozc) を使っています。`apt install fcitx-mozc` でセットで入ります。

実は私 Linux GUI は十数年ぶりに触るもので、

> skk とかに拘りがない人は [Anthy](http://anthy.osdn.jp/) がよいのかなー

と思って調べたら新興勢力が多くて驚きました。そして節操なく Chrome OS の Google 日本語入力とノリを変えずに使える fcitx + Mozc に乗り換えました。入力状態の引き継ぎと辞書共有以外概ねシームレスって感じです。

## fctix 起動

Terminal から

```shell
fcitx-autostart
```

デーモン化するので Terminal を終了させても大丈夫。自動起動はどうするのがよいですかね。`.profile` 系に書くとアンインストールしたり不安定になったとき shell が起動できなくて詰みそうで怖いです。

## fcitx 設定

```shell
fcitx-configtool
```

設定は fcitx の後で起動します。入力切り替え設定は「全体の設定」タブの「ホットキー」です。
![Screenshot 2019-02-08 at 01.51.52.png](https://qiita-image-store.s3.amazonaws.com/0/14326/0e00a36b-8899-8b43-ed28-5b8a8dbdf9c0.png)
  私は US 配列の Chromebook に合わせて <kbd>Ctrl + SPACE</kbd> にしています。スクショに写ってる <kbd>Hangul</kbd> は ErgoDox を外付けしたときイケてる設定にできないかなーと試行錯誤してるところです。

# エディタ兼軽量 IDE として VSCode

## 「候補をトリガー」と fep のショートカットをずらす

私は FEP 切り替えを <kbd>Ctrl + SPACE</kbd> にしているので、VSCode 標準の候補表示トリガーとブッキングしてしまいます。ショートカットキー変更で候補表示を <kbd>alt + SPACE</kbd> にずらしています。

ショートカットキー変更は <kbd>ctrl + k</kbd> → <kbd>ctrl + s</kbd> です。または <kbd>ctrl + SHIFT + p</kbd> でコマンドパレットから `open keyboard shortcuts` でも開きます。

「候補」で検索すると「候補をトリガー」一本釣りできるので好きに編集します。

![Screenshot 2019-02-11 at 22.09.38.png](https://qiita-image-store.s3.amazonaws.com/0/14326/26fa374d-4b48-2559-17b2-1792f44f41bd.png)

# Terminal (Linux)

## 真打ち Terminator

[Introduction | Terminator](https://gnometerminator.blogspot.com/p/introduction.html)

いまはこれ！軽快で fep も使えて言うことなし。 `apt install terminator` で入ります。
以前 Windows リサイズすると OS がクラッシュする状況でしたが Version 75.0.3770.19 (Official Build) dev (64-bit) では問題なし。

## 標準 terminal - 地味だが軽快

私思うに一番の問題は fcitx + Mozc で日本語入力できないことです。エミュレータ自体は Chrome OS で動いていて、これが入力切り替えに対応していないようです。というわけなので CLI 版 (というのかな) FEP なら使えるように思いますが試してません。

## VSCode の terminal - ショートカットを横取りされまくるが軽快

私は使ってません。 (NaN やて工藤。紹介しておいて) shell のショートカットを VSCode が横取りするので私にはあまり快適ではありません。設定でどうにかできるものなのかな。

## Hyper - キーバインドが素直でカスタマイズも柔軟だがかなり重い

Electron アプリである [Hyper](https://hyper.is) は特殊な環境である Linux on Chromebook 上でもいい感じに動作して fctix も使えるので、もっさり加減を我慢できれば結構おすすめです。[klaussinani/hyper-pokemon](https://github.com/klaussinani/hyper-pokemon) も適用できる。[Hyperpower](https://github.com/zeit/hyperpower) は重すぎて実用的じゃなさそうです。

コピーは <kbd>ctrl + SHIFT + c</kbd>, ペーストは <kbd>ctrl + SHIFT + v</kbd> です。

# Linux フォント設定

## フォントの追加方法

`/usr/share/fonts` 以下に適当に放り込むと使えるようになります。軽くググってもコマンドによる追加方法が出てこない。

## インストール済みフォントの確認

```shell
fc-list
```

これでキャッシュも最新になるのでないかと。ここでファイル名の直後に表示されるフォント名が次から説明する各アプリで使う名前です。このリストからコピペするのがよいでしょう。

![Screenshot 2019-02-11 at 22.28.19.png](https://qiita-image-store.s3.amazonaws.com/0/14326/5549ab5e-119b-78b2-9b21-83edb2cbb743.png)

## VSCode フォント設定

<kbd>ctrl + ,</kbd> で設定を開き、「ユーザ設定」タブの「Font Family」にカンマ区切りでフォント名を記述。フォント名にスペースが含まれるときはシングルクォーツで囲む。

## Typora フォント設定

`~/.config/Typora/conf/conf.user.json` の `defaultFontFamily` を編集。Typora 上で <kbd>ctrl + ,</kbd>で設定を開き「上級設定を開く」でも開きます。

```json:~/.config/Typora/conf/conf.user.json
{
  "defaultFontFamily": {
    "standard": "たぬき油性マジック", //String - Defaults to "Times New Roman".
    "serif": "たぬき油性マジック", // String - Defaults to "Times New Roman".
    "sansSerif": "たぬき油性マジック", // String - Defaults to "Arial".
    "monospace": "たぬき油性マジック" // String - Defaults to "Courier New".
  },
```

## Hyper フォント設定

`~/.hyper.js` で設定。

```js:~/.hyper.js
module.exports = {
  config: {
    // 中略
    // font family with optional fallbacks
    fontFamily: '"たぬき油性マジック", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
```

このファイルは deprecated であるというようなメッセージをよく見るのですが、こいつしか効いてくれないように見えるなあ……

# クリップボード拡張

vim の中だけで生活できたら vim のバッファでなんとかなるとのかもしれませんが、いろいろアプリ使う人はクリップボード拡張が手放せないのではないでしょうか？ということで試行錯誤中なのですが、いまは [Clipboard Actions(Android)](https://play.google.com/store/apps/details?id=de.halfreal.clipboardactions) と [CopyQ(Linux)](https://github.com/hluk/CopyQ) を組み合わせています。両方起動しておくと Chrome OS (or Android) と Linux を切り替えたときに最新のクリップボードだけ同期します。雑なソリューションで Linux ウィンドウにばかり触っていると Linux にしか履歴がとられていない……という感じですが、まあそこそこ使えてます。

## CopyQ 起動と表示トグル

Chrome OS のランチャーから起動するのがよいと思います。うまくなかったら shell から `copyq` で起動して `copyq toggle` の表示切り替えで出てくるのでないかと。

## CopyQ のホットキー設定

クリップボード履歴・マネージャはホットキーで呼び出せてなんぼですよね！CopyQ では「Global Shortcut」でホットキー呼び出しを設定できます。

[FAQ - Frequently Asked Questions — CopyQ  documentation](https://copyq.readthedocs.io/en/latest/faq.html)

マニュアルを読むと

> <kbd>F6</kbd> を押せ

とか出てきて Chromebook はデフォルトでファンクションキーが特殊動作になっているため初っ端からめげるのですが…… CopyQ のメニューから `File` → `Commands/Global Shortcuts...` でたどり着けます。

![Screenshot 2019-02-12 at 00.12.54.png](https://qiita-image-store.s3.amazonaws.com/0/14326/f7addb84-91a1-15f4-774d-247f0d7d34b0.png)

私は Mac OS X の [ClipMenu](http://www.clipmenu.com/ja/) デフォルトに合わせて <kbd>ctrl + SHIFT + v</kbd> を `show the tray menu` に設定しています。これでスクショのようにクリップボード履歴選択がホットキーだけでできるようになりました。(細かいですが ClipMenu と違いペーストまで一括実行されません。)

![Screenshot 2019-02-12 at 00.21.52.png](https://qiita-image-store.s3.amazonaws.com/0/14326/65507487-39b4-b922-bc6e-04f7ba5b6f61.png)


……いけね。Hyper のペーストと被った。ずらさないとあかん。

# ebook リーダー

Linux on Chromebook を Windows Subsystem for Linux と比較したときのイチオシ優位点が Android 版の ebook リーダー各種が使えることだと思います。というか Windows 版アプリの Kindle と Adobe Acrobat は共に全画面モードが使いにくい、画面の広さを活用する表示ができないのが残念。

## Kindle リーダー

[Kindle (Android)](https://play.google.com/store/apps/details?id=com.amazon.kindle) アプリ版が Kindle Cloud Reader よりもおすすめです。というか Cloud Reader で読めない制限のかかった技術書多いですよね。なおかつテキストも画像化されて検索やセンテンスのコピーができないものも多い。脱線しますがそういう問題があるので技術評論社の電子書籍は Kindle より技評のショップの PDF 版をおすすめします。

## PDF リーダー

[Adobe Acrobat Reader(Android)](https://play.google.com/store/apps/details?id=com.adobe.reader&hl=ja) がおすすめです。がんがん Adobe Document Cloud にあげてハイライトとメモを複数デバイスで共有してます。

## 主にマンガの自炊書籍リーダー

[Perfect Viewer (Android)](https://play.google.com/store/apps/details?id=com.rookiestudio.perfectviewer) が超絶おすすめです。気に入ったらぜひ寄付を。寄付すると自動彩色機能なんかが使えるようにもなります。

# Markdown エディタ

[Typora(Linux)](https://typora.io) が超絶おすすめです。コマンドラインから叩いても表に出てこないときは Chrome OS のランチャーから起動するとよいはず。

# バックアップ - 環境構築自動化に代えて

Chrome OS と Android はおまかせ全自動バックアップがあるけれど Linux はどうするの？普段遣い環境構築を自動化しないの？ってところが問題だと思うのですが、とりあえず今の所 Linux 環境そのものである LXC コンテナをまるごとバックアップすることで乗り切っています。

[俺の別記事 - Crostini LXC コンテナバックアップとリストア ~ 不安定な Dev Channel でもくじけない](https://qiita.com/weakboson/items/77b34704556178cf6f09)

いやしかし、スタートのコンテナが陳腐化していきますね。Linuxbrew はじめるべきか、ansible-playbook にするべきか。

# ポエムコーナー

## 何故いま Chromebook なのか？

Macbook にタッチパネルとデジタイザが付いて Kindle アプリの出来がよくなれば Macbook に戻る気まんまんだったりします。図を手書きしてそのままプレゼンテーションアプリで清書するとか、Kindle とエディタをウィンドウ切り替えで写経したりとか、Chromebook + Android + Linux は私の普段づかいにいい感じにハマります。

こういうユーザにはタッチパネル搭載 Windows ノートが次善の選択肢なのですが、Windows + WSL よりはまだ Linux on Chromebook のホスト OS 統合感の方がやや使い勝手よいかと思います。

## こんな人にはおすすめ Linux on Chromebook

- ハイスペックノートよりも軽くて取り回しのよいノートが欲しい
- Linux でドライバの心配がない軽量ノートが欲しい
- タブレットとノート PC の2台持ちはしたくない
- ヘビーな仕事はクラウドコンピューティングに任せてよい

## こんな人にはおすすめできない Linux on Chromebook

- ローカルマシンにハイパワーが欲しい
- Windows でバリバリ 3D ゲームをプレイする