解決gcin在libreoffice不能輸入中文的小麻煩

You are currently viewing 解決gcin在libreoffice不能輸入中文的小麻煩

改用arch以後,所有的軟體都更新的非常快,這也包含了對我來說很重要的桌面環境。我使用的桌面環境是KDE Plasma,在第五版的時候雖然有時候會有些小問題,但基本上都是可以忽略的程度。但在今年春天KDE Plasma滾動升級成第六版以後,問題逐漸浮現出來了,有些BUG隨著更新逐漸穩定下來,可是卻有個例外,那就是出現幾個軟體無法輸入中文的介面。

更新到KDE Plasma 6當天,我就發現gcin整個突然無法正常啟動,研究個幾天後才發現我自己耍蠢了,因為在SDDM登入介面的地方,就有個讓我選擇要以X11或是Wayland的方式登入。在KDE Plasma 5的時代,Wayland在我的arch上是等於廢物狀態,完全不能使用,所以我理所當然不會去理會他,也不會特別安裝他的套件。但是在KDE Plasma 6的版本,wayland居然變成預設的登入方式,我當時也沒有特別注意到,因為也不像KDE Plasma 5以wayland方式登入後直接整個黑螢幕,KDE Plasma 6大致上都正常的把視窗呈獻出來,所以我沒有發現這個問題。

在確認是因為X11/Wayland的問題後,我當然選擇先退回X11,畢竟目前也不確定gcin的作者是否有打算讓gcin支援wayland,所以先退守X11算是最好的選擇。當然問題還是存在,包含了dolphin、konsole……等原生的程式都無法輸入中文,不過這些程式會要打中文的機率不高,只要firefox、libreoffice……等軟體可以輸入中文,都還能接受。

就這樣過了好一陣子,就在前陣子出院後,久違開啟電腦進行將近一個月沒有的更新,赫然發現libreoffice一直無法順利切換輸入法框架,就算在其他視窗先把輸入法框架換成中文後,也會無法打出注音符號。想說也許過一陣子更新後就能解決這個問題,就這樣痛苦半個月後實在覺得不是辦法,開始尋找解決的方案。

這種不知道該從哪裡開始下手的問題最麻煩,首先我也不知道該調出誰的log檔來看,就算知道也不一定看的懂,只好先從輸入法框架的一些基本原理開始看起,不看不知道,一看才發現原來要能讓中文在linux成功打出來是件有點複雜的事情,也才明白我當初為了能在我的視窗輸入中文,必須到.xprofile輸入下列的變數原因是什麼:

export GTK_IM_MODULE=gcin
export QT_IM_MODULE=gcin
export LC_CTYPE=zh_TW.UTF-8
export XMODIFIERS="@im=gcin"
gcin &

另外在爬gcin作者論壇的時候,偶然有看到作者對於QT一直改來改去很頭痛。知道這件事情後,就開始想那我既然是libreoffice無法輸入中文,會不會是輸入法框架無法和QT的interface對起來,仔細再看一下我出院後pacman的更新log就能發現libreoffice有更新,同時間也有qt的套件也有更新(qt5相關以及qt6相關的都有),雖然目前我的功力還不知道哪個才是跟輸入法框架對接的。

[2024-08-21T14:01:49+0800] [ALPM] upgraded poppler-qt6 (24.06.1-1 -> 24.08.0-1)
[2024-08-21T14:02:03+0800] [ALPM] upgraded poppler-qt5 (24.06.1-1 -> 24.08.0-1)
[2024-08-23T22:12:18+0800] [ALPM] upgraded libreoffice-still (7.6.7-1 -> 24.2.5-1)

我個人懷疑qt更新造成gcin無法在libreoffice輸入中文的嫌疑比較大,但又懶得用timeshift回去一個一個更新對照,所以就開始了以下的猜測:我當下認為因為我是使用KDE Plasma 6,據我的了解KDE是建構於 Qt GUI 函式庫的桌面環境,那有沒有可能libreoffice會因為我透過KDE相關的附屬程式(dolphin、bash)來開啟會以Qt的環境來開啟,導致我libreoffice無法輸入中文呢?

所以我就在思考是否有辦法讓libreoffice用GTK的環境變數來運作呢?(也不知道這樣講對不對),結果還真被我找到一些類似的文章:

看了這幾篇後確認我的想法可能真的有部份矇中,就到/etc/profile.d/libreoffice-still.sh先把檔案cp到我的~/.後,打開裏面:

#
# https://wiki.documentfoundation.org/Development/Environment_variables
#

# to force a certain look'n feel

#export SAL_USE_VCLPLUGIN=gen
#export SAL_USE_VCLPLUGIN=kf6
#export SAL_USE_VCLPLUGIN=qt5
#export SAL_USE_VCLPLUGIN=qt6
#export SAL_USE_VCLPLUGIN=gtk3
#export SAL_USE_VCLPLUGIN=gtk4

看起來似乎真的可以自己強制選擇要用什麼環境變數,首先qt一定完全先不考慮,再來考量到gcin套件在arch的套件官網只有提到會被gtk3有依存的關係,而gtk4則是沒有提到,我怕會根本沒有支援,所以最後使用export SAL_USE_VCLPLUGIN=gtk3(也就是將他的註解符號刪除),存回到/etc/profile.d/目錄底下覆蓋舊的,登出後重新登入……

終於!終於又可以正常的在libreoffice輸入中文,可喜可賀耶!也許這次只是蝦貓碰到死耗子猜中,但這份喜悅是累積了半個月下來的份量,當然遠期還是有wayland可能得換輸入法框架的隱憂,但先暫時不管啦。

進來坐坐,說說最近的事情:

This site uses Akismet to reduce spam. Learn how your comment data is processed.