Answers:
可以通过gdbus call
(src)通过其JS接口查询gnome-shell来实现。
以下脚本将在两个配置的输入源之间切换。如果有更多内容,则易于修改。
#!/usr/bin/env bash
cur_idx=$(
gdbus call \
--session \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports
.ui.status
.keyboard
.getInputSourceManager()
.currentSource
.index" |
cut -d"'" -f2
)
next_idx=$(( 1 - $cur_idx ))
gdbus call \
--session \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports
.ui
.status
.keyboard
.getInputSourceManager()
.inputSources[$next_idx]
.activate()" \
&> /dev/null
使它可执行,chmod a+x </path/to/script>
然后可以将其绑定到自定义快捷键:
打开设置->设备->键盘,然后单击底部的' + '选择按钮以将脚本分配给某些快捷方式
(对于Gnome <3.x:设置->设备->键盘->自定义快捷方式)。
如果您按住更长的时间,将出现覆盖图。快速按下并释放即可更改布局,而无需显示覆盖。
作为一种解决方法,您可以设置另一个键盘快捷方式来切换布局,请参考以下内容:Ubuntu 17.10无法将输入切换快捷方式更改为alt + shift。