中文环境配置和中文输入法
中文环境配置和中文输入法
适用读者:已完成前四篇配置、需要在 Arch Linux 上使用中文界面和输入法的读者。
前言:中文支持的两个层面
在 Linux 上”用中文”包含两件事:
- 中文显示:系统界面、终端、应用程序能正确显示中文字符(需要正确的 locale 和字体)
- 中文输入:能通过拼音等方式输入汉字(需要输入法框架)
两者都需要配置,缺一不可。
一、配置系统中文环境(locale)
1.1 什么是 locale?
locale 是操作系统的本地化设置,决定系统使用的语言、字符编码、日期格式、货币符号等。zh_CN.UTF-8 就是”中国大陆简体中文、UTF-8 编码”的 locale。
1.2 生成中文 locale
编辑 /etc/locale.gen,取消注释中文和英文的 UTF-8 行:
1 | sudo nano /etc/locale.gen |
找到并去掉这两行的 #:
1 | en_US.UTF-8 UTF-8 |
然后生成:
1 | sudo locale-gen |
为什么要同时保留英文 locale?
某些程序在中文 locale 下会产生乱码(尤其是终端里的错误信息、man 页面),保留 en_US.UTF-8 作为备选可以避免这类问题。
1.3 设置默认语言
编辑 /etc/locale.conf:
1 | sudo nano /etc/locale.conf |
桌面环境用户(GNOME / KDE / niri / Hyprland),设置为中文:
1 | LANG=zh_CN.UTF-8 |
纯终端用户(WSL 或无桌面),建议保持英文,否则终端里的中文提示符和错误信息可能显示异常:
1 | LANG=en_US.UTF-8 |
修改 /etc/locale.conf 后需要重新登录才能生效,或者执行:
1 | export LANG=zh_CN.UTF-8 |
(仅对当前 shell 临时生效)
1.4 安装中文字体
设置了中文 locale 但没有中文字体,屏幕上的汉字会显示为方块。安装常用字体:
1 | # 思源黑体(Adobe/Google 联合发布,高质量开源字体) |
安装后刷新字体缓存:
1 | fc-cache -fv |
二、GNOME 下配置中文输入法(ibus-pinyin)
GNOME 内置了对 ibus 输入法框架的深度集成——GNOME 在登录时会自动启动 ibus 守护进程,无需额外配置启动。
2.1 什么是 ibus?
ibus(Intelligent Input Bus)是 Linux 下的输入法框架,负责在应用程序和具体输入法引擎之间传递按键事件。GNOME 选择 ibus 作为官方支持的输入法框架。
2.2 安装 ibus-pinyin
1 | sudo pacman -S ibus ibus-pinyin |
ibus:输入法框架本体ibus-pinyin:拼音输入法引擎
2.3 配置 ibus
打开 GNOME 的”设置”→”键盘”→”输入源”,点击 + 号,选择”汉语(中国)”→”中文(Intelligent Pinyin)”添加。
或者通过命令行配置:
1 | # 添加中文拼音输入源 |
2.4 切换输入法
GNOME 默认使用 Super + Space 切换输入法。也可以在设置里改成 Ctrl + Space 或其他快捷键。
2.5 为什么 GNOME 用 ibus 而不是 fcitx5?
GNOME 通过 XDG Autostart 和 D-Bus 与 ibus 深度绑定,ibus 在 GNOME 下的体验更原生,无需额外配置。而 fcitx5 虽然功能更丰富,但在 GNOME 下需要额外处理与 ibus 的冲突(GNOME 登录时会同时启动两个输入法框架,造成混乱)。
三、niri 和 Hyprland 下配置中文输入法(fcitx5)
3.1 为什么 niri/Hyprland 用 fcitx5?
ibus 与 GNOME 耦合较深,在 niri、Hyprland 等独立窗口管理器下问题较多:输入法候选框位置错误、GTK 应用无法输入等。fcitx5 对 Wayland 合成器的支持更好,是平铺式窗口管理器用户的首选。
fcitx5 支持的输入方案也更丰富:除了拼音,还有五笔、仓颉、Rime(支持各种方言输入)等。
3.2 安装 fcitx5
1 | # fcitx5 本体 |
为什么要安装 fcitx5-gtk 和 fcitx5-qt?
在 Wayland 下,输入法有两种通信方式:
- Wayland text-input 协议(原生,效果最好)
- 输入法模块(GTK/Qt 各自的模块,兼容性更广)
安装 fcitx5-gtk 和 fcitx5-qt 确保更多应用能正常调用输入法。
3.3 处理与 ibus 的冲突
fcitx5 安装后,会在 /etc/xdg/autostart/ 下放置一个自启文件 fcitx5.desktop。如果你的系统同时安装了 GNOME(或者之前用过 GNOME),登录桌面时可能同时启动 ibus 和 fcitx5 两个输入法框架,造成冲突。
处理方法:删除 fcitx5 的 XDG autostart 文件
1 | sudo rm /etc/xdg/autostart/fcitx5.desktop |
删掉之后,fcitx5 不再通过 XDG 自动启动,改为由合成器(niri/Hyprland)的配置文件显式启动。这样 GNOME 用 ibus,niri/Hyprland 用 fcitx5,互不干扰。
⚠️ 注意:如果你只用 niri/Hyprland,不用 GNOME,也建议这样操作,因为手动在合成器配置里启动 fcitx5 比 XDG autostart 更可控,可以精确控制启动时机。
3.4 配置环境变量
输入法框架需要通过环境变量告知各个工具包(GTK、Qt)应该使用哪个输入法:
niri 配置(~/.config/niri/config.kdl):
1 | environment { |
解析:
GTK_IM_MODULE "fcitx":告诉所有 GTK 应用(如 Firefox、Nautilus)使用 fcitx 输入法模块QT_IM_MODULE "fcitx":告诉所有 Qt 应用(如 JetBrains IDE、VLC)使用 fcitx 输入法模块XMODIFIERS "@im=fcitx":XIM 协议的输入法设置,用于老旧的 X11 应用(通过 XWayland 运行时)SDL_IM_MODULE "fcitx":告诉 SDL2 应用(如某些游戏)使用 fcitxspawn-at-startup "fcitx5" "-d":niri 启动时自动以后台模式(-d)运行 fcitx5
Hyprland 配置(新版 Lua 格式,~/.config/hypr/hyprland.lua):
1 | -- 设置输入法环境变量 |
Hyprland 配置(旧版 hyprlang 格式,~/.config/hypr/hyprland.conf):
1 | # 输入法环境变量 |
3.5 配置 fcitx5-rime 拼音输入
首次启动 fcitx5 后,打开配置工具:
1 | fcitx5-configtool |
在图形界面里:
- 点击左下角
+号添加输入法 - 取消勾选”只显示当前语言”
- 搜索 “rime” 或 “中文”,添加 Rime
- 点击 OK 保存
Rime 默认包含”朙月拼音”(繁体)和”仓颉五代”。要使用简体拼音,有两种方式:
方式 A:切换 Rime 内置方案
fcitx5-rime 安装后,默认会包含简体拼音。在输入法激活状态下,按 F4 或 Ctrl+~ 可以打开方案选择菜单,选择”朙月拼音·简化字”。
方式 B:安装 rime-pinyin-zhwiki 词库(可选,扩充词汇量)
1 | yay -S rime-pinyin-zhwiki |
安装后在 fcitx5-configtool 里点击”重新部署 Rime”即可。
3.6 切换输入法
fcitx5 默认用 Ctrl + Space 切换中英文,用 Ctrl + Shift 切换不同输入法。可以在 fcitx5-configtool 的”全局选项”里修改。
3.7 验证输入法是否工作
打开 kitty 终端,切换到中文输入法,输入拼音,应该能看到候选词列表浮现。
如果没有出现候选框,执行诊断:
1 | fcitx5-diagnose |
这个命令会详细检查 fcitx5 的运行状态和环境变量配置,并给出修复建议。
四、中文字体渲染优化(可选)
4.1 配置字体优先级
在某些情况下,系统可能会选择日文版本的汉字字体,导致字形看起来”怪怪的”(日文汉字和中文简体字形有细微差异)。通过字体配置文件指定优先使用中文字体:
1 | mkdir -p ~/.config/fontconfig |
写入:
1 |
|
刷新字体缓存:
1 | fc-cache -fv |
五、常见问题排查
问题:终端里中文显示为乱码
原因:终端的字体不包含中文字符,或者编码设置有问题。
解决:
1 | # 确认当前编码是 UTF-8 |
问题:fcitx5 启动了但无法输入中文
原因:环境变量没有被程序读取到(程序在 fcitx5 设置环境变量之前启动)。
解决:
- 确认 niri/Hyprland 配置文件里的
GTK_IM_MODULE等变量已正确设置 - 关闭并重新打开应用
- 运行
fcitx5-diagnose查看详细信息
问题:GNOME 下同时运行了 ibus 和 fcitx5
原因:忘记删除 /etc/xdg/autostart/fcitx5.desktop。
解决:
1 | sudo rm /etc/xdg/autostart/fcitx5.desktop |
然后注销重新登录。
问题:JetBrains IDE 无法使用 fcitx5 输入中文
原因:JetBrains IDE 默认运行在 XWayland 下,需要 XIM 支持。
解决:在 IDE 的 JVM 选项里添加:
1 | -Drecreate.x11.input.method=true |
在 IDE 里通过 Help → Edit Custom VM Options 添加。
小结
至此,五篇博客的全部内容已经完成:
| 篇 | 内容 |
|---|---|
| 第一篇 | 通过 archinstall 安装 Arch Linux + 多种桌面环境 |
| 第二篇 | 通过 WSL 在 Windows 上安装 Arch Linux |
| 第三篇 | 安装 git、yay、sdkman、nvm、uv、Go、Docker、LazyVim |
| 第四篇 | 通过 DMS 配置 niri 和 Hyprland |
| 第五篇 | 中文 locale、字体、ibus(GNOME)、fcitx5(niri/Hyprland) |
通过这五篇的配置,你拥有了一个:
- 完整的中文支持(界面 + 输入)
- 现代化的开发环境(Java/Node/Python/Go/Docker)
- 高效的编辑器(Neovim + LazyVim)
- 漂亮可用的桌面(DMS + niri 或 Hyprland)
的 Arch Linux 系统。