パスワード入力ダイアログの言語を常に英語に指定するにはどうすればよいですか?

パスワード入力ダイアログの言語を常に英語に指定するにはどうすればよいですか?

Gnome では、ロシア語を選択しているときに sudo パスワードを入力することがよくあります。パスワードの検証が失敗するまで待って、英語に切り替えてパスワードを再入力するのは非常に面倒です。

パスワード入力ダイアログで英語を強制する方法はありますか? 特にログオン画面で。

答え1

gsettingsの使用

Ubuntu 13.10 以降の Gnome/Unity Indicator/Layout スイッチで正常に動作します。

実行してgsettings list-recursively org.gnome.desktop.input-sources、アクティブなレイアウトと入力システムを確認します。

問題点:

ロックダイアログの場合、最後に使用したキーボードを復元することはできません。そのため、ロック解除後は常にen

  • sudoの場合(エイリアス)

    nano ~/.bashrc
    

    この行を追加

    alias sudo="sudo_success='' ; last_kbd=`gsettings get org.gnome.desktop.input-sources current | awk '{print $2}'` ; gsettings set org.gnome.desktop.input-sources current 0 ; sudo echo -n  && sudo_success='1' ; gsettings set org.gnome.desktop.input-sources current $last_kbd ; test $sudo_success && sudo"
    
  • ロックダイアログの場合(プロキシ)

    cd /usr/lib/gnome-screensaver/
    sudo mv gnome-screensaver-dialog gnome-screensaver-dialog_orig
    sudo nano gnome-screensaver-dialog_proxy
    

    これを入れてください:

    #!/usr/bin/env bash
    last_kbd=`gsettings get org.gnome.desktop.input-sources current | awk '{print $2}'`
    gsettings set org.gnome.desktop.input-sources current 0
    /usr/lib/gnome-screensaver/gnome-screensaver-dialog_orig $@
    gsettings set org.gnome.desktop.input-sources current $last_kbd
    

    リンクを修正:

    sudo chown root:root gnome-screensaver-dialog_proxy
    sudo chmod +x root:root gnome-screensaver-dialog_proxy
    sudo ln -s gnome-screensaver-dialog_proxy gnome-screensaver-dialog
    

setxkbmap を使用した古い回答

レイアウトがsetxkbmapコマンドで設定されている場合にのみ使用してください。

完全な手順は上記に記載されています。異なる手順のみを記載しました。us、ara (英語、アラビア語)、run を使用して、setxkbmap -query確認します。

問題点:

setxkbmap は X レベルでレイアウトを変更します。これにより、有効な Unity/Gnome レイアウトが上書きされます。インジケーターは最後のレイアウトを表示し続けます。また、一部のレイアウト切り替えキーボード ショートカットが機能しなくなります。これを回避するには、コマンドにショートカット オプションを追加しますsetxkbmap。例: setxkbmap us,ara -option grp:rshift_toggle -option grp:rctrl_switch.

ロックダイアログの場合、最後に使用したキーボードを復元できません。

  • sudoの場合

    nano ~/.bashrc
    

    この行を追加

    alias sudo="sudo_success='' ; last_kbd=$(setxkbmap -query | awk 'FNR == 3 {print $2}') ; setxkbmap us,ara ; sudo echo -n && sudo_success='1' ; setxkbmap $last_kbd ; test $sudo_success && sudo"
    
  • ロックダイアログの場合

    nano gnome-screensaver-dialog_proxy
    

    これを入れてください:

    #!/usr/bin/env bash
    last_kbd=$(setxkbmap -query | awk 'FNR == 3 {print $2}')
    setxkbmap us,ara
    /usr/lib/gnome-screensaver/gnome-screensaver-dialog_orig $@
    setxkbmap $last_kbd
    

関連情報