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.

1
  • 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... Jan 30, 2014 at 1:27

1 Answer 1

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
    
2
  • 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, 2014 at 15:19
  • See askubuntu.com/questions/209597/… , :) I should told you before to set an escape combination!
    – user.dz
    Jan 31, 2014 at 16:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .