2025年11月19日 星期三

Wayland和中文輸入法相衝突發生的一連串問題及解決方法

 這件事情其實已經發生了很久,只是我在Kubuntu上從沒在Chrome上輸入過中文,所以都沒發現。但是,一經發現,我才發現,連Edge都受影響。這下子事情就大條了,非解決不可。發現的原因是,當我想在Chrome上使用Gemini時,想輸入中文,卻發現Fcitx5無法切換成中文輸入法,無論是倉頡或是新酷音都不行!上網查才發現,那是Fcitx5和Wayland不相容所導致……。

由於我的Kubuntu用的是25.04版,而且一直有更新,換句話說,你可以看作,Fcitx5至今並沒有解決掉這個問題,它仍然只支援XFree86。換句話說,我必須換掉它,我決定先參考同樣已經換成Wayland的Zorin OS用的是哪套輸入法系統?打開星期一才裝好的Zorin OS 查看後,發現它用的是ibus,當機立斷,把輸入法系統全換成ibus。

sudo apt purge fcitx5*

sudo apt autoremove

sudo apt install ibus ibus-chewing ibus-table

並且把倉頡輸入法 ibus-cangjie 也安裝上去。

一切順利。但是Chrome沒問題了,可是等到了要用 Kate 打一篇純文字的時候又出現問題了。

倉頡輸入法通常是連打好幾個字根碼後,再按下空白鍵顯示或選字,才是一整個字的輸入程序。然而,現在變成了「打入任何一個字碼,就會立刻顯示,而不是等打入空白才選字」。這就完了,根本無法正確使用倉頡輸入法。後來更發現,其實在 Visual Studio Code 輸入中文字也會這樣,原本用 Fcitx 5 還能正常使用倉頡輸入中文字的,為了瀏覽器們把 IM 改成 ibus 反而連輸入都不行!

如果是從前,我就直接放棄。但是這次有 ChatGPT,我就善用它來幫我找到解決方法。

其實儘管有 ChatGPT,我仍然花了將近一整個下午才找到解決方法。其實,結論很簡單:

🛠 檢查 im-config 的設定檔

檢查:

cat ~/.xinputrc

如果有:

run_im ibus

IBus 就會在 KDE Wayland 啟動時自動被插入環境變數:GTK_IM_MODULEQT_IM_MODULE XMODIFIERS


如果你看到 .xinputrc ibus

你必須改成:

run_im none

或直接刪除:

rm ~/.xinputrc

因為 KDE Wayland 必須使用自己的 IBus Wayland 啟動方式,不可以使用 im-config 設定 XIM 那套。

 

我後來就是把 run_im 設成 none。然後……千萬要記得,重新啟動電腦,讓設定 active。

要這樣改 CharGPT 有解釋原因:

✔ 為什麼這樣就會正常?

KDE(Wayland)使用自身機制處理 text-input(如 Text Input Protocol),而 .xinputrc 這種 X11 時代的設定反而會造成衝突。
把它改成 run_im none → 等於不干擾 KDE 的 Wayland 原生輸入法流程 → 問題自然消失。

我只是想不通,既然已經知道 Fcitx 5 不支援 Wayland,Kubuntu 就應該把預設安裝的 text-input method 改成iBus。而且預設就是把 .xinputrc 移除掉。

我為什麼會這樣抱怨?因為我後來發現 Fedora KDE 就是這樣做!Kubuntu 為什麼不這樣做?


2025年8月6日 星期三

Ubuntu (25.04之後)上,要安裝倉頡的方法

 Ubuntu的中文輸入法,預設是fcitx5。但是,這個預設中文輸入套件,正體中文卻只有酷音輸入法。如果你想要安裝倉頡,在網路上有說,要安裝fcitx5-table-extra套件。原本fcitx5-table-extra套件並不存在於Ubuntu的Repository中,必自己build。但是我在安裝Kubuntu 25.04版後,居然在軟體清單發現它。

但是,我在Ubuntu Cinnamon的軟體清單中又找不到它了。它到底有沒有在Repository中呢?其實是有的,只是Gnome的軟體清單中沒把它加入。但是你從apt list 可以找到它:

$ sudo apt list | grep fcitx5

所以,這時候你就只需手動加入它:

$ sudo apt install fcitx5-table-extra

安裝好之後,在右下角的那個鍵盤icon按下滑鼠右鍵,選重新啟動,再選設定,你就可以發現倉頡輸入法了,裡面有第三代和第五代可以選。


2025年7月14日 星期一

碰到ramfs的議題,老人家的回憶

 因為這是我十幾歲的時候,早期學電腦的經驗,所以細節不清楚,也不確定自己判斷的對不對。

我最早學電腦是使用學校的PA-2000。你沒聽說是必然的,因為它是全華早期出的PC,CPU是Z-80,記憶體多大?不清楚,它使用的OS是CP/M,厲害的是,他一台有四個終端機,共用兩個軟碟機。

四台終端機,只有兩個軟碟機?那怎麼搶?不用搶,因為一旦用系統開機,它會開一個ramdisk,把RAM拿來做硬碟,只要你沒關機,就用這個記憶體磁碟機來存放你的程式。要離開的時候,再把軟碟插上,把檔案帶走即可。

這是因為我發現Linux早期開機initrd所使用的ramdisk,應該跟我早期用的,在CP/M上的ramdisk,應該是一樣的技術,搞不好原始碼還相同,只是Linux早期直接拿來用。難怪後來還要換成ramfs,早期考慮東考慮西做出來的東西,後來發現條件、環境都變了,不再適用了,換掉是必然的。


用 Claude 在 PsotgreSQL 的 Docker Container 中建立一個 database

Claude 是一個很強的 AI 工具,大概是我用過唯一可以和 Gemini 挑戰的 AI 工具。 它對於程式設計的能力相當強大。我這個測試證明了,不止程式設計能力很強,連資料庫的整個架構能力也是很嚇人的。 之前,我不是在 Proxmox VE 上建了一個 Zorin OS 的 ...