跳转至内容

IBus

来自 ArchWiki
(从 Ibus 重定向而来)

IBus (Intelligent Input Bus) 是一个输入法框架,一种可以轻松切换不同键盘布局的应用程序。当与输入法编辑器结合使用时,它还允许使用本身不支持的键盘输入非拉丁字符。

安装

安装 ibus 包。

此外,请参阅 Input method#List of available input method editors 以获取可用输入法编辑器的完整列表。

注意 GNOME 自 3.6 版本起集成了IBus 并默认使用它,因此如果您将其作为您的桌面环境,则可以跳过#Integration 部分,直接进入#Configuration 部分。

集成

至少设置以下环境变量

/etc/environment
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

要使 IBus 在用户登录时启动,请创建一个自启动条目,并使用以下命令

ibus-daemon -rxRd

下次登录时 IBus 将随用户会话一起启动。

提示
  • ibus-autostartAUR 包提供了一个可以自动启动此功能的自启动条目。
  • ibus-daemonAUR 包提供了一个 ibus@$DISPLAY.service,可以启用以实现此目的。
  • KDE 配备了一个名为 Input Method Panel 的等离子体插件,它可以作为 IBus 的前端,并可能提供更好的集成体验。
    • 要使用 Input Method Panel 启动 IBus,请在上述 ibus-daemon 命令中使用 --panel=/usr/lib/kimpanel-ibus-panel 选项(如果面板未出现,您可以尝试使用 --desktop=kde 选项)。要配置 Input Method Panel 小部件,请参阅 KDE UserBase WikiKDE#Widgets 以获取详细信息。
    • ibus-autostart-kimpanelAUR 包提供了一个可以自动启动此功能的自启动条目。

配置

有关向系统添加非拉丁语言支持的帮助,请参阅 区域设置

有关可用非拉丁字体列表(不详尽),请参阅 字体#非拉丁脚本

GNOME

GNOME 默认使用 IBus,因此您只需转到设置 > 键盘 > 输入源并为您选择的语言添加键盘布局即可。

一些非拉丁语言(例如简体中文)需要在 GNOME Tweaks 中启用显示扩展输入源选项。

其他桌面环境

提示 对于Wayland 环境,请参阅:WaylandDesktop

要启动 IBus 首选项窗口,您可以

  • 右键单击其托盘图标并选择首选项,或
  • 查找并启动 GUI 应用程序 IBus Preferences,或
  • 在终端中运行命令 ibus-setup

这里的重点是下一个输入法的键盘快捷键(这是您想要使用的,而不是桌面环境提供的默认快捷键)以及输入法选项卡,您可以在其中添加或删除不同的键盘布局(而不是在桌面环境的默认布局管理器中执行此操作)。

技巧与提示

Emoji 输入

IBus 支持 emoji 图标的输入。键入 Super+.,您会看到输入提示变为带下划线的 e 字符。然后您可以键入您想要的 emoji 的符号或名称(例如 :)face)并按 Space 渲染它。如果您对结果满意,请按 Enter 提交并退出 emoji 输入模式,或者再次按 Space 打开一个对话框,您可以在其中进一步自定义所需的 emoji。

有关更多信息,请参阅 ibus-emoji(7)

Unicode 输入

IBus 支持复杂 Unicode 字符的输入。键入 Ctrl+Shift+u,您会看到输入提示变为带下划线的 u 字符。然后您可以键入您想要的 Unicode 字符的代码,然后按 SpaceEnter 渲染并提交它。

托盘图标颜色

默认情况下,IBus 使用深蓝色来显示当前活动布局的语言符号(例如 EN)。颜色值存储在 gsettings schema 中,因此如果您想更改它,可以运行以下命令

$ gsettings set org.freedesktop.ibus.panel xkb-icon-rgba 'COLOR'

字符串 'COLOR' 应符合以下指南

RGBA 值可以是

  1. X11 中的颜色名称,
  2. 形式为 '#rrggbb' 的十六进制值,其中 'r'、'g' 和 'b' 是红色、绿色和蓝色的十六进制数字,
  3. 形式为 'rgb(r,g,b)' 的 RGB 颜色,或
  4. 形式为 'rgba(r,g,b,a)' 的 RGBA 颜色,其中 'r'、'g' 和 'b' 是 0 到 255 范围内的整数或 0% 到 100% 范围内的百分比值,'a' 是 0 到 1 范围内的浮点值,表示 alpha。
