刚装完系统的头十分钟绝大多数人卡在同一个地方浏览器打开了地址栏能打字但敲出来全是英文想搜个东西得先在别处用手机查好再手抄过来。Ubuntu 26.04 这类新 LTS 上做中文输入法安装难点从来不是找不到软件包而是三层东西叠在一起——桌面会话从 X11 全面转向 Wayland、输入法框架本身有 ibus 和 fcitx5 两套生态、以及不同应用GTK4、Qt6、Electron、Flatpak 沙箱对输入法的接入方式各不相同。任何一层没对上表现都是同一句话装是装上了就是打不出字。下面这份内容是我自己在几台机器上反复装、反复踩坑之后整理出来的完整路径。它会告诉你 Ubuntu 26.04 上装中文输入法该怎么选路线、每一步为什么要这么做、坏了之后按什么顺序去查。刚接触 Linux 桌面的人可以照着抄已经用过几年、但每次重装还要翻旧笔记的人可以重点看排查和 RIME 那两节。1. 先把路线定下来Wayland 环境下 ibus 与 fcitx5 的取舍Ubuntu 从 26.04 这个版本开始桌面默认会话基本已经全面落在 Wayland 上X11 会话虽然还留着入口但很多新机器上的显卡驱动、混合显卡切换、高分屏缩放在 Wayland 下体验明显更好。这一点直接决定了输入法安装的策略X11 时代那套改 XMODIFIERS、写 .xinputrc、重启 X的经验在 Wayland 下有一部分是失效的照抄老教程很容易白折腾半小时。1.1 两套框架的本质差异不在功能而在谁负责把按键送到输入法ibus 是 GNOME 桌面的原厂件。它由 GNOME 的输入源机制统一管理登录界面、锁屏界面、GNOME Shell 自己的搜索框都能用沙箱应用Flatpak的兼容性也最好。代价是它的中文引擎ibus-libpinyin功能相对朴素词库管理、双拼方案、自定义短语这些能力都比较薄。fcitx5 是社区里的改装件功能强得多RIME 引擎、双拼、五笔、大量可定制项、跨应用共享的用户词库、更好的候选框样式控制。但它在 GNOME Wayland 这个组合下属于外来户需要靠 GTK/Qt 的输入法模块把按键接进去遇到不支持模块路径的原生 Wayland 应用时就可能出现候选框跑到屏幕左上角、或者干脆不弹候选框的情况。维度ibusfcitx5GNOME 集成度原生登录界面可用需自启动与模块注入中文引擎能力libpinyin够用RIME/拼音/五笔/双拼可深度定制Wayland 原生应用通过 GNOME 内置协议稳定依赖模块路径部分应用有边界Flatpak/Snap 兼容最好需要 override 注入环境变量词库与配置可控性一般很高纯文本配置出问题后的排查工具较少fcitx5-diagnose信息很全1.2 用两条命令确认自己到底跑在哪个会话上别靠设置里看着像直接问系统echo $XDG_SESSION_TYPE loginctl show-session $(loginctl | awk /tty/{print $1; exit}) -p Type第一条输出wayland或x11第二条从 logind 侧再确认一遍。两者一致就基本没跑。顺带看一眼桌面echo $XDG_CURRENT_DESKTOP输出ubuntu:GNOME就是 GNOME 系输出带KDE就是 Plasma。这个信息很重要因为 KDE Plasma 的 Wayland 会话里 fcitx5 是事实上的原厂方案配置路径和 GNOME 完全不同别把两边的教程混着用。1.3 我给不同人的默认建议如果你只是想打字不折腾双拼、不导词库、不写自定义短语直接用 ibus ibus-libpinyin 最省心装完在设置里加一个输入源就结束了未来系统升级也不容易坏。如果你需要 RIME 方案、需要自己维护词库、需要大量自定义短语比如经常输入特定术语、代码片段、地址模板或者你同时要打中文和日文那 fcitx5 是唯一像样的选择多花二十分钟配置很值。如果你的机器是 KDE Plasma别犹豫直接 fcitx5。一个真实的取舍点在 GNOME Wayland 下用 fcitx5早晚会遇到某个应用候选框位置不对的问题。这不是配置错了是协议层面的客观限制。能接受就上不能接受就老老实实用 ibus。2. 装包之前的体检locale、仓库与依赖链很多人失败在第一分钟apt install报找不到包或者装完发现少了个 frontend 包导致某类应用打不出字。这一节把装之前的四件事过一遍能把后面 80% 的疑难杂症提前掐掉。2.1 locale 不需要改成中文但 UTF-8 必须齐全一个流传很广的误解必须把系统语言切成中文中文输入法才能用。实际上输入法跟系统显示语言是两件事LANGen_US.UTF-8的系统照样能打中文而且很多开发者本来就偏好英文界面。真正要确认的是字符集是不是 UTF-8locale localectl status看LANG和LC_CTYPE这两行值里必须带UTF-8。如果输出里有POSIX或者空值那就要处理一下sudo locale-gen en_US.UTF-8 zh_CN.UTF-8 sudo update-locale LANGen_US.UTF-8zh_CN.UTF-8生成出来主要是给某些需要中文排序、中文日期格式的程序用的即使你不把系统语言设成中文生成它也没有坏处。这里有个细节update-locale改的是/etc/default/locale对已经登录的会话不生效改完要重新登录一次才算数。我见过有人在终端里反复执行locale看不到变化就是因为没重登录。2.2 版本核对新 LTS 上别随便加第三方源Ubuntu 26.04 是刚出的 LTS第三方 PPA 的维护者往往要过几个月才跟上。所以第一原则是优先走官方仓库版本旧一点没关系稳定最重要。sudo apt update apt-cache policy fcitx5 fcitx5-chinese-addons ibus-libpinyinapt-cache policy会告诉你候选版本号和来源仓库。如果某个包显示Candidate: (none)说明仓库里没有或者源没更新先解决这个再往下走。如果某个包已经有官方版本就别去加 PPA 了——我踩过的坑是加了某个第三方源之后apt upgrade把输入法相关的一串库替换成了不匹配的版本结果整个桌面登录后黑屏只能进 tty 回滚。这种故障排查成本远高于省下来的那点版本差异。2.3 依赖链frontend 包一个都不能少这是最容易漏的地方。fcitx5 本体只是框架真正把按键接进应用的是各种 frontend 包。装少了表现就是gedit 里能打浏览器里打不出来这种诡异现象。包名作用漏装后的表现fcitx5框架本体与守护进程什么都不能用fcitx5-chinese-addons拼音、双拼、五笔等引擎加了输入法却没有中文选项fcitx5-frontend-gtk3GTK3 应用接入GNOME 里一部分老应用打不出字fcitx5-frontend-gtk4GTK4 应用接入新版 GNOME 应用打不出字fcitx5-frontend-qt5Qt5 应用接入部分工具类软件失效fcitx5-frontend-qt6Qt6 应用接入新版 Qt 软件失效fcitx5-config-qt图形配置工具只能在命令行里改配置fcitx5-rimeRIME 引擎想要 RIME 方案却没得选fcitx5-module-waylandWayland 相关支持原生 Wayland 应用候选框异常包名在不同版本上偶有差异装之前用apt search fcitx5-frontend扫一眼最稳。别嫌麻烦这一步能省掉后面一小时的困惑。3. fcitx5 从装包到打出第一个字这一段是完整操作链路每一步我都会说清楚为什么要这么做因为照抄命令但不懂意图的话一旦环境有偏差就没法自己修。3.1 一条命令装齐然后确认守护进程状态sudo apt install fcitx5 fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 \ fcitx5-frontend-qt5 fcitx5-frontend-qt6 \ fcitx5-config-qt fcitx5-module-wayland装完先别急着配手动起一次看它能不能活着fcitx5 -d fcitx5-remotefcitx5-remote的返回值有含义0表示当前是英文状态1表示中文状态2表示框架在但当前无输入窗口。如果它返回空或者报连接不上说明守护进程没起来这时候去看journalctl --user -u fcitx5或者直接终端里前台跑fcitx5看报错。前台跑能看到完整异常栈比后台猜快得多。3.2 环境变量写在哪里这是 Wayland 下最容易做错的一步X11 时代大家习惯往~/.xprofile或者~/.profile里写环境变量。在 Wayland 会话里~/.xprofile根本不会被读~/.profile的读取时机也不一定赶在图形会话启动之前。目前最可靠的做法是用 systemd 的用户环境目录mkdir -p ~/.config/environment.d新建~/.config/environment.d/im.confGTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx SDL_IM_MODULEfcitx改完必须重新登录不是重启应用因为 systemd 用户实例在登录时生成环境快照。想验证有没有生效systemctl --user show-environment | grep IM_MODULE这里有个必须讲清楚的取舍。GTK_IM_MODULEfcitx这个设置本质上是让 GTK 应用绕开 Wayland 原生的输入法协议改走 fcitx5 自己的模块路径。好处是兼容性好绝大多数 GTK3/GTK4 应用立刻就能用坏处是应用不再把光标的精确位置告诉输入法框架候选框就可能定位不准。反过来如果你把GTK_IM_MODULE留空或者设成wayland新版应用的候选框定位会准但那些还没适配原生协议的应用会直接打不出字。我的建议是先按上面配置全部走模块路径把输入跑通等哪天被候选框位置烦到了再逐个应用去调而不是一开始就追求完美。这是典型的先能跑再好用顺序。3.3 让 fcitx5 开机自启的三种方式第一种是桌面自启动项最通用。多数打包版本会在/usr/share/applications/下带一个org.fcitx.Fcitx5.desktopGNOME 会把它列进启动应用程序。如果想自己控制复制一份到用户目录mkdir -p ~/.config/autostart cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/然后在 GNOME 的优化工具或者设置里确认它没被禁用——被禁用的项会在~/.config/autostart里多出一行Hiddentrue这是个很隐蔽的坑。第二种是 systemd 用户服务适合喜欢统一管理的人# ~/.config/systemd/user/fcitx5.service [Unit] DescriptionFcitx5 input method Aftergraphical-session.target PartOfgraphical-session.target [Service] Typesimple ExecStart/usr/bin/fcitx5 Restarton-failure RestartSec3 [Install] WantedBygraphical-session.target启用并立即启动systemctl --user daemon-reload systemctl --user enable --now fcitx5.service注意PartOf这一行它保证注销图形会话时服务跟着退出否则下次登录会出现两个 fcitx5 进程抢同一个 DBus 名字表现是输入法时灵时不灵。第三种最简单什么都不配每次登录后手动fcitx5 -d。不推荐但调试阶段很干净能排除自启动带来的干扰。3.4 首次配置该动哪几项别动哪几项打开配置工具fcitx5-configtool如果系统托盘里没有输入法图标GNOME 默认不显示托盘图标需要装 AppIndicator 扩展这条命令就是唯一入口。进输入法标签页把键盘 - 英语(US)留在列表里点加号取消勾选仅显示当前语言找到拼音加进去。这里我建议按这个顺序排英文键盘在前中文在后。因为 fcitx5 的第一个输入法是默认状态把英文放第一位意味着每次新开窗口默认是英文而在代码编辑器、终端里这是好事。全局配置标签页里我只动两项切换输入法的键保持默认的CtrlSpace这是肌肉记忆改了反而别扭临时切换到英文保持Shift。候选词数量按屏幕大小调笔记本上 5 个比 7 个舒服因为候选框不会挡住下面一行。不建议一开始就开云拼音。它会往输入法里塞网络请求在弱网环境下候选会卡顿半秒体验反而变差。等基础功能稳定了再考虑。4. IBus 路线把 GNOME 原厂件用对如果你决定走 ibus整个流程会短很多但同样有几个点容易做错。4.1 ibus 的优势在不用管它ibus 的守护进程由 GNOME 会话自己拉起输入源列表由 GNOME 设置统一管理登录界面和锁屏界面也能输入中文这点 fcitx5 做不到。它的配置项少所以坏的可能性也少。对绝大多数只需要拼音输入的人来说这是最理性的选择——不是因为它更好而是因为它需要你操心的地方更少。4.2 装引擎并挂到输入源列表sudo apt install ibus-libpinyin装完重启会话或者在 GNOME 设置里操作设置 → 键盘 → 输入源 → 添加 → 中文(中国) → 中文(智能拼音)。命令行党可以直接改 gsettingsgsettings set org.gnome.desktop.input-sources sources \ [(xkb,us),(ibus,libpinyin)]这行的意思是把输入源列表整体替换成英文键盘 智能拼音两项。注意它是覆盖式写入如果你原来还有别的输入源比如日语要一并写进去否则会被清掉。这是我自己踩过的坑执行完之后发现日语输入法消失了还以为是装坏了。切换快捷键是SuperSpace不是CtrlSpace。这个差异让很多从 fcitx5 转过来的人困惑半天。想改的话在设置 → 键盘 → 键盘快捷键 → 输入源里改。4.3 ibus 的两个常见小毛病第一个是候选框不跟随光标。这在 Wayland 下主要是应用侧的问题优先升级应用本身其次尝试把该应用的 GTK 版本切到 4GDK_BACKENDwayland或--gtk-version4。第二个是ibus-daemon卡死表现是切到中文但敲字没反应。修复很快ibus restart如果重启后还是不行直接指定引擎ibus engine libpinyinibus engine不带参数执行会列出所有可用引擎这招在输入源列表里有中文但切不过去的时候特别好用——它能告诉你引擎到底装没装上。5. RIME 落地词库、模糊音与自定义短语选 fcitx5 的人里一大半其实是冲着 RIME 来的。RIME 的强大之处是全部配置都是纯文本可以版本管理、可以批量改、可以多机同步麻烦之处也是这个——它的目录结构和重新部署机制对新手不友好。5.1 先搞清楚两个目录的关系sudo apt install fcitx5-rime ls /usr/share/rime-data # 只读的预置方案 ls ~/.local/share/fcitx5/rime # 你的用户目录改这里规则很简单/usr/share/rime-data里的文件是模板不要去改升级时会被覆盖所有定制都写在~/.local/share/fcitx5/rime里而且不是改原文件是写一份xxx.custom.yaml补丁。RIME 启动时会把模板和补丁合并生成编译后的*.bin文件。这个机制的好处是升级不丢配置坏处是新手改了原文件发现不生效——因为它读的还是编译产物。记住一句话改完必须重新部署。5.2 在 default.custom.yaml 里选方案、定切换键新建~/.local/share/fcitx5/rime/default.custom.yamlpatch: schema_list: - schema: luna_pinyin_simp - schema: double_pinyin menu/page_size: 7 switcher/hotkeys: - Controlgraveschema_list决定方案列表里出现哪些顺序就是切换顺序。luna_pinyin_simp是简体输出luna_pinyin是繁体。page_size是候选词个数。Controlgrave反引号键是方案切换菜单的快捷键输入法多的人会经常用。注意 YAML 对缩进极度敏感一律用空格不要用 Tab。缩进错了 RIME 不会报错只会默默不生效——这是 RIME 最坑的地方之一。5.3 模糊音与自定义短语的实际写法模糊音写在方案自己的补丁文件里比如luna_pinyin_simp.custom.yamlpatch: speller/algebra: - derive/^z(.*)$/zh$1/ - derive/^c(.*)$/ch$1/ - derive/^s(.*)$/sh$1/ - derive/(.*)n$/$1ng/ - derive/(.*)ng$/$1n/derive的意思是额外派生一种可能的拼写而不是替换。所以z开头会同时接受z和zh两个都能打出字。这个写法比很多教程里让你整段抄 algebra 列表要安全因为它只追加、不覆盖原有规则——覆盖会导致原有的其它规则失效表现为某些字突然打不出来。自定义短语用一个单独的文本文件格式是编码 Tab 短语dz 北京市某某路 100 号然后在default.custom.yaml的patch里挂上engine/translators: - table_translator - punct_translator - script_translator - custom_phrase挂载这一项最容易出错因为engine/translators是整体替换列表你必须把原本就有的几个 translator 全写进去否则拼音引擎会失效。判断方法是部署后打一个常见字如果候选框空空如也就是这个列表被覆盖掉了。5.4 部署与验证的完整动作改完配置后右键点击输入法状态栏图标或者托盘图标选重新部署。等两三秒看候选框是否恢复正常。命令行下等效做法rm -rf ~/.local/share/fcitx5/rime/*.bin pkill fcitx5 fcitx5 -d删*.bin是强制重新编译只在配置改得比较大、部署看起来没反应的时候用。日常小改动用菜单里的重新部署就够了。验证是否真的生效不要看配置文件看行为打一个模糊音测试字比如打zi看能不能出知打自定义短语的编码看有没有出对应文本。配置写对但没部署和配置写错表现是一样的。6. 打不出字时的排查链路前面都顺利的话这一节用不上。但只要你在 Linux 桌面上用过两年输入法就一定会在某个时刻遇到昨天还好好的今天打不出字。下面这套顺序是我实际排查时用的从信息量最大的地方开始。6.1 第一步永远是 fcitx5-diagnosefcitx5-diagnose这个脚本会输出一大段报告重点看四块报告区块看什么异常含义Environment各个 IM_MODULE 变量变量为空说明 environment.d 没生效或没重登录Frontends各 frontend 是否 loaded某个为 no 说明对应包没装XimXIM 服务状态异常通常只影响 XWayland 老应用DBusfcitx5 是否注册到会话总线异常说明守护进程没起来或起了两份Log最近的错误行真正的异常原因往往在这里先看 Environment 那一块。我遇到过的绝大多数打不出字都是环境变量没生效——配置文件写对了但没重新登录或者写到了~/.profile这种 Wayland 下不读的地方。6.2 候选框跑到屏幕左上角或完全不动这是 Wayland 下最典型的症状原因是输入法拿不到光标的精确坐标只能退回到默认位置。先判断应用类型# XWayland 应用 echo $WAYLAND_DISPLAY # 有值说明在 Wayland 会话 xlsclients # 列出当前跑在 XWayland 上的应用如果出问题的应用在xlsclients列表里说明它走的是 XWayland候选框定位本该正常问题多半在 frontend 包缺失。如果不在列表里说明它是原生 Wayland 应用这时有两个方向一是让它走 XWayland对大多数应用来说设置--ozone-platformx11或GDK_BACKENDx11就能做到二是去 fcitx5 配置里确认 Wayland 相关模块已启用。实测下来对于只在这一个应用上出问题的情况让该应用走 XWayland 是最省事的代价是它的模糊效果和高分屏缩放可能略有差异。6.3 只有某一类应用打不出字按应用类型对症处理不要全局乱改配置。终端类应用先排除快捷键冲突。CtrlShiftE、CtrlShiftSpace在不少终端里被占用会导致切到中文的指令被终端吃掉。把输入法切换键改成SuperSpace或者加一个备用键就能解决。Electron 应用很多聊天工具、编辑器它们自带一套渲染和输入处理Wayland 下需要显式开启app-name --enable-wayland-ime如果还是不行加--gtk-version4试试再不行就让它跑在 XWayland 下通常是最后一步但最有效。Flatpak 应用沙箱看不到宿主的环境变量需要显式注入flatpak override --user \ --envGTK_IM_MODULEfcitx \ --envQT_IM_MODULEfcitx \ --envXMODIFIERSimfcitx flatpak override --user --show第二条命令用来看注入结果确认真的写进去了。改完要完全退出应用再启动不是关窗口——很多 Flatpak 应用关窗口不退出进程。Snap 应用这一类最容易出问题因为 Snap 的沙箱比 Flatpak 更严。我的实际做法是尽量换成 deb 或者 Flatpak 版本跟沙箱权限较劲的时间成本太高。6.4 重启后回到英文输入法没起来按这个顺序查ls ~/.config/autostart/ # 自启项是否存在 grep -r Hiddentrue ~/.config/autostart/ # 是否被禁用 systemctl --user status fcitx5.service # 服务状态 cat ~/.xinputrc 2/dev/null # 是否残留旧配置第三种情况值得单独说某些老教程会让你写~/.xinputrc指定输入法框架。这个文件在 Wayland 下基本不起作用但如果里面写的是ibus而你实际在跑 fcitx5某些应用会按它去连 ibus表现就是一半应用能打一半不能。如果你按新方法配置建议把这个文件删掉或清空。还有一种情况是输入法启动了但输入法组是空的——配置文件被覆盖或者用户目录权限不对。检查~/.config/fcitx5/profile里有没有[Groups/0]段落DefaultIM是不是空的。空的话重新打开配置工具加一次输入法就能恢复。7. 长期维护升级、备份与多机同步输入法这个东西装好那一天不是结束系统大版本升级、换机器、多设备同步才是真正的考验。7.1 大版本升级时最容易坏在哪Ubuntu 跨大版本升级时输入法最常见的故障是 ABI 不匹配新系统的 GTK/Qt 版本变了而旧的 frontend 包还没来得及更新结果是框架在、引擎在、就是接不进应用。判断方法很直接升级后跑fcitx5-diagnose看 Frontends 那块是不是有not loaded。处理办法是升级完成后主动重装一遍相关包sudo apt install --reinstall fcitx5 fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 \ fcitx5-frontend-qt5 fcitx5-frontend-qt6另一个高频问题是第三方源残留。升级前建议把/etc/apt/sources.list.d/里跟输入法相关的第三方源注释掉用系统自带的版本升级完再决定要不要加回来。我吃过这个亏升级过程中某个第三方源的包版本跟系统库冲突导致图形会话起不来只能 CtrlAltF3 进 tty 手动降级。7.2 值得备份的只有两个目录tar czf im-backup-$(date %F).tar.gz \ ~/.config/fcitx5 \ ~/.local/share/fcitx5/rime~/.config/fcitx5里是输入法组、快捷键、皮肤等框架配置~/.local/share/fcitx5/rime里是 RIME 的方案、词库、自定义短语。这两个目录加起来通常不到几兆但重建成本很高——尤其是手工整理过的用户词库和几百条自定义短语。注意不要把*.bin编译产物一起备份换机器后架构或版本不一致时它们会导致部署失败。备份前先清一遍find ~/.local/share/fcitx5/rime -name *.bin -delete恢复的时候把两个目录解包回原位重新登录然后重新部署一次。用户词库会自动合并进来不会覆盖新打的内容。7.3 我自己用的一张最小检查表每次重装或者给别人配机器我都照这个顺序过一遍基本不会漏步骤命令/动作通过标准确认会话类型echo $XDG_SESSION_TYPE明确 wayland 或 x11确认 localelocale含 UTF-8核对包版本apt-cache policy fcitx5Candidate 不是 none装全 frontendapt search fcitx5-frontendgtk3/gtk4/qt5/qt6 齐写环境变量~/.config/environment.d/im.conf重登录后systemctl --user show-environment可见配自启动autostart 或 systemd 用户服务重启后pgrep fcitx5有输出加输入法组fcitx5-configtool英文在前、中文在后全场景验证浏览器/终端/编辑器各打一次三处都能出候选框验证这一步值得多说一句不要只在浏览器里试。浏览器尤其 Firefox的输入法接入路径和应用商店里的普通应用不一样浏览器能打不代表终端能打。我习惯至少测三处一个 GTK 应用设置界面或文本编辑器、一个终端、一个 Electron 应用。三处都过才算真的配好了。最后分享一个我在实际操作中的体会输入法出问题时人的第一反应是再改点配置试试但这类问题里真正由配置引起的其实不到三成大头在环境变量没生效、frontend 包缺失、应用走了不同的输入协议这三类。所以与其改配置不如先用fcitx5-diagnose把当前状态看清楚再决定动哪一层。顺序反了只会在错误的配置上叠加更多错误最后连原始状态都回不去。