Macbook proのときと同じ日本語入力環境をEndeavour OSで構築する

ちょうど12月、転職をしたことによって大きく環境が変わった。そもそも働いている会社が変わったわけだけれど、もっとも身近なところでは使っているPCが大きく変わった。

今までは会社に貸与されているきらきら眩しいMacbook Proだったけれど、今は8年前の心もとないVAIOである。ちなみにオレンジとカーキ色のツートンカラーで、全盛期の輝きは失っているけれど味と愛着はある。

日本語を気持ちよく入力できるところまで手順を進めたので、今後もう一回入れ直したくなったときのために記事を書いておこうと思う。

本当は別の記事を書く予定だったのだけれど、やはり新たな環境構築は楽しく、夢中になってしまった。

# 忙しい人のための手順まとめ

0. Endeavour OS のインストール
1. Package のインストール

```sh
sudo pacman -S fcitx5 fcitx5-im fcitx5-mozc fcitx-lua fcitx5-configtool fcitx5-gtk fcitx5-qt
```

2. mozcを設定するために環境変数を定義する

```~/.xprofile
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
```

3. Caps LockをCtrl keyに変更する

```sh
setxkbmap -option ctrl:nocaps
```

4. キーボードの入力感度を設定する

```sh
xset r rate 175 40
```

5. 外観を設定する

