IBus
IBus(Intelligent Input Bus)是一个输入法框架,是一种应用程序,可以轻松地在不同的键盘布局之间切换。与输入法编辑器结合使用时,它还允许使用不支持拉丁字符的键盘输入拉丁字符。
安装
此外,请参阅 输入法#可用输入法编辑器列表 以获取可用输入法编辑器的完整列表。
集成
至少设置以下环境变量
/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 的 plasmoid,它可以作为 IBus 的前端,并可能提供更好的集成体验。
- 要使用 Input Method Panel 启动 IBus,请在上述 ibus-daemon 命令中使用
--panel=/usr/lib/kimpanel-ibus-panel选项(如果面板未出现,您可以尝试改用--desktop=kde选项)。要配置 Input Method Panel 小部件,请参阅 KDE 用户百科 和 KDE#小部件 以获取详细信息。 - 名为 ibus-autostart-kimpanelAUR 的包提供了一个可以自动启动此功能的自启动条目。
- 要使用 Input Method Panel 启动 IBus,请在上述 ibus-daemon 命令中使用
配置
有关向系统添加非拉丁语言支持的帮助,请参阅 区域设置。
有关可用非拉丁字体列表(不详尽),请参阅 字体#非拉丁脚本。
GNOME
GNOME 默认使用 IBus,因此您只需转到“设置 > 键盘 > 输入源”并为您选择的语言添加一个键盘布局即可。
某些非拉丁语言(例如简体中文)需要在 GNOME Tweaks 中启用“显示扩展输入源”选项。
其他桌面环境
要启动 IBus 首选项窗口,您可以
- 右键单击其托盘图标并选择“首选项”,或
- 查找并启动 GUI 应用程序 IBus Preferences,或
- 在终端中运行命令
ibus-setup
这里需要关注的是“下一个输入法”的键盘快捷键(这是您希望使用的,而不是桌面环境提供的默认快捷键)以及“输入法”选项卡,您可以在其中添加或删除不同的键盘布局(您应该在这里进行此操作,而不是在桌面环境的默认布局管理器中)。
技巧与提示
表情符号输入
IBus 支持表情符号的输入。键入 Super+.,您将看到输入提示变为带下划线的 e 字符。然后您可以键入所需的表情符号的符号或名称(例如 :) 或 face),然后按 Space 进行渲染。如果您对结果满意,请按 Enter 提交并退出表情符号输入模式,或者再次按 Space 打开一个对话框,您可以在其中进一步自定义所需的表情符号。
有关更多信息,请参阅 ibus-emoji(7)。
Unicode 输入
IBus 支持复杂 Unicode 字符的输入。键入 Ctrl+Shift+u,您将看到输入提示变为带下划线的 u 字符。然后您可以键入所需的 Unicode 字符的代码,并按 Space 或 Enter 进行渲染和提交。
托盘图标颜色
默认情况下,IBus 使用深蓝色显示当前活动布局的语言符号(例如 EN)。颜色值存储在 gsettings schema 中,因此如果您想更改它,可以运行以下命令
$ gsettings set org.freedesktop.ibus.panel xkb-icon-rgba 'COLOR'
字符串 'COLOR' 应符合以下准则
RGBA 值可以是
- X11 的颜色名称,
- 形式为 '#rrggbb' 的十六进制值,其中 'r'、'g' 和 'b' 是红、绿、蓝的十六进制数字,
- 形式为 'rgb(r,g,b)' 的 RGB 颜色,或者
- 形式为 'rgba(r,g,b,a)' 的 RGBA 颜色,其中 'r'、'g' 和 'b' 是 0 到 255 范围内的整数,或者 0% 到 100% 范围内的百分比值,而 'a' 是 0 到 1 范围内的浮点值,表示 alpha(不透明度)。
布局切换器显示延迟
按下“下一个输入法”热键时,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 > 不显示窗口并切换上/下一个引擎。
使用修饰键组合切换布局
出于某种原因,IBus 首选项 GUI 不允许您使用一部分修饰键组合(例如 Alt+Shift_R)作为布局切换热键。但是,IBus 将热键以字符串形式存储在 gsettings schema 中,因此您仍然可以通过直接编辑该字符串来使用此类组合
$ gsettings set org.freedesktop.ibus.general.hotkey triggers "['VALUE']"
字符串 'VALUE' 应为 IBus 能够识别格式的任何有效修饰键组合,例如 <Alt>Shift_R。
rxvt-unicode
要使 rxvt-unicode 与 IBus 正确工作,您可能需要将以下行添加到 ~/.Xresources
URxvt.inputMethod: ibus URxvt.preeditType: OverTheSpot
故障排除
因 pyenv 导致的缺失包
如果使用 pyenv 管理 Python 版本和配置,ibus 的依赖项可能未安装在设定的全局 Python 版本上。当全局版本不是系统管理版本(ibus 依赖的 gi 等包安装在此版本上)时,可能会发生这种情况。这可能导致 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 守护进程就足以解决此问题。