在 Ubuntu 16.04 中,以下操作有效:
/usr/bin/gsettings set org.gnome.desktop.input-sources current 0
但是升级到18.04之后,它就不再起作用了。
答案1
这种切换键盘布局的方法已被弃用。新的,只是轻微地更神秘的方式是这样的:
gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
(致谢:https://www.mail-archive.com/[电子邮件保护]/msg08988.html)
中的数字inputSources[1]
定义您想要的布局。因此,如果您配置了两种不同的布局,它将是 0 或 1。您可以使用以下命令获取已配置布局的列表:
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'us+intl-unicode'), ('xkb', 'us')]
答案2
塞巴斯蒂安的回答很棒,我可以确认它比我以前使用的方法要快得多:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'ru'), ('ibus', 'googlepinyin')]"
为了清楚地说明他的答案,方括号()中的数字inputSources[1]
从 0 开始,在我的例子中,在以下代码中 0 表示美国,1 表示俄罗斯,2 表示拼音:
#!/bin/bash
gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
您可以将每个语言切换的 shell 脚本存储在主目录中,例如 /home/user_name/.keyboard/langXX.sh。请记住允许执行它们。
然后您需要在设置/设备/键盘/自定义快捷方式中添加快捷方式: 截屏
答案3
在 2024 年,gdbus call … org.gnome.Shell.Eval …"
不再起作用。它已被弃用。您可以尝试Eval
使用ramottamado/eval-gjs,但你必须明白它有多么不安全。
gsettings
您在本网站( / )上找到的大多数其他方法setxkbmap
同样无效。
因此,我制作了自己的 GNOME Shell 扩展并与全世界分享:什里伍克(也可以从 GitHub 获取:madhead/shyriiwook)。
这是一个非常简单、简约的扩展。它没有任何 GUI。安装后,一个新的 D-Bus 接口将出现在您的 GNOME Shell 会话中。您可以查询当前配置或调用方法来激活所需的布局:
$ gdbus introspect \
--session \
--dest org.gnome.Shell \
--object-path /me/madhead/Shyriiwook \
--only-properties
node /me/madhead/Shyriiwook {
interface me.madhead.Shyriiwook {
properties:
readonly as availableLayouts = ['us', 'de', 'jp'];
readonly s currentLayout = 'us';
};
};
$ gdbus call \
--session \
--dest org.gnome.Shell \
--object-path /me/madhead/Shyriiwook \
--method me.madhead.Shyriiwook.activate "de"
这很容易编写脚本,您甚至可以将此命令原始放入“设置”→“键盘”→“键盘快捷键”→“查看和自定义快捷键”→“自定义快捷键”下的自定义快捷键中。