从Fcitx4升级至Fcitx5

从Fcitx4升级至Fcitx5#

个人数据存放#

几乎所有的fcitx4数据都存储在 ~/.config/fcitx 下。

对于fcitx5,路径更接近XDG标准, ~/.local/share/fcitx5~/.config/fcitx5

其中,Fcitx 4的Rime数据位于 ~/.config/fcitx/rime , Fcitx 5的Rime数据位于 ~/.local/share/fcitx5/rime

安装什么软件包#

发行版可能有自己的方式来拆分包,我将只讨论它们如何在源包上映射。

Fcitx4Fcitx5
fcitxfcitx5, fcitx5-gtk (Gtk IM Module), fcitx5-qt (Qt IM Module), fcitx5-chinese-addons (Pinyin & Table)
fcitx-qt5fcitx5-qt
fcitx-configtoolfcitx5-configtool
kcm-fcitxfcitx5-configtool
fcitx-anthyfcitx5-anthy
fcitx-chewingfcitx5-chewing
fcitx-cloudpinyinfcitx5-chinese-addons
fcitx-fbtermfcitx5-fbterm
fcitx-hangulfcitx5-hangul
fcitx-kkcfcitx5-kkc
fcitx-libpinyin使用 fcitx5-chinese-addons 替代
fcitx-m17nfcitx5-m17n
fcitx-rimefcitx5-rime
fcitx-sayurafcitx5-sayura
fcitx-skkfcitx5-skk
fcitx-sunpinyin使用 fcitx5-chinese-addons代替
fcitx-table-extrafcitx5-table-extra
fcitx-table-otherfcitx5-table-other
fcitx-unikeyfcitx5-unikey
fcitx-zhuyinfcitx5-zhuyin

可以保留旧数据#

您需要重新配置输入法列表,不支持迁移配置文件。

Fcitx5输入法相关环境变量

Fcitx5输入法相关环境变量#

这个页面介绍了以下环境变量的含义。你不需要理解他们来使用Fcitx,但是以下内容可能会在你遇到问题是帮助你检查哪里出了问题。

XMODIFIERS#

这个变量仅影响 XIM。格式为

XMODIFIERS=@im=<xim 服务器名称>

当 XIM 服务器启动时,他会注册一个应当在这里使用的名称。这个名称不能和其他 XIM 服务器相同,因此你无法在同一个 X 服务器下运行两个 Fcitx。通常情况下,Fcitx 的 XIM 服务器名称为 fcitx。

因此对于 Fcitx 来说这个设置应当为

XMODIFIERS=@im=fcitx

在非 CJK 语言环境中,如果这个环境变量没有设置,一些程序中 XIM 将无法工作,这意味这你最好总是设置了这个环境变量。并且 XIM 也需要你有正确的语言环境,这意味着你的语言必须在下面的命令的输出当中

locale -a

你可以通过以下命令检查你当前的语言环境

locale

为了使用 XIM,你的语言不能设置为 C 或者 POSIX。

GTK_IM_MODULE#

这会覆盖系统的gtk输入法模块的自动选择。在默认情况下,gtk按照语言选择对应的输入法模块。Fcitx声明它支持 “zh:ja:ko:*"。这些信息将被记录在一个文件当中,在大多数的 linux 系统中,这个文件为 /etc/gtk-2.0/gtk.immodules 和 /etc/gtk-3.0/gtk.immodules,有时会以 -32 或者 -64 结尾。

在 Debian 进行了多架构的迁移之后,将使用不同的文件。对应文件将为 /usr/lib/<架构>/gtk-{2,3}.0/gtk.immodules }} 你需要使用

gtk-query-immodules-2.0 > <gtk-2.0 的输入法模块文件>

更新 gtk2 的文件,

或者如果你的 gtk2 版本新于 2.24.20,则应当使用

gtk-query-immodules-2.0 --update-cache

就像 gtk3 一样。

以及

gtk-query-immodules-3.0 --update-cache

更新 gtk3 的文件。

否则新的输入法模块将无法被识别。

如果由 GTK_IM_MODULE 指定的输入法模块没有被找到,gtk 将会回退到自动选择的方法。

FCITX5输入法迁移通告

