在宿主機完全不安裝iBus套件的情況下,透過容器,使用基於iBus框架的中文輸入法。
構想是跑在DistroBox的容器裡面,然後透過dbus讓宿主機使用容器內的輸入法輸入文字。
為何?iBus相較於Fcitx5比較古老,發行版收錄iBus輸入法的可能性相較於Fcitx要高。並且使用iBus框架的輸入法也蠻多的,例如新酷音。不過有些Linux發行版收的iBus套件過舊且套件有限,所以利用其他發行版取得較新的iBus版本。
這或許可以作為 Flatpak版Fctix5的替代方案。
1. 測試環境#
- 宿主機系統:Rocky Linux 9.4
- 宿主機桌面環境:KDE 5.27 X11
- 容器系統版本:Ubuntu 22.04
2. 建立跑iBus容器#
安裝 DistroBox
建立Ubuntu 22.04容器
distrobox create --image docker.io/library/ubuntu:22.04 --name ubuntu
distrobox-enter ubuntu
- 安裝iBus與新酷音
sudo apt install ibus-chewing
sudo apt install libcanberra-gtk*
- 設定iBus
ibus-setup
3. 在宿主機啟用iBus#
- 不用圖形介面,最簡單的方法是在
/etc/environment
設定IM_MODULE環境變數指定iBus
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
SDL_IM_MODULE=ibus
GLFW_IM_MODULE=ibus
- 編輯
~/.bashrc
,將Ubuntu容器設定為開機自動啟動,登入容器並執行iBus常駐程式。
distrobox enter -n ubuntu -- ibus-daemon -drx
- 重開機後應可使用,iBus預設切換輸入法的組合鍵為Windows鍵+空白鍵。
4. 實驗結果#
雖然KDE有跳出iBus面板,但是只有Distrobox內部程式可以用iBus。宿主機程式必須用GTK_IM_MODULE=xim
啟動GTK程式的情況下才可以使用iBus。
其他程式都無法使用。
5. 適用於Fcitx5的可能性?#
或許Fcitx5可以如法炮製,不過目前看來宿主機系統也得安裝Fictx5相關套件才可以在原生GTK/QT程式啟用Fcitx5,否則Fcitx5就只能跟DistroBox容器內的程式通訊而已。
有趣的是,Flatpak的程式也可以認到DistroBox容器內的Fcitx5輸入法。