我用特里克尔GNU/Linux 7.0 LTS 和 GNOME 3倒叙环境。
我听说过三种不同的输入法。ibus
,xim
和uim
。它似乎ibus
已预装在我的系统上。
$ cat trisquel_7.0_i686.iso.manifest | grep ibus
gir1.2-ibus-1.0 1.5.5-1ubuntu3
ibus 1.5.5-1ubuntu3
ibus-gtk:i386 1.5.5-1ubuntu3
ibus-m17n 1.3.4-3ubuntu1
ibus-table 1.5.0.is.1.5.0.20130419-2
libibus-1.0-5:i386 1.5.5-1ubuntu3
libusb-0.1-4:i386 2:0.1.12-23.3ubuntu1
libusb-1.0-0:i386 2:1.0.17-1ubuntu2
libusbmuxd2 1.0.8-2ubuntu1
libustr-1.0-1:i386 1.0.4-3ubuntu2
当面对这问题 我了解了如何安装uim
和设置GTK_IM_MODULE="uim"
at ~/.profile
。最近我从 中删除uim
并删除了GTK_IM_MODULE="uim"
行~/.profile
。但要克服这bug,我现在打算去掉ibus
。
无需安装任何额外的输入法(例如 Trisquel 的全新安装),echo $GTK_IM_MODULE
输出xim
所以,我很困惑,因为考虑默认输入法是ibus
,然后为什么$GTK_IM_MODULE
说xim
?
我还可以吗apt-get remove ibus
?或者我应该uim
先安装然后删除ibus
?我还想知道当前正在使用哪种输入法ibus
?xim
设置输入法的正确方法是什么(即是GTK_IM_MODULE="uim"
)~/.profile
?
另外,我发现了一种gsettings方案:
$ gsettings get org.gnome.desktop.interface gtk-im-module
'gtk-im-context-simple'
简单/广泛地我需要帮助来理解安装/删除和设置不同的输入法:
- 我如何知道当前使用的是哪种输入法?
- 如何安装和设置不同的输入法? (我应该删除另一个吗?)
答案1
整个 X11 输入堆栈一团糟。首先,如果您只是输入 XKB 键盘布局定义的拉丁字符或多字符组合序列,则不需要任何特殊的输入法框架。严格来说,任何多键序列(例如死键)都需要非常简单的输入方法。但它们是由 libx11/XKB 提供的,无需任何额外的 IM 框架即可工作。因此,如果您不需要输入中文或日文等语言,则完全可以卸载所有 ibus、uim、fcitx 或任何您拥有的输入法。
正如您已经说过的,Gnome 将 ibus 作为默认输入法,当时并不是每个人都对这一决定感到高兴。有很多人更喜欢 fcitx(这似乎是大多数 KDE 发行版的默认设置)而不是 ibus。此外,ibus 中显然缺少 fcitx 所具有的几个功能,至少在现在已经过时了绿网文章于 2012 年发布,例如语言支持不完整(主要是日语、简体中文、繁体中文)或性能问题。由于我不会说任何需要特殊 IM 框架的东方语言,因此我无法在这场辩论中添加任何内容,而且很可能大多数问题已经得到解决。我主要注意到,从用户界面的角度来看,ibus 与非 GTK 桌面环境的集成不太好,但对于基于 GTK 的 DE 来说可能还不错。
然而,ibus 是 Gnome 的默认 IM 这一事实并不意味着它是强制性的。您可以使用您喜欢的任何其他输入法,也可以根本不使用。 IM 配置是通过环境变量完成的。但除了当你只使用 GTK+ 应用程序时(我对此表示怀疑),你应该设置的不仅仅是GTK_IM_MODULE
.设置输入法的正确方法是:
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"
如果是 fcitx 或
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"
如果是 ibus。 uim 的工作方式相同。如果您想明确禁用任何输入法,请使用以下设置:
export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"
空字符串也可以。
您可以在系统范围内设置这些变量/etc/profile
(或分别在 内部的专用文件/etc/profile.d
)或本地~/.xprofile
.将其设置为~/.bashrc
或~/.profile
不会确保在使用图形登录管理器(例如 GDM、SDDM、KDM 或 LightDM)登录系统时执行这些行。如果您使用 XDM、Slim 或 启动 X 会话startx
,则需要将这些行放入 中~/.xinitrc
。
如果您配置了 ibus 以外的输入法,请随后转到 Gnome 设置并确保禁用所有 ibus 相关设置,尤其是所有键盘快捷键。或者,使用以下命令告诉 Gnome 不要触摸键盘设置:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
或者完全卸载 ibus。
那么XIM呢? XIM 是一个相当过时的输入法协议,ibus 和 fcitx 仅出于遗留支持原因而实现它。现在没有任何理由让您想要使用 XIM 而不是这两者中的任何一个。您想要设置的唯一原因GTK_IM_MODULE="xim"
是覆盖 GTK 的硬编码 ComposeKey 设置。
回答你的另一个问题:我认为除了查看环境变量或了解系统上安装了哪些 IM 之外,实际上没有其他方法可以检测当前处于活动状态的输入法。如果GTK_IM_MODULE
未设置,GTK 将根据 中的配置选择内置 IM /etc/gtk-2.0/gtk.immodules
。 GTK 3.0 查找/usr/lib/gtk-3.0/3.0.0/immodules.cache
其中由gtk-query-immodules-3.0
.
GTK_IM_MODULE
设置为 的原因xim
可能是 或任何其他本地或全局 shell RC 文件中的某个杂散变量/etc/profile
定义/etc/profile.d/*
。如果您觉得有必要,请随意取消设置或覆盖此变量。
然而,根据这个Gnome 错误报告评论我假设通过配置的值会覆盖为 DBus 激活的应用程序gsettings
设置的值。GTK_IM_MODULE
因此,至少您的 Gnome 应用程序gtk-im-context-simple
目前可能正在使用,这实际上意味着标准行为(即没有 ibus 或任何其他专用 IM)。