FCITX5输入法迁移通告#

来自byang@debian.org发布于debian-chinese-gb@lists.debian.org的最新消息

各位好,

参照 fcitx 上游的活动记录 [1],原有的 fcitx 4.x 输入法框架的所有仓库已于 2024年5月归档(archived)。可以看出 fcitx4 输入法框架在数年的过渡期之后 其上游的维护与支持已告停止。

考虑到上游的开发重心,以及 fcitx 4.x 对 wayland 协议因设计原因无法运行于 wayland 环境下的情况,我建议现有 fcitx4 用户尽早测试换用 fcitx5, 并择机从 fcitx4 迁移到 fcitx5。

考虑到开发和支持周期问题,下一个 Debian Stable (Debian 13, Trixie) 版本中 仍然会保留所有 fcitx4 的相关软件包。但随着情况的后续发展,fcitx4 的相关 软件包可能最早会在 Ubuntu 26.04 LTS 发布日期后被逐步废弃或移除。

下面是一些常见问题:

有通用的 fcitx4 -> fcitx5 迁移文档吗?#

-> Debian 中可以参考 https://wiki.debian.org/I18n/Fcitx5 这份维基文档。 -> 如需阅读上游的文档,请访问 https://fcitx-im.org/wiki/Fcitx_5/zh-cn 这里。

fcitx5 相较于 fcitx4 移除了哪些输入法支持?#

-> 根据 https://fcitx-im.org/wiki/Upgrade_from_Fcitx_4 ,移除的输入法大致如下:

-> fcitx-googlepinyin -> fcitx-sunpinyin -> fcitx-libpinyin -> 这三个输入法的用户应转用 fcitx5-chinese-addons。

GNOME 3.6 之后的注意事项

GNOME 3.6 之后的注意事项#

  1. libibus 可能编译为 gnome 的依赖项,不要尝试删除它。如果你正在使用 gentoo,请尝试以下步骤来删除 ibus: 在make.conf中添加-i18n使用标记,然后运行:
emerge --update --newuse --deep @world --ask
  • 使用 -nls use 标志重建 gnome-shell
  • 删除app-i18n/ibus:
emerge -cav app-i18n/ibus
  1. 卸载系统上包含 ibus-daemon 的软件包。

或者如果你想保持 ibus 的安装(如果你想使用 fcitx,你根本不需要 ibus,对于较旧的 gnome 3.6,你也可能会遇到这个错误,所以你最好删除它),运行:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false 

对当前用户生效。

Or,

  1. 如果您使用的是 fedora,请确保使用 imsettings 选择 Fcitx

  2. 如果 set GTK_IM_MODULE 不起作用,请尝试运行以下命令。

gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"

重新登录。

https://fcitx-im.org/wiki/Note_for_GNOME_Later_than_3.6

Fcitx5常见问题

Fcitx5常见问题#

当你抱怨输入法无法正常工作前,请先阅读这个页面。

从 4.2.7 开始,Fcitx 提供了一个 fcitx-diagnose 的命令,它可以检测一些常见的问题并且给出一些建议。

使用 Ctrl + Space 时无法激活 Fcitx#

检查你要输入文字的应用程序。

Wayland#

参考 在Wayland 上使用 fcitx5

这是唯一一个有问题的程序吗?#

最可能的原因是某个快捷键占用了 Ctrl Space,请修改另一个快捷键并重试。这常见于编辑器中,因为很多集成开发环境默认使用 Ctrl+Space 作为补全的快捷键。

