コマンドラインでgnome 3のキーボードレイアウトを変更する方法

コマンドラインでgnome 3のキーボードレイアウトを変更する方法

gnome 3.22.1を使用していますが、3.18から問題があります。

これまでは、(正確なバージョンを覚えていません)、次のようにキーボードレイアウトを切り替えることができました。xkbitch、内部的にX.orgバインディングを使用するシンプルなアプリケーションです。

3.18以降にxkb-switchを実行すると、gnomeのキーボードレイアウトは切り替えられません。さらなる調査は、レイアウトの切り替えが有効でしたが、寿命が短いことを示しました。

このスクリプトを実行する場合:

for i in $(seq 1000); do
  lang=$(xkb-switch -s ru; xkb-switch);
  if [[ "$lang" == "ru" ]]; then
    echo $lang;
  fi;
done

運がどれほど良いかによって、3〜20の「成功した」レイアウトスイッチを得ることができます。

この問題をインターネットで検索した後、次のようになりました。提案:

gsettings set org.gnome.desktop.input-sources current 0

設定は変更されますが、レイアウトは変わりません。

レイアウトを変更する「ハッキング」方法が見つかりました。

setxkbmap us,ru
setxkbmap ru,us

しかし、gnome Shellは変更を知らず、レイアウトインジケータに間違った言語を表示します。

この問題について投稿しました(申し訳ありませんが、評判が不十分です。https://bbs.archlinux.org/viewtopic.php?pid=1657582 https://github.com/ierton/xkb-switch/issues/15 )、しかし良い答えを得ることができる幸運はありません。

この時点で私は詰まった。私はGNOMEシェルコードの問題を識別するのに十分技術的にはうまくいきません。私はこれが(gnome shell)の問題であるかどうかはわかりません。

私が望むものは一つです。GNOMEセンス端末でキーボードレイアウトを切り替える方法。誰もが正しい方向に私を指すことができますか?これをバグとして報告する必要がありますか(特にgsettingsを介してキーボードレイアウトを変更できないという事実)。

ベストアンサー1

gnome-shell はすべての変数にアクセスできる DBus に JS 評価インタフェースを公開するので、この機能は以下を使用して達成できます。

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

これにより、0番目のレイアウトがアクティブになります。使用率の低い無変換日本語キーボードにこれらのコマンドを簡単に割り当てることができます変換

クレジット取引。


最後に使用した入力方法(コメントから)に切り替える方法は次のとおりです。

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"

おすすめ記事