Ubuntu 18.04:如何从脚本更改键盘布局?

Ubuntu 18.04:如何从脚本更改键盘布局?

在 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"

这很容易编写脚本,您甚至可以将此命令原始放入“设置”→“键盘”→“键盘快捷键”→“查看和自定义快捷键”→“自定义快捷键”下的自定义快捷键中。

相关内容