![查询fcitx当前输入法](https://linux22.com/image/116554/%E6%9F%A5%E8%AF%A2fcitx%E5%BD%93%E5%89%8D%E8%BE%93%E5%85%A5%E6%B3%95.png)
我一直致力于让新的 Debian (Stretch) 安装在我的新计算机 (Lenovo X270) 上运行良好,包括设置 xmonad/xmobar。由于我正在学习日语,因此我想设置一个输入法,我设法使用 fcitx/fcitx-mozc 来做到这一点。然而,我想在我的 xmobar 设置中包含一个插件,指示当前输入法(根据 fcitx)是否是日语。 Kbd 插件似乎没有这样做,因为 fcitx 不直接与 XKB 交互(据我所知),所以它一直显示“我们”。我也无法找到从终端查询当前 fcitx IM 的任何方法。有什么方法可以做到这一点(就好像这是可能的,我也许可以将 xmobar 指示器组合在一起),或者它是否比它的价值更麻烦?
[郑重声明,我尝试设置 ibus,但遇到问题,所以我切换到 fcitx。]
如有必要,我非常乐意提供有关我的设置的更多详细信息。
答案1
提示:您可以查询 DBus,例如通过qdbus
控制台工具,因此:
$ qdbus "org.fcitx.Fcitx" "/inputmethod" "GetCurrentIM"
另一种方法是xkb-开关:xkb-switch -p
答案2
我不确定这是否对 xmobar 有帮助,但您可以通过监视的输出来跟踪 CurrentIM 属性中的更改
gdbus monitor -e -d org.fcitx.Fcitx
不幸的是,这似乎并没有告诉我们新的价值;我得到的行只是:
/inputmethod: org.freedesktop.DBus.Properties.PropertiesChanged ('org.fcitx.Fcitx.InputMethod', @a{sv} {}, ['CurrentIM'])
但每次看到这样的行时,您都可以使用接受的答案中的 qdbus 命令或使用 gdbus 来查询状态,如下所示:
gdbus call -e -d org.fcitx.Fcitx -o "/inputmethod" -m "org.fcitx.Fcitx.InputMethod.GetCurrentIM"