解决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
欢迎关注微信公众号,留言交流。

相关文章:

翻译: