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


15

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シェルコードの問題を特定するのに十分なスキルがありません。それが(gnome shellの)問題なのかどうかさえわかりません。

私が欲しいのは、ターミナルからキーボードのレイアウトを切り替えるgnome対応の方法です。誰かが私を正しい方向に向けることができますか?これをバグとして報告する必要がありますか(特に、gsettingsを使用してキーボードレイアウトを変更できないという事実)。

回答:


8

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()"

あなたの答えをありがとう-それは私に多くのグーグルを救った!最後に使用した入力方法に切り替える方法は次の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()"
とおりです。– Envek

4

入力メソッドとして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コマンドを使用して、使用可能なすべてのレイアウトを表示できます。

このアプローチは言語インジケータを変更しないことに注意する必要がありますが、それ以外の場合は確実に機能します。


それは同じですsetxkbmap us-その後、標準のショートカットを使用してレイアウトを変更する方法はありません。
sanmai

@sanmaiまったく同じではありません-を使用してIMEが必要な言語(日本語、中国語など)に切り替えることはできませんsetxkbmap。さらに、setxkbmap現代のWM環境では単純なバグが発生する可能性があります。詳細については質問をご覧ください。
アンダーキャットはモニカを称賛

ただし、デフォルトのショートカットが機能しないことについてはコメントできません。使用するすべてのレイアウトにカスタムショートカットを使用しています。
アンダーキャットはモニカを称賛

OK、同じではありませんが、それでもデフォルトスイッチは使用できません。ご存知かもしれませんが、日本語キーボードには余分なキーしかありません。他のレイアウトでは、デフォルトのスイッチを使用する必要があります。
sanmai

3

を使用しgsettingsます。

設定org.gnome.desktop.input-sources.sourcesヌルリスト、「[]」、あなたが使用することを可能にするXサーバなしでキーボードの設定をGNOMEシェルあなたが以前のように行うことができることができるように、それを設定しようとしています。

$ gsettings set org.gnome.desktop.input-sources sources '[]'

これを試したとき、Gnomeターミナルはsetxkbmap、その後入力したコマンドの数に関係なく、設定ダイアログを介して入力ソースを戻すまでQWERTYでスタックしました。
サイラスS.ブラウン


0

以前にマウスで入力方法を設定していない場合でも、コマンドラインで入力方法を設定して切り替えることができます。

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"

Dvorakの場合us+dvorak(またはgb+dvorak英国にいる場合など)を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.