如何指定密码输入对话框中的语言始终为英语?

如何指定密码输入对话框中的语言始终为英语?

在 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 (英语、阿拉伯语),运行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
    

相关内容