提示 您还可以使用 dconf-editor 以更用户友好的方式编辑 gsettings schema。
注意 这不适用于GNOME 或使用 KDE Input Method Panel 的KDE,因为它们都为 IBus 提供了自己的图标。

布局切换器显示延迟

按下下一个输入法热键时,IBus 会显示一个小型对话框来表示布局切换。默认情况下,此对话框在按下按键后 400 毫秒显示,但用户可以更改此值,一些有趣的选项包括 '0' 以立即显示对话框而无需任何延迟,或一个负值(例如 '-1')以在不显示窗口的情况下切换布局(如果您只使用两种布局并且只需在它们之间切换,这可能很有用)。

该值存储在 gsettings schema 中,因此如果您想更改它,可以运行以下命令

$ gsettings set org.freedesktop.ibus.general switcher-delay-time 'VALUE'

要显示当前存储的值,请运行以下命令

$ gsettings get org.freedesktop.ibus.general switcher-delay-time

字符串 'VALUE' 应符合以下指南

设置显示 IME 切换器窗口的弹出延迟(以毫秒为单位)。默认值为 400。

  • 0 = 立即显示窗口。
  • 0 < 延迟毫秒。
  • 0 > 不显示窗口并切换上一个/下一个引擎。
提示 您还可以使用 dconf-editor 以更用户友好的方式编辑 gsettings schema。

使用修饰键组合切换布局

出于某种原因,IBus 首选项 GUI 不允许您使用一部分修饰键组合(例如 Alt+Shift_R)作为布局切换热键。但是,IBus 将热键作为字符串存储在 gsettings schema 中,因此您仍然可以通过直接编辑该字符串来使用这些组合

$ gsettings set org.freedesktop.ibus.general.hotkey triggers "['VALUE']"

字符串 'VALUE' 应为任何有效的修饰键组合,并且格式应为 IBus 可识别的格式,例如 <Alt>Shift_R

提示 您还可以使用 dconf-editor 以更用户友好的方式编辑 gsettings schema。

rxvt-unicode

为了让 rxvt-unicode 与 IBus 正确配合,您可能需要将以下行添加到 ~/.Xresources

URxvt.inputMethod: ibus
URxvt.preeditType: OverTheSpot

故障排除

因 pyenv 导致的包缺失

如果使用 pyenv 来管理 Python 版本和配置,ibus 的依赖项可能未安装在设置的全局 Python 版本中。如果全局版本不是系统管理的版本(gi 等 IBus 依赖的包安装在该版本上),则可能发生这种情况。这可能导致 IBus 设置运行但无法正常工作(IBus 出现在系统托盘中,但无法打开首选项等)。一种验证此问题的方法是尝试运行 ibus-setup 并查看是否出现任何缺失的依赖项错误。

要解决此问题,请将您的 pyenv 全局版本更改为系统版本

pyenv global system

重启后设置丢失

如果您发现您的设置在重启后持续丢失(输入法被恢复),您可以确认设置为预加载的引擎以及它们的加载顺序

$ gsettings get org.freedesktop.ibus.general preload-engines
['xkb:us::eng']
$ gsettings get org.freedesktop.ibus.general engines-order
['xkb:us::eng', 'anthy']

为确保在此情况下加载 anthy,请将其添加到 org.freedesktop.ibus.preload-engines 列表中

$ gsettings set org.freedesktop.ibus.general preload-engines "['xkb:us::eng', 'anthy']"

您的更改应立即生效,并且应在重启后保持不变。

Ibus IME 包仅输入键盘的本地字符集

一个可能的解决方法是将 GTK_IM_MODULE 环境变量设置为 xim 而不是 ibus

/etc/environment
GTK_IM_MODULE=xim
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

按住按键后按键“粘滞”

在某些游戏中,特别是通过 Proton 运行的游戏,长时间按住一个按键可能会导致该按键“粘滞”(持续被注册为按下状态),直到再次按下并释放。有限的测试 [1] 发现,仅仅终止 IBus 守护进程就足以解决此问题。

参见