所有 Gtk 程序都有问题?#

  • 请打开一个传统意义上的Gtk程序(所谓传统,就是它不应该是Firefox,Libreoffice这种仅仅是是使用Gtk样式作为界面的程序)。Gedit是一个不错的选择。右键点击输入框,将会弹出一个“输入法”菜单,请确认“Fcitx”被选中。
  • 如果菜单中确实有Fcitx,但是还是无法正常工作,请先尝试重新启动Fcitx,如果这次就可以工作了,那么请检查你的DBus设置,或者延长Fcitx的启动时间。如果你使用自定义的启动脚本,你可以参考配置 (其他)
  • 如果Fcitx没有默认选中,那么请先尝试选中它,并且立刻试试可否输入。如果不行,请参见上面一条。为了永久性的修复这个问题(默认选中 Fcitx ),请阅读安装和配置中的配置部分。 如果没有 Fcitx这项,那么请首先检查你的安装,你所需要的包名包含了fcitx和gtk。如果你是从源码编译的Fcitx,请确认你启用了GTK2,GTK3的输入法模块选项。如果你确认这点的话,请阅读输入法相关的环境变量中的如何更新Gtk的缓存文件。 如果你正在使用 Ubuntu,并且刚刚升级到 12.04,或者发生了什么不好的事情 (由于打包者的疏忽,或者有问题的包管理器无法按照正确顺序更新包,例如 pacman) 你可能会注意到 gtk.immodules 相关的文件并未在升级时正确生成。试试卸载fcitx-frontend-gtk2, fcitx-frontend-gtk3 或者你发行版对应的包,然后重新安装这两个包来触发文件的生成。然后重新检查输入法菜单里面是否有“Fcitx”。

所有Qt程序都有问题?#

  • 运行qtconfig (名称可能根据你的发行版有所不同,他可能是 qtconfig-qt4 ),选择第三个标签,确认fcitx是在默认输入法组合框中。如果没有,请检查你的安装。
  • 以上解决方案也可以类似解决XIM的问题,但我们强烈建议你使用输入法模块。参见输入法相关环境变量

Telegram Desktop#

一些发行版的telegram desktop使用了qt6。这时候要确保系统上安装了Qt6的输入法模块。(对于fcitx4而言,在archlinux上要安装fcitx-qt6软件包)

Chromium或者任何基于chromium的浏览器(例如,Microsoft Edge)#

对于在 X11 下运行的 Chromium,如果使用没有设置 DBUS_SESSION_BUS_ADDRESS 选项的 startx 启动图形用户界面,可能会遇到 这个问题,它会导致基于 Chromium 的浏览器无法正确使用 dbus。为了解决这种情况,可以这么做:

  1. 在 ~/.xinitrc 中自己导出 DBUS_SESSION_BUS_ADDRESS(或者如果您使用的是基于 debian 的系统,则更改为使用 ~/.xsession)。
  2. 或者使用像sddm、gdm、lightdm这样的显示管理器替代startx。

对于在 wayland 下原生运行的 Chromium,唯一支持的原生 wayland 输入法协议是text-input-v1,只有 weston 支持。或者,也可以使用 Gtk4 的 im 模块,需要使用以下标志 (—enable-features=UseOzonePlatform –ozone-platform=wayland –gtk-version=4) 来使其启用 Gtk im 模块,但是除非使用 kimpanel + GNOME,否则在光标位置弹出候选词窗口的功能就完全坏掉了。

安装Fcitx5

安装Fcitx5#

Fcitx 软件包通常包括两部分部分:主程序,作为应用程序的输入法模块和插件(通常它们都是输入法引擎)。

从Linux发行版安装Fcitx 5#

您需要从自己的软件包列表中搜索指定的Fcitx包。Fcitx 5软件包的名称中通常包含“fcitx5”。

截至今天,除了一些滚动发行版,fcitx5尚未在发行版存储库中普遍可用。

下面是一些在您使用的发行版中搜索 Fcitx5 软件包的示例。 您还可以使用桌面提供的 GUI 软件中心,例如 gnome-software(GNOME)或Plasma-discover(KDE)发现。

yum search fcitx5 # CentOS
dnf search fcitx5 # Fedora
pacman -Ss fcitx5 # Archlinux
zypper search fcitx5 # OpenSUSE
apt-cache search fcitx5 # Debian/Ubuntu

或者pkgs.org提供一个在不同发行版中搜索软件包的简单方法。 请注意可能有一些版本为0.0~git这样的包,这种版本是一些相当老的版本,比最老的Fcitx5稳定发布版本还要老。通常不建议使用这种版本的Fcitx5.

pkgs.org 也会提供针对不同发行版的特定安装命令。

一个基本的fcitx5安装包括:

  • fcitx5, 主程序
  • fcitx5-gtk, fcitx5-qt, 针对最受欢迎的几种UI开发工具包的输入法模块。
  • fcitx5-configtool, GUI配置程序。
  • 对于不同语言,有许多的输入法引擎

