5

In Gnome I often enter sudo password when Russian language is being selected. It's so annoying to wait for password verification fail, to switch to English and retype the password!

Is there a way to force English in password input dialog? Especially on logon screen.

zuba
  • 2,393
  • That's an interesting question, but it probably requires a code change. I can't see a developer thinking about that one coming. Upvote from me anyway... – RobotHumans Jan 30 '14 at 01:27

1 Answers1

2

Using gsettings

It works well with Gnome/Unity Indicator/Layout switch on Ubuntu 13.10 or later.

Run gsettings list-recursively org.gnome.desktop.input-sources to check your active layouts and input systems.

Problems:

In lock dialog case, it is unable to restore last used keyboard. So after unlock always en

  • For sudo (Alias)

    nano ~/.bashrc
    

    Append this line

    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"
    
  • For lock dialog (Proxy)

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

    Put this in:

    #!/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
    

    Fix a link:

    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
    

Old answer using setxkbmap

Use it, only if your layouts is set with setxkbmap command.

Complete steps are mentioned above. I kept only different steps. I am using us,ara (English, Arabic), run setxkbmap -query to check yours.

Problems:

setxkbmap change layout at X level, which does override effective Unity/Gnome layout. Indicator keep showing last layout. Also it breaks some layout switching keyboard shortcuts. To avoid that add your shortcuts options to setxkbmap command. Example: setxkbmap us,ara -option grp:rshift_toggle -option grp:rctrl_switch.

In lock dialog case, it is unable to restore last used keyboard.

  • For sudo

    nano ~/.bashrc
    

    Append this line

    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"
    
  • For lock dialog

    nano gnome-screensaver-dialog_proxy
    

    Put this in:

    #!/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
    
user.dz
  • 48,105
  • 1
    That looks promising!

    But it completely brokes switching laouts by shortcuts.

    I use CapsLock to switch between layouts, also I use xNeur to utilize LeftShift and RightShift for switching to us and ru layouts. But all these keys stop working after I set layout with setxkbmap (

    – zuba Jan 31 '14 at 15:19
  • See http://askubuntu.com/questions/209597/how-do-i-change-keyboards-from-the-command-line , :) I should told you before to set an escape combination! – user.dz Jan 31 '14 at 16:14