Gnome 3.22.1を使用していますが、3.18以降に問題があります。
その前に(正確なバージョンを覚えていません)、内部でX.orgバインディングを使用する単純なアプリケーションである xkb-witch を使用してキーボードレイアウトを切り替えることができました。
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
設定は変更されていますが、レイアウトは同じままです。
レイアウトを変更するための「ハック」メソッドが1つ見つかりました。
setxkbmap us,ru
setxkbmap ru,us
しかし、gnomeシェルはその変更を認識せず、レイアウトインジケーターに誤った言語を表示します。
私はこの問題について投稿しました(申し訳ありませんが、十分な評判がありません、https://bbs.archlinux.org/viewtopic.php?pid = 1657582 https://github.com/ierton/xkb-switch/issues/15)、しかし、良い答えを得ることはできませんでした。
そして、この時点で私は行き詰まっています。私はgnome Shellコードで問題を特定するのに十分なスキルがありません。それが(gnome Shellの)問題であるかどうかさえわかりません。
私が欲しいのは、端末からキーボードレイアウトを切り替えるgnome-aware方法です。誰かが私を正しい方向に向けることができますか?これをバグとして報告する必要がありますか(特に、キーボードのレイアウトはgsettingsで変更できないという事実)?
Gnome-Shellは、すべての変数にアクセスできるDBusのJS evalインターフェースを公開しているため、次のコマンドを使用してこの機能を実行できます。
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()"
入力メソッドとしてIBusを使用している場合(これがデフォルトである可能性があります)、ibus
コマンドを使用して入力を変更できます。
# Set the layout to US English
ibus engine xkb:us::eng
# Set the input method to Japanese Mozc IME
ibus engine mozc-jp
# Set the layout to Russian
ibus engine xkb:ru::rus
ibus list-engine
コマンドを使用して、使用可能なすべてのレイアウトを表示できます。
このアプローチではnotが言語インジケーターを変更することに注意してください。
gsettings
を使用します。
設定org.gnome.desktop.input-sources.sources
nullリスト、 "[]"を使用すると、gnome-Shellを設定せずにXサーバーキーボード設定を使用できます、以前と同じようにできるでしょう。
$ gsettings set org.gnome.desktop.input-sources sources '[]'
以前にマウスで入力方法を設定していない場合でも、コマンドラインで入力方法を設定して切り替えることができます。
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"
Dvorakの場合は、us+dvorak
(または英国にいる場合はgb+dvorak
など)を使用します。
Sudo dpkg-reconfigure keyboard-configuration