解決Arch下VSCode無法輸入中文的問題

如今VSCode的用戶很多,在Arch Linux下收錄了三個版本,Code-OSS、Visual Studio Code 和VSCodium,世界總是很複雜,我選擇Code-OSS,只因其在Extra中而不是AUR。 三者功能相似差異不大,基礎工具軟件用習慣就好,下文統一簡稱vscode。

在Linux Wayland環境下,用戶會偶遇各種輸入法問題,Electron 便是其中的重災區,vscode 依賴Electron,Chromium也是。

沒記錯的的話,Chromium 不久前才徹底解決Linux Wayland 下的輸入問題,消除了東亞人民的一大痛苦(Electron某個版本後才比較好支持中文輸入),在此之前我被迫一直使用Firefox。

輕折騰,能接收Xwayland,其實大部分軟件默認下也沒有問題。回到主題,vscode 在獨立窗口管理器 Labwc 中,無法切換輸入法,一直是英文輸入狀態,這個問題困擾了我很久,一直等 Eletron 升級。

1Version: 1.101.0
2Commit: dfaf44141ea9deb3b4096f7cd6d24e00c147a4b1
3Date: 2025-06-17T21:19:01.152Z
4Electron: 35.5.1
5ElectronBuildId: undefined
6Chromium: 134.0.6998.205
7Node.js: 22.15.1
8V8: 13.4.114.21-electron.0
9OS: Linux x64 6.15.2-arch1-1

瞄了一眼,記得是超過34的某個版本就可以輸入中文了,前置條件是已滿足。

1. 解決方法

一份配置文件解君憂:

1➜  ~ cat ~/.config/electron-flags.conf
2--enable-features=WaylandWindowDecorations
3--ozone-platform-hint=auto
4--enable-wayland-ime
5--wayland-text-input-version=3

前2行是開啓純 Wayland 運行,不理解的,可以參考這個連接

後兩行支持中文輸入,其中 --wayland-text-input-version=3 比較關鍵,成熟的桌面環境KDE/Gnome等可能不需要這個就可以(沒有測試過,懶,不想測試,猜測的)。

Labwc 在 release 版本 0.7.2 中支持了, 由Keio University的一個日本人提交的:

Support input methods (or input method editors, commonly abbreviated IMEs) like Fcitx5, using protocols text-input-v3 and input-method-v2.

如果你像我一樣用的是獨立窗口管理器,可以嘗試添加 --wayland-text-input-version=3,說不定就能愉快輸入中文了。我測試了,在 Labwc 下 --enable-wayland-ime--wayland-text-input-version=3 必須同時開啓,才能輸入中文,我想日文、韓文都是類似的,畢竟計算機不是東亞人發明的,鍵盤上只有幾十個按鍵,需要輸入法。

2. 其它

如果有多個 Electron 依賴的軟件,如何分開配置:

Electron 軟件包讀取 ~/.config/electronXX-flags.conf 文件,其中 XX 是 Electron 版本,如果版本文件不存在,則回退到共享的 ~/.config/electron-flags.conf。

值得一提的是,Arch wiki的英文內容和中文內容可能不一致,不信看看這個連接,中文額外包含了輸入法相關說明,英文裏面是沒有的,日文也沒有,中文維護者用心了,是個勤勞的小蜜蜂,點贊👍。

儘管其中的輸入法解決方案,並不適用我的狀況,但提供了思路。

可見,在Linux Wayland Labwc 環境下,要解決中文輸入問題,並不是一勞永逸的,鏈路比較長(Linux新用戶也無須畏懼,絕大部分軟件是沒有問題的)。

通常來說環境變量是第一道關卡:

 1
 2➜  ~ cat .config/labwc/environment
 3# Example environment file
 4
 5# This allows xdg-desktop-portal-wlr to function (e.g. for screen-recording)
 6XDG_CURRENT_DESKTOP=wlroots
 7
 8# Set keyboard layout to Swedish
 9# XKB_DEFAULT_LAYOUT=se
10XKB_DEFAULT_LAYOUT=us
11
12# Set two keyboard layouts and toggle between them using alt+shift
13#XKB_DEFAULT_LAYOUT=se,de
14#XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle
15
16# Force firefox to use wayland backend
17MOZ_ENABLE_WAYLAND=1
18
19# Set cursor theme.
20# Find icons themes with the command below or similar:
21#     find /usr/share/icons/ -type d -name "cursors"
22XCURSOR_THEME=breeze_cursors
23
24# Disable hardware cursors. Most users wouldn't want to do this, but if you
25# are experiencing issues with disappearing cursors, this might fix it.
26#WLR_NO_HARDWARE_CURSORS=1
27
28# For Java applications such as JetBrains/Intellij Idea, set this variable
29# to avoid menus with incorrect offset and blank windows
30# See https://github.com/swaywm/sway/issues/595
31#_JAVA_AWT_WM_NONREPARENTING=1
32_JAVA_AWT_WM_NONREPARENTING=1
33#
34
35# fcitx5
36QT_IM_MODULE=fcitx
37XMODIFIERS=@im=fcitx
38INPUT_METHOD=fcitx
39SDL_IM_MODULE=fcitx

這個大部分網上資料都會提到,其次輸入法引擎IbusFcitx 配置是第二道關卡。

接着是 DE(KDE/Gnome/Xfce/COSMIC) 或者說 WM(如Labwc、Sway) 支持不一樣,第三道關卡。

最後一道關卡就是軟件本身了,比如 Electron 必須是高於某個版本纔行(具體是那個版本往上,我忘記了,可以自行搜索,好像是34),第四道關卡。

軟件本身不支持是最痛苦的,比如 Dota2 剛出來時就不行,再比如 Chromium 就得等升級。

3. 截圖證明

說了這麼多,沒圖沒真相,強勢截圖:

Labwc Wayland codeoss

可見功能正常,如果讀者認爲有幫助,關注下我的公衆號,也是支持方式之一,畢竟每寫一個文章,耗時2個小時以上。在Labwc環境下,解決這個問題,不出意外應該是中文世界獨一份,至少我還沒有搜到。

最後修改於: Friday, June 20, 2025

相關文章:

翻譯: