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 自带一个名为“输入法面板”的小部件,它可以充当 IBus 的前端,并可能提供更好的集成体验。
- 要使用输入法面板启动 IBus,请在上面的 ibus-daemon 命令中使用
--panel=/usr/lib/kimpanel-ibus-panel
选项(如果面板没有出现,您可以尝试使用--desktop=kde
选项)。要配置输入法面板小部件,请参阅 KDE UserBase Wiki 和 KDE#小部件 了解详情。 - ibus-autostart-kimpanelAUR 软件包提供了一个可以自动启动它的自启动条目。
- 要使用输入法面板启动 IBus,请在上面的 ibus-daemon 命令中使用
配置
请参阅Locale 获取有关向您的系统添加非拉丁语言支持的帮助。
请参阅字体#非拉丁文字 获取可用的非拉丁字体的非详尽列表。
GNOME
GNOME 默认使用 IBus,因此您可以直接转到设置 > 键盘 > 输入源,并为您选择的语言添加键盘布局。
一些非拉丁语言(例如简体中文)需要启用 GNOME Tweaks 中的显示扩展输入源选项。
其他桌面环境
要启动 IBus 首选项窗口,您可以
- 右键单击其托盘图标并选择首选项,或
- 查找并启动 GUI 应用程序“IBus 首选项”,或
- 在终端中运行命令
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 字符的代码,并按 Space
或 Enter
键渲染并提交它。
托盘图标颜色
默认情况下,IBus 使用深蓝色来显示当前活动布局的语言符号(例如 EN)。颜色值存储在 gsettings 模式中,因此如果您想更改它,可以运行以下命令
$ 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 模式中,因此如果您想更改它,可以运行以下命令
$ 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 模式中,因此您仍然可以通过直接编辑该字符串来使用此类组合
$ 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 版本和配置,则可能未在设置的全局 python 版本上安装 ibus
依赖项。如果全局版本不是系统管理的版本(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 守护进程就足以解决此问题。