2024/04/22

openSUSE 切換輸入法框架

雖然目前 openSUSE 仍沒有切換輸入法框架的工具,但只要設定好 INPUT_METHOD 這個環境變數,就可以覆蓋原先為不同語言所設定的預設值。 例如可以設定 INPUT_METHOD="ibus",下次登入就會使用 ibus 輸入法框架。 而可用的輸入法框架,可以參考 /etc/X11/xim.d(openSUSE Tumbleweed 的位置在 /usr/etc/X11/xim.d)目錄下的設定。

一般而言,這些設定都是在設定 GTK_IM_MODULE, QT_IM_MODULE 與 XMODIFIERS 這幾個環境變數, 並且啟動 input method server。以 fcitx5 為例:

#make sure set these vars before dbus-launch
export LC_CTYPE=$LANG
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_SWITCHER=imsw-multi
export QT_IM_MODULE=fcitx

# FIXME: a little bit of delay is required to avoid race (boo#947576)
(sleep 2; fcitx5 -d) &

# success:
return 0

在 openSUSE leap 42.1 以及之後的環境(包含 openSUSE Tumbleweed), INPUT_METHOD 環境變數可以在 ~/.i18n 中設定。下面是 iBus 的設定範例。

#
# Override system wide input method here
#

export INPUT_METHOD=ibus

然後重新登入就會使用指定的輸入法框架。

ibus 的設定(包含輸入法引擎)使用 gconf 來儲存,可以用來觀察目前有的選項,如果因為某些因素需要透過非設定程式的方式修改, 或者在開發程式的過程中想要刪除自己開發過程中最後不用的設定項目,可以使用 dconf-editor 來修改。 dconf-editor 安裝的方式如下:

sudo zypper in dconf-editor

在 openSUSE Leap 15.5 因為修改 systemd xdg autostart 啟動方式,導致 ibus 在 KDE 無法正確啟動, 按照 Bug 1211977 的暫時解法, 需要修改二個檔案:

/usr/bin/ibus-autostart

# boo#1211977: xdg-autostart-generator cannot launch ibus with -d
if [ "$XDG_CURRENT_DESKTOP" = "KDE" ]; then
    exec ibus-daemon --xim
fi

ibus-daemon --xim -d
exit 0
/etc/xdg/autostart/ibus-autostart.desktop
[Desktop Entry]
Name=IBus
GenericName=IBus Daemon
Comment=Start IBus daemon
Exec=ibus-autostart
Icon=ibus-setup
Terminal=false
Type=Application
StartupNotify=false
NoDisplay=true
#X-GNOME-Autostart-Phase=Applications
#X-GNOME-AutoRestart=false
#X-GNOME-Autostart-Notify=false
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false

如果原本沒有安裝,現在要在 openSUSE Tumbleweed 使用 Fcitx 5 並且安裝一些輸入法(包含酷音輸入法), 使用下列的指令:

sudo zypper install fcitx5 fcitx5-table-extra fcitx5-zhuyin fcitx5-chewing

並且在 ~/.i18n 中設定 :

#
# Override system wide input method here
#

export INPUT_METHOD=fcitx5

openSUSE Tumbleweed 可以使用上述的方式加入 Fcitx 5。

另外,.i18n 這個檔案除了可以用來設定輸入法框架,也可以用來設定 locale。 對於 Fcitx 5 而言,除了 /etc/locale.conf,還可以在設定 INPUT_METHOD 環境變數之前設定 LANG, 即可設定 Fcitx 5 的 locale。 Fcitx5 使用系統設定,而不是桌面系統的設定決定使用何種 locale,如果你二者的設定不同,可以在這裡設定你想要的。

另外,Fcitx 5 有個麻煩的地方,就是目前家目錄設定 .i18n 的方式如果切換到其它輸入法框架,Fcitx 5 會對其它的框架造成干擾。 原因是 Fcitx 5 套件會在 /etc/xdg/autostart 放檔案 org.fcitx.Fcitx5, 即使目前的輸入法框架不是使用 Fcitx 5 一樣會自動啟動,如果有需要使用其它的輸入法框架在檔案 org.fcitx.Fcitx5 加入下列的設定。

Hidden=true

下面的小知識與如何切換輸入法框架無關。如果需要檢查 keyboard event(press and release), 在 X Window 系統下可以使用 xev 指令檢查:

xev -event keyboard

如果是在 Wayland 系統,則可以使用 wev 指令檢查。

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。