在 Gnome 中,我经常在选择俄语时输入 sudo 密码。等待密码验证失败,切换到英文重新输入密码,好烦啊!
有没有办法在密码输入对话框中强制使用英语?特别是在登录屏幕上。
它与 Ubuntu 13.10 或更高版本上的 Gnome/Unity Indicator/Layout 开关配合良好。
运行gsettings list-recursively org.gnome.desktop.input-sources
以检查您的活动布局和输入系统。
问题:
在锁定对话框情况下,无法恢复上次使用的键盘。所以解锁后总是en
对于 sudo(别名)
nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
追加这一行
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"
Run Code Online (Sandbox Code Playgroud)对于锁定对话框(代理)
cd /usr/lib/gnome-screensaver/
sudo mv gnome-screensaver-dialog gnome-screensaver-dialog_orig
sudo nano gnome-screensaver-dialog_proxy
Run Code Online (Sandbox Code Playgroud)
把这个放进去:
#!/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
Run Code Online (Sandbox Code Playgroud)
修复一个链接:
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
Run Code Online (Sandbox Code Playgroud)仅当您的布局是通过setxkbmap
命令设置时才使用它。
完整步骤如上所述。我只保留了不同的步骤。我正在使用我们,ara(英语,阿拉伯语),跑去setxkbmap -query
检查你的。
问题:
setxkbmap 在 X 级别更改布局,这会覆盖有效的 Unity/Gnome 布局。指示器保持显示最后的布局。它还破坏了一些布局切换键盘快捷键。为了避免这种情况,请将快捷方式选项添加到setxkbmap
命令中。例子:setxkbmap us,ara -option grp:rshift_toggle -option grp:rctrl_switch
。
在锁定对话框情况下,无法恢复上次使用的键盘。
对于须藤
nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
追加这一行
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"
Run Code Online (Sandbox Code Playgroud)对于锁定对话框
nano gnome-screensaver-dialog_proxy
Run Code Online (Sandbox Code Playgroud)
把这个放进去:
#!/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
Run Code Online (Sandbox Code Playgroud)