[テーマ](https://github.com/sxqsfun/fcitx5-sogou-themes/)に保存されているディレクトリたちを、~/.local/share/fcitx5/themes/配下に入れる。

5-1. Composit Managerをインストールする

```sh
sudo pacman -S picom
```

```~/.config/i3/config
exec_always --no-startup-id picom
```

6. 日本語入力の精度を高める

```sh
sudo pacman -S fcitx5-mozc-ut
```

---

# 0. Endeavour OSのインストール

流石にスペックが貧弱なので（経年劣化もたぶんにあると思う）、小さくカスタマイズできるようにLinuxを構築した。カスタマイズしたいのでArch系のものを、と思っていたところ、人気DistributionであるEndeavour OSを入れ直した。

Endeavour OS をインストールすることを想像したら、ちょっと複雑で面倒なんだろうなと思っていた。だからこそ、細かくメタ意識を働かせて進捗を管理し、面倒さに対処しなければいけない。

だが、Endeavour OSのインストールはとても簡単だった。手元に余っているUSBに、ddコマンドでisoファイルを書き込むだけ。そのUSBを利用して起動すれば、すでにグラフィカルなインストーラーが付属している。

中学生の頃、無謀にも身の丈に合わないGentoo LinuxやArch Linuxをインストールすることを試みていたことがあり、その時の挫折感というか、実力不足感を抱えていたのだけれど、今やもうここまで簡単にインストールできるようになっているのかと膝を叩いた。

では早速、日本語入力がMacbookを使っていた頃と同じぐらいスムーズにできるところまでやっていこう。

# 1. Packageのインストール

まずPackageをインストールする必要がある。Arch Linux系統ではpacmanというPackage Managerを利用している。

日本語入力の環境構築しようと考えたとき、とりあえずmozcをインストールするのがデファクトスタンダードだったという覚えがある。

実のところ、4年前ぐらいにこのPCを環境構築したときもEndeavour OSをインストールしていて、その時もmozcをインストールした覚えがある。

ドキュメントを読んだところそれは変わらないと見えたので、何も考えずmozcをインストールすることにした。それにMacbookで使っていたInput Method EditorがGoogle 日本語入力なので、そのオープンソース版であるMozcを利用することのもう一つの一因である。

日本語入力をセットアップするためにインストールする必要があるものを調べてみたところ、Mozcを利用するためにはInput Method Frameworkとしてibusもしくはfcitxをインストールする必要がある。

MozcはInput Method Editorという分類のアプリケーションで、IMEを使い分けるするためにInput Method Frameworkという位置づけのアプリケーションが必要となる。

以前はfcitxを利用していたが、それは非推奨になっていてfcitx5を利用する必要があるらしい。

1-1. mozcとfcitx5のインストール
```sh
sudo pacman -y fcitx5 fcitx5-im fcitx-mozc
```

[ドキュメント](https://wiki.archlinux.jp/index.php/Fcitx5#インプットメソッドモジュール)を詳しく読んでいると、fcitx-luaというパッケージがあるようだ。ドキュメント日時の変換をサポートしてくれているということだった。普段仕事や日常の活動ログをつけることがあり、タイムスタンプなどを書くことが多い。なのでこれは結構便利だ。もしかしたら、入力メソッドの中で動的な値を取得することができるのかもしれない。結構面白いな。ただ、具体的にaddonを実装するためのドキュメントなどはなさそう。

1-2. fcitx-luaのインストール
```sh
sudo pacman -y fcitx-lua
```

pacmanでfcitx5をインストールしたとき、

- fcitx5
- fcitx5-configtool
- fcitx5-gtk
- fcitx5-qt

を追加でインストールせよと推奨された。fcitx5-configtoolは、GUIの設定パッケージだとのことなので、インストールしようと思う。

ただQt・Gtkとは何だったっけ？今の環境でQtやGtkは使っていただろうか？

確かグラフィックというか、ウィンドウマネージャーに似たようなものだったと記憶しているのだが、今の環境ではどのようにQtとGtkを利用しているのかがはっきりしない。現在わかっているのは、私は現在i3-wmバージョンのEndeavourOSをインストールしたことだ。

調べてみると、QtもGtkもGUIアプリケーションを開発するのに必要な、基盤のようなライブラリだった。思い返すと、確かにGUI開発をしようとしたときにpythonとqtを利用したはずだ。

~~なので多分、今回セットアップしたi3-wmとqtやGtkは関係ないはず。余計なライブラリは入れたくないし、飛ばそう。~~

と思ったのだが、現在の環境で使っていないと思っていても、絶対にどこかしら他のアプリケーションで使っているだろう。理解していないことを無理に行った結果動かなくなっても困るので、`fcitx5-gtk`・`fcitx5-qt`ともにインストールした。

1-3. qt・gtkと利用するためのパッケージ・GUI設定パッケージのインストール

```sh
sudo pacman -S fcitx5-configtool fcitx5-gtk fcitx5-qt
```

## 寄り道

ドキュメントを引き続き読んでいたらvim-fcitxというパッケージについても見つけた。

記述を読んでみよう。

> Keep and restore fcitx state for each buffer separately when leaving/re-entering insert mode or search mode. Like always typing English in normal mode, but Chinese in insert mode.

ふむ、なるほど。normal modeのときは必ず英語入力にするというアドオンか。別にいらないかな。日本語入力のオンオフに関しては、無変換を押したらオフ、変換を押したらオンというように統一しているし、さらに言えばnormal modeへ戻るキーは`ctrl + c`ではなく`jj`を使おうと思っている。`jj`を適切に入力するためには結局英語入力にしようと思っている。だからまあいいや、いらない。

# 2. mozcを設定するために環境変数を定義する

引き続きドキュメントを読みつつインストール手順を追っていると、どうやら環境変数を設定しなければいけないみたいだ。

あれ、zshrcに入れれば良いんだっけ？

とか思ったけれど、そもそもmozcとfcitxは、shell関係なく必要だ。ウィンドウマネージャーが起動したときから必要なはずだ。だから、zshrcが設定ファイルなはずはない。

設定ファイルについて調べると、~/.xprofileと~/.xinitrcというファイルが存在する。どっちがどっちだか、あまりわかっていないので調べてみた。

どうやら.xprofileと.xinitrcは微妙に違うらしい。

簡単に整理すると、.xinitrcがX Window Systemの設定で、.xprofileはディスプレイマネージャーの環境設定だ。

とりあえず、環境変数の設定が必要なのはディスプレイマネージャーの方だと思う。だから~/.xprofileに入れておく必要があるんじゃないかな。なので~/.xprofileに設定した。

自分の結論に自身がなかったので、念の為~/.xinitrcでの設定も試してみたけれどうまく動作しなかったので、~/.xprofileであっているはずだ。

```~/.xprofile
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
```

よし、これで一旦mozcが表示されることは確認できた。

# 3. Caps LockをCtrl keyに変更する

そうそう。一番大事なことがある。ctrlに変換するやつ。これもmozcと一緒。入力関係でとても大切なものだから、ここでしっかりとやっておこう。

Caps Lockは一生使わないぐらいに考えているので、Ctrl keyで上書きしてしまいたい。やり方を調べてみたところ、setxkbmapというコマンドを利用するらしい。

```sh
setxkbmap -option ctrl:nocaps
```

i3を開いたときにCtrl keyの設定が完了している必要があるので、しっかりi3の設定ファイルにも入力しておこう。

```~/.config/i3/config
exec --no-startup-id setxkbmap -option ctrl:nocaps
```

これで設定は終わりかな。

# 4. キーボードの入力感度を設定する

あ、そうだ。キーボード連打の感覚を小さくしたいんだった。デフォルトのキー入力間隔はとてもゆっくりで我慢ならないから。

キーボードの入力感度を設定するには、xset r rate というコマンドを利用する。
> xset r rate <遅延> <秒間何タイプ>

入力感度を設定するために、xset r rateに対して遅延・秒間何タイプかを引数として指定すればいい。秒間何タイプというのはつまり速度なので、押しっぱなしにしたときに、どのぐらいの速さでキーが入力されるかという速度のこと。

```sh
xset r rate 175 40
```

というふうに設定した。実際に試してみたところ、結構早めで心地いい。

# 5. 外観

fcitxについてどうやら色々なテーマが提供されているようだ。使っているときにテンションを高めるのはとても大切だから、ここについてもちゃんと設定しておく。

[テーマと外観](https://wiki.archlinux.jp/index.php/Fcitx5#テーマと外観)節にある、pacmanでインストールできるものを見てみた。

fcitx5-nordが好きだなあ。インストールしてみよう。

```sh
sudo pacman -S fcitx5-nord
```

うーん、fcitx-nordもいいけれど、いまいちしっくりこない。もっといい感じのものを探そう。どうしても見づらいから。

fcitx5のテーマについて、[中国の方が作ったテーマ](https://github.com/sxqsfun/fcitx5-sogou-themes/)でちょっといいの見つけた。どうやって設定するかがわからない。

~~とりあえず、~/.config/fcitx5/themes/の中に一つ入れた。最初は一つこれだ！って思ったものを入れたのだけれど、最終的に色々試したくなって結局全部入れた。~~

テーマを入れるためのフォルダが間違っていた。正確には、~/.local/share/fcitx5/themes配下に入れる必要があった！

よし、テーマを入れて、確認してみた。

## 5-1. Composit Managerをインストールする

ただ、背景が透過されない。

ちょっと分からなかったのでChatGPTさんにお伺いを立てたところ、どうやらComposit Managerが必要だそうだ。どうやら透過する機能をCompositと呼ぶようで、その中でPicomというものが挙げられていた。

```sh
sudo pacman -S picom
```

これで、picomをインストールした。

i3起動時にpicomを起動する必要があるので、設定をi3の設定に追記する。

```~/.config/i3/config
exec_always --no-startup-id picom
```

よし、これで晴れて日本語入力の設定は完了した！拍手👏。

# 6. 日本語入力の精度を高める

だけれど、最後に一つだけ気になることがある。入力の精度があまり良くないということだ。なぜデフォルトのmozcでは精度が悪いかと言うと、Google 日本語入力の学習データが存在しないからだ。ドキュメントを見ていると、どうやらAURに追加辞書データのパッケージが記載されていた。

それをインストールして、終わりにしよう。

```sh
sudo pacman -S fcitx5-mozc-ut
```

こちらをインストールする途中で、fullか無印かを選ぶところがあった。そこはfullを選択した。(するとやり直し等含めて1時間ほどかかった！)

また、途中でfcitx5-mozcとの衝突があってfcitx5-mozcを削除するか聞かれた。そこは削除を選択しないと先に進めなかったので、削除した。

これでようやく日本語入力の設定を完了することができた。実際の設定は簡単だったけれど、やはり記事を書くほうが大変だ。特に実行メモから記事にする過程が骨の折れる作業だった。あっちに行ったりこっちに行ったり。まあいい感じに日本語入力はできるわけなので、ここらで筆を置こう。