Archlinux + Gnome 中文输入法解决方案:Fcitx5 + Rime Ice 雾凇拼音

本文将为你介绍如何在 Archlinux + Gnome 系统中配置中文输入法,使用 Fcitx5 和 Rime Ice 雾凇拼音。同时也会介绍一些细节处理以及外观客制化。

1 安装 Fcitx 5

首先需要安装 Fcitx 5 输入法框架:

bash
yay -S fcitx5-im

1.1 配置环境变量

依据 ArchWiki 的指导,我们需要将以下环境变量添加到 /etc/environment 中:

cpp
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

2 安装 Rime

安装 Rime 输入法:

bash
yay -S fcitx5-rime

3 安装雾凇拼音

安装 Rime 的中文输入方案雾凇拼音:

bash
yay -S rime-ice-git

3.1 配置以补丁模式启动

依据 AUR 仓库的指导,将以下内容写入 $HOME/.local/share/fcitx5/rime/default.custom.yaml

cpp
patch:
  # 仅使用「雾凇拼音」的默认配置,配置此行即可
  __include: rime_ice_suggestion:/
  # 以下可根据自己所需进行自定义,仅做参考。
  # 仅针对「雾凇输入法」的定制条目,请在 rime_ice.custom.yaml 中配置
  __patch:
    # 以词定字(上屏当前词组的第一个或最后一个字)
    key_binder/+:
      select_first_character: "bracketleft" # 即 [
      select_last_character: "bracketright" # 即 ]

4 细节处理

4.1 候选词数量

本配置下的候选词数量由 Rime 控制,而非 Ficitx。应在 Rime 的配置中增加 menu/page_size 项目,例如:

cpp
patch:
  "menu/page_size": 9

  # 仅使用「雾凇拼音」的默认配置,配置此行即可
  __include: rime_ice_suggestion:/
  # 以下可根据自己所需进行自定义,仅做参考。
  # 仅针对「雾凇输入法」的定制条目,请在 rime_ice.custom.yaml 中配置
  __patch:
    # 以词定字(上屏当前词组的第一个或最后一个字)
    key_binder/+:
      select_first_character: "bracketleft" # 即 [
      select_last_character: "bracketright" # 即 ]

4.2 客制化外观

4.2.1 停用 Gnome 插件

kimpanel (Input Method Panel) 是 Gnome 中常用的输入法统一接口插件,如果你希望用 Fcitx 客制化外观,首先应当关闭这个插件。

4.2.2 启用外观

以我的皮肤配置为例,你可以安装一个外观配置包:

bash
yay -S fcitx5-skin-materia-yanli

然后在 Fcitx 的设置中选取这个外观配置即可。

4.2.3 Emoji 字体配置

客制化外观最主要的目的其实是为了配置一个能够显示 Emoji 的字体,因为多数字体本身并没有 Emoji 的支持,也就无法显示 Emoji 图标。而 Emoji 是雾凇拼音中很常见的候选词。

为实现这个目的,我们将使用字体 alias 来客制化无衬线字体 sans serif(同样的方法也适用于配置其他字体)

Font configuration - ArchWiki

我的配置以思源黑体和 Noto Color Emoji 为例,安装对应的字体:

cpp
yay -S adobe-source-han-sans-cn-fonts noto-fonts-emoji

然后编辑字体配置 /etc/fonts/local.conf

cpp
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>sans-serif</family>
    <prefer>
        <family>Source Han Sans CN</family>
        <family>Noto Color Emoji</family>
    </prefer>
  </alias>
  <alias>
    <family>sans</family>
    <prefer><family>sans-serif</family></prefer>
  </alias>
</fontconfig>

这样,字体 alias sans-serif 就会指向 Source Han Sans CN,未找到的字符则 fallback 到 Noto Color Emoji,而 sans 则指向 sans-serif。

可以使用 fc-match 检查一下:

cpp
❯ fc-match sans
SourceHanSansCN-Regular.otf: "Source Han Sans CN" "Regular"

最后确认 Fcitx 的设置中使用 Sans Serif 字体即可。