参考メモ/minimal installしたCentOS7にXfce4 + ibus-kkcで日本語入力可能にする

minimal install した CentOS7に、最低限度のX Window System と Xfce4 を入れて、ibus-kkc で日本語入力可能にするメモです。

```
検証環境：
VirtualBox ホスト : Windows 10 64bit
VirtualBox : 5.0.16
VirtualBox ゲスト : CentOS Linux release 7.2.1511 (Core)
```

検索すれば、似たようなアプローチでいろいろ苦労された方の記事がヒットします。ありがたやありがたや・・・。
なんでわざわざ似たような記事を書いたかというと、他の記事だと minimal install した後に "Server with GUI" を group install したり、GNOME Desktop 入れたりする組み合わせが書かれてたり、Xfce4を起動するまででその後の日本語入力が無かったりしてて、結局GNOMEとかごっそり入ってしまうんです。特に "Server with GUI" だと、OpenJDKとかLibreOfficeまで入ってしまって、ちょっと盛り過ぎな感じもします。

というわけで、まずはXとXfce4入れてstartxでXfce4起動させibus-kkcで日本語入力できるようにした後、グラフィカルログインに変更してみました。これならGNOME系の余計なアプリ入りません。

***

## VirtualBoxのゲストにCentOS 7.2 (1511) をminimal install

細かい説明は省略します。以下だけ注意。

- 言語環境はEnglish (US)を選択。
- キーボードは Japanese (多分無印で良かったような) を選択。
- メモリはXを動かしますので一応1GBくらいで。

最終的にインストール完了後に `localectl status` で以下みたいになってれば大丈夫のはず。

```
# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp
...
```

最近はepelなしじゃ成り立たないので、epelは入れます。

```
# yum install -y epel-release
```

あとは個人的な趣味で以下のパッケージ導入。 bind-utils入れてるのはdigコマンド使いたいから。

```
# yum install -y screen wget curl vim mailx bind-utils
```

## X Window System, Xfce4 関連パッケージのインストール

```
# yum groupinstall -y "X Window System"
# yum install -y vlgothic-*
# yum groupinstall -y "Fonts"
# yum groupinstall -y "Xfce"
# yum install -y firefox
```

## VirtualBox GuestAdditions CDのインストール

DKMSパッケージ(ここでepelが必要)や、モジュールコンパイル用の開発ツールをインストール:

```
# yum groupinstall -y "Development Tools"
# yum install -y dkms
```

あとはVirtualBoxのヘルプ見てググればやり方見つかります。VirtualBoxのゲストでGuestAdditions CDインストールした後はこんな感じ：

```
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
# cd /mnt/cdrom/
# sh ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.16 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules[  OK  ]
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules[  OK  ]
Doing non-kernel setup of the Guest Additions[  OK  ]
You should restart your guest to make sure the new modules are actually used

Installing the Window System drivers
Installing X.Org Server 1.17 modules[  OK  ]
Setting up the Window System to use the Guest Additions[  OK  ]
You may need to restart the the Window System (or just restart the guest system)
to enable the Guest Additions.

Installing graphics libraries and desktop services components[  OK  ]
```

再起動したあとも GuestAdditions CD が入ったままになってるので、一度poweroffして外したほうがよいかも。

## Xfce4の動作確認

rootでも一般ユーザでも良いです：

```
$ echo "exec /usr/bin/xfce4-session" >> ~/.xinitrc
```

この後SSHでなくて、VirtualBoxのコンソールからログインしてstartxします。SSHからstartxすると、rootなら動きましたが一般ユーザだと動きませんでした。

```
$ startx
```

「X Windowの設定とかしてないのになんで動くの？」と最初超疑問に思ったんですが、多分、X Window System 入れた後 VirtualBox GuestAdditions 入れたので、X Window関連の設定がよしなにされたんだと思います。検索して出てくる記事によっては、ここで手動で設定プログラム起動したり、デフォルトの設定ファイルカスタマイズしたりもしてる記事もあります。今回については、幸いこれだけで動いて、VirtualBoxゲストのウインドウサイズ変更しても、中のX Windowのデスクトップ画面サイズも一緒に追従してくれました。

## ibus-kkc のインストール

一旦Xfce4を終了し、コンソール画面に戻ってから "Input Methods" パッケージグループをインストールします。

```
# yum groupinstall -y "Input Methods"
```

これでibusとibus-kkc関連が一通り入ります。次に `$HOME/.xinitrc` を編集して、環境変数とかibus-daemonの起動コマンドをXfce4を起動する前に入れます。

```bash:.xinitrc
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
exec /usr/bin/xfce4-session
```

`ibus-daemon` の起動オプションについては、記事によっては `-xim` だけだったりとバラけてますが、`-drx` で大体大丈夫でしょう。多分。

```
-d : run ibus as background process.
-r : if there is an old ibus-daemon is running, it will be replaced.
-x : execute ibus XIM server.
```

`.xinitrc` に書いてある最初の3行は結局のところ環境変数の設定です。startx経由なら `.xinitrc` でも大丈夫ですが、後述のグラフィカルログインではstartxを経由しないため、`.bashrc` に書きます。どっちでも同じなので、最初から `.bashrc` に書いてしまっても良いかもです。