一些额外的插件和主题支持:

  • fcitx5-lua, 提供lua脚本支持
  • fcitx5-material-color, 一个Fcitx5漂亮主题的合集

从Flatpak安装Fcitx5#

Flatpak 是一个用于Linux系统的软件分发和包管理工具软件。有两个flatpak仓库提供了fcitx5软件包,一个是flathub,另一个是fcitx本身的不稳定仓库。

截止今日,我们仍然在向flathub推送fcitx5软件包。flathub上现在仅仅只有fcitx5主程序,中文输入法,注音输入法,以及Mozc输入法。

您需要先对flatpak的软件仓库进行配置,可以通过执行下面的命令,或者在图形界面软件上操作完成。

# 添加 flatub 仓库, fcitx5-unstable 也会依赖一些这个仓库中的运行时软件包。
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# 可选部分: 如果你想要使用不稳定版本的fcitx5,也可以添加 fcitx5 非稳定仓库。
flatpak remote-add --user --if-not-exists fcitx5-unstable https://flatpak.fcitx-im.org/unstable-repo/fcitx5-unstable.flatpakrepo

从flatpak安装fcitx

输入法引擎

输入法引擎#

配置#

安装新的输入法包后,从命令或托盘菜单启动配置工具 fcitx5-configtool。应该有一个带有按钮的消息,允许重新加载或重新启动 Fcitx 5 以使新的输入法引擎准备好使用。 这仅适用于非 flatpak Fcitx 5。

对于旧的 flatpak 版本,则需要手动重启。基于 Flatpak 的 fcitx 5 中的重启功能不会重新加载沙箱,因此新的扩展包仍然不可见。必须完全退出 Fcitx 并启动一个新实例以使其加载新的 flatpak 扩展包。

从 5.0.16 开始,“重启”将能够启动一个新的更新的 flatpak 版本,就像普通版本一样。

中文#

日语#

韩文#

越南语#

泰语#

僧伽罗语#

多语言#

如果上面没有列出你想要的,请参考以下链接

Fcitx5配置工具

Fcitx5配置工具#

fcitx5-configtool 是一个基于 Qt 的 GUI 工具,为 Fcitx 5 提供用户友好的配置界面。它有两种不同的实现,一种是基于 QWidget 的,可以通过 fcitx5-config-qt 访问,或者基于KCM/Kirigami2的, 可以在 Plasma 系统设置中找到它。尽管它们具有不同的用户界面,但功能是相同的。

Fcitx 5 附带的命令 fcitx5-configtool 实际上是一个脚本,它将自动检测您的桌面环境并启动 fcitx5-configtool 包中相应的实现。

尽管 Fcitx 5 会根据您的系统区域设置和键盘布局进行一些基本配置,但您可能仍然希望通过 fcitx5-configtool 检查并添加或删除输入法以满足您自己的需求。 检查 输入法引擎可用于 Fcitx 5 的输入法引擎。

常见用法#

添加新的输入法#

在 Kirigami 2 版本中,点击右下角的“添加输入法…”按钮,选择要添加的输入法。 在 Qt Widgets 版本中,从右侧面板中单击输入法,然后双击,或单击中间栏中的添加按钮(向左箭头)。

移除输入法#

在 Kirigami 2 版本中,单击输入法项末尾的删除按钮。 在 Qt Widgets 版本中,从左侧面板中单击输入法,然后双击,或单击中间列中的删除按钮(向右箭头)。

重新排序输入法#

在 Kirigami 2 版本中,用左侧的手柄拖放项目。 在 Qt Widgets 版本中,单击左侧面板中的输入法,然后单击中间栏中的上移或下移按钮。

更改输入法切换快捷键#

转到全局设置并检查那里的快捷键配置。

如果您想要更多自定义功能,您可能还需要检查“输入法选择器”插件。

更改候选窗口字体大小#

如果您使用 Kimpanel,则需要从 Kimpanel 自己的配置 UI 中找到字体选项,该选项无法从 fcitx5-configtool 访问。 如果您使用的是经典 UI,您可以转到插件选项卡或单击“配置插件…”,然后单击“经典用户界面”的配置按钮。