Debian系で複数のIM(インプットメソッド)を立ち上げる

# はじめに

当文章は[「プログラミングでLinuxの日本語入力の流れを知る」](https://qiita.com/ai56go/items/2b033d014d34a602e219)の補足的な意味合いで投稿したもので、IMサーバとIMEの関係や起動および設定方法を軽く触れています。
当文章により、fcitx-mozcを起動している状態でuim-anthyも起動することができます。
必要に応じてお読みください。

使用OS:Debian11

まず、今回の説明の全体図です。
![全体図.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/f03b55e3-916d-dde7-ff8c-1f2cdae351e3.gif)
これから説明するのは、右半分のIMサーバとIMEに関する説明になります。

# fcitx-mozcのインストール＆自動起動設定
Debian10は標準の日本語入力としてuim-mozcを使用しています。
これを昨今人気のfcitx-mozcに変更します。

## パッケージのインストール
```:シェルコマンド
sudo apt install fcitx-mozc	
```

## 自動起動の設定
```:シェルコマンド
im-config
```
以下のウィンドウが表示されます。
![im_config01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/be80f25d-a2bb-6158-9998-7cf2f539b248.png)
[OK]をクリック

![im_config02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/b328d51b-ab2b-e857-824d-ea2978858298.png)
[Yes]をクリック

![im_config03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/e6b84552-960d-cfcc-1458-e849fe4d3409.png)
[fcitx]をクリックしてから、[OK]をクリック

![im_config04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/509bb1ad-f6cc-23b3-b598-e75523ee2412.png)
[OK]をクリック

再起動すれば、日本語入力かfcitx-mozcに切り替わります。

# uim-mozcをuim-anthyに変更
次に、uim-mozc(Debian10標準)からuim-anthyに変更します。

## パッケージのインストール

```:シェルコマンド
sudo apt install uim-anthy
sudo apt install uim-xim
```

## uimが使用するIMEをanthyに設定

```:シェルコマンド
uim-pref-gtk
```
以下のウィンドウが表示されます。
![uim_pref_gtk01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/46dfaca9-6331-133d-a4b0-0cb5c4ca0fc5.png)
使用可能にする入力方式"Mozc"の行の右辺にある[編集...]をクリック

![uim_pref_gtk02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/cf97ff65-a0ad-96e9-9fde-fb3fe5d45d38.png)
[無効]欄にある"Anthy(UTF-8)"をクリックしてから、左矢印をクリック。
[有効]欄にある"Mozc"をクリックしてから、右矢印をクリック。

![uim_pref_gtk03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/2d506502-ad03-6a5f-4a40-08a270950b47.png)
上記のように入れ替わったことを確認して[OK]をクリック

![uim_pref_gtk04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/e21baa8a-8071-f0ed-cd46-b16ba701e405.png)
使用可能にする入力方式が"Anthy(UTF-8)"に変わっていることを確認して[OK]をクリック

# uim-anthyの起動

```:シェルコマンド
uim-xim &
```
このコマンドでuim-anthyが起動します。このコマンドを実行直後から、fcitx-mozcとuim-anthyの２つのIMが起動している状態です。

(ヒント、im-configで選択したIMしか自動起動しません。再起動した場合、毎回このコマンドを実行しないとuim-anthyによる日本語入力は使えません)

# 環境変数でIMが切り替えられることを確かめる

## ツールキットがGtkの場合
```:シェルコマンド
env | grep IM
```
 を入力すると、

>GTK_IM_MODULE=fcitx
>CLUTTER_IM_MODULE=fcitx
>QT_IM_MODULE=fcitx

と表示されます。
この状態で、テキストエディター(gedit(GNOME), mousepad(Xfce), Leafpad(LXDE)などのツールキットにGtkを使っているアプリ)を実行してみます。[半角/全角] キーを押すと、次のように"Mozc"の文字が表示され、fcitx-mozcが使われていることがわかります。
![editor01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202736/b0c3b8de-f9df-24f6-f314-37645f58fd20.png)


次に一度テキストエディターを終わらせて、

```:シェルコマンド
export GTK_IM_MODULE=uim
```

と入力してから、同じテキストエディターを実行します。[半角/全角]キーを押すと"Mozc"の文字が表示されません。これはuim-anthyで日本語変換がおこなれているためです。(もっとわかりやすくするために、fcitxをかな入力、uimをローマ字入力にすれば良いかもしれません)

## ツールキットがXIMの場合
```:シェルコマンド
env | grep XMODI
```
を入力すると、

>XMODIFIERS=@im=fcitx

と表示されます。
この状態でXIMが使われているターミナル(xterm)を実行し、日本語入力をしてみてください。(ヒント、必要なパッケージのインストールは sudo apt install xterm)

次に

```:シェルコマンド
export XMODIFIERS=@im=uim
```

と入力してから、xtermを起動すると、日本語入力の挙動が変わっていることに気づくはずです(uimの場合、編集中は文字化けしていますが確定すれば正しい日本語が表示されます)


## ツールキットがQtの場合

Qtの環境変数は、QT_IM_MODULEが使われます。
Qtが使われているアプリはインターネットで"KDEアプリ"で検索すれば簡単に見つけることができます。(sudo apt install kwrite (テキストエディタ)あたりが手軽です)

(留意、私の環境では、QT_IM_MODULE=uimにすると日本語入力ができなくなりました。設定漏れなのか、Qtの仕様なのかは私にはわかりません。GtkやXIMではうまく動作したことを考え、これ以上は本文章の範囲外と考え深く追求しませんでした)

# 元のuim-mozcに戻す
uim-pref-gtkでanthyを無効にし、mozcを有効に戻し(上記、「使用IMEをanthyに設定」で行った設定の逆)、im-configでuimを選択したあと、再起動すれは日本語入力がuim-mozcに戻ります。
(環境変数をいろいろ変更しましたが、再起動すればim-configの設定に合った値が自動で設定されるので元に戻す必要はありません)

# まとめ
・Linuxの日本語入力(IM)はIMサーバとIMEに分かれていることを書きました。
・IMは複数同時に起動し、環境変数を使って使い分けられることを書きました。
・アプリごとに使われているツールキット(Gtk2,Qt5,XIMなど)が違うことを書きました。
・この文章は実験的なものです、通常は複数のIMを同時に起動する必要も環境変数を直接変更する必要もありません。Debian系のLinuxではim-configでお気に入りのIMを選べば日本語入力を切り替えられます。