これで startx すれば、ibusのアイコンが表示されてXfce4が起動します。
さっそく動作確認をしたいところですが、VNCなどでリモート接続しないかぎりは、システム起動時にグラフィカルログインしてくれた方がありがたいです。でないとログインした後に毎度startxしないといけないので。なので、グラフィカルログインでibus-daemonが起動するようにします。

## グラフィカルログインON + Xfce4起動時にibus-daemonも自動実行

グラフィカルログインON:

```
# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
```

また、グラフィカルログイン経由だとstartx経由じゃないので`.xinitrc`は読まれません。`.bashrc` に環境変数設定は移しておきます。

```bash:.bashrc
#...(snip)...
# User specific aliases and functions
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
```

これでシステム再起動すると、グラフィカルログインになります。GNOME入れてないので、当然、ログイン時にデスクトップは選べません。自動的にXfce4が起動します。
この状態ではまだibus-daemonは起動しません。Xfce4の "Applications Menu" -> "Settings" -> "Session and Startup" を起動し、"Application Autostart" タブで "Add" をクリックし、以下を追加します。

| 項目名 | 設定内容 |
|:------|:---------|
| Name | IBus daemon |
| Description | start IBus daemon |
| Command | ibus-daemon -rdx |

これで一度ログアウトして、ログインしなおせば ibus-kkc のアイコンが表示されてXfce4が起動します。
なお `ibus-setup` を最初に実行したほうが行儀良いのかもですが、`startx` 経由の時点からスキップして直接起動してますので、これでも大丈夫なはずです。

## キーボードレイアウトの設定

Xfce4では "Applications Menu" -> "Settings" -> "Keyboard" の "Layout" タブで最終的に以下のようにしました。

![20160312_xfce4_startx_keyboardlayout.png](https://qiita-image-store.s3.amazonaws.com/0/18618/0f7707e9-f7c5-9884-05f8-c610dc51548e.png)

たしか "Use system defaults" に最初チェックが入ってたので、チェックを外してます。（チェック入りだとなぜかレイアウトが再起動とかログイン・ログアウトで英語になったりして不安定だった）
また、なぜか "Keyboard model" に Japanese (jp106) みたいなのが表示されなかったので、デフォルトのままです。最初は "Keyboard layout" にEnglishが入ってたのですが、これも、Japanese を Add した後に外して、Japanese だけにしたらレイアウト設定が安定しました。

ibus-kkc では、アイコンを右クリックして "Preferences" からの "Input Method" タブで、"Add" をクリックして明示的に "japanese - Kana Kanji" を追加します。

![20160312_xfce4_startx_kkc_inputmethod.PNG](https://qiita-image-store.s3.amazonaws.com/0/18618/38ec39f1-1eb7-b64e-77db-f42260bdfa82.png)

最後に ibus-kkc の "Preferences" で "Advanced" タブで、"Keyboard Layout" でこちらは "Use system keyboard layout" にチェックを入れます。

![20160312_xfce4_startx_kkc_advanced.png](https://qiita-image-store.s3.amazonaws.com/0/18618/ec4f4746-9cc7-496f-725a-73cc03ab0ac4.png)

実は、試してる最中、ログインやログアウトしたり再起動したりkkcで日本語ON/OFFするタイミングで、なぜかキーボードレイアウトが英語になったりして、上記以外のセッティングだと非常にレイアウトが不安定な状態でした。いろいろ試行錯誤した結果、startx経由でもグラフィカルログイン経由でも、この設定ならキーボードレイアウトが安定した、というのが上記設定になりますので、もしうまく行かなかったら少し試行錯誤してみてください。将来のアップデートによっては安定する設定値が変更されるかもしれません。

何回かログイン・ログアウトやマシン再起動を繰り返してみて、キーボードレイアウトが安定した自信が得られたら、半角/全角キーでIMを切り替えられるようにするなど、適宜カスタマイズしてみてください。

## 参考URL

- [Arch Linux インストール から Xfce 快適環境を構築するまで - Qiita](http://qiita.com/macchaberrycream/items/1dfabe8b710dc638e3f9)
  - http://qiita.com/macchaberrycream/items/1dfabe8b710dc638e3f9
- [CentOS7 に後から GUI (X Window System) を追加する - CUBE SUGAR CONTAINER](http://blog.amedama.jp/entry/2015/09/01/232339)
  - http://blog.amedama.jp/entry/2015/09/01/232339
- [CentOS 7 : Xfce デスクトップ環境 ： Server World](http://www.server-world.info/query?os=CentOS_7&p=x&f=8)
  - http://www.server-world.info/query?os=CentOS_7&p=x&f=8
- [CentOS 7にデスクトップ環境Xfceを導入する](http://note.kurodigi.com/centos7-xfce/)
  - http://note.kurodigi.com/centos7-xfce/

***

なお、ibusではなくfcitxやuimにしたり、mozcを入れてみるなどは、自分には難易度高そうだったので止めました。