有一半的时间计算机锁定时,焦点窗口的语言未设置为英语,因此我在锁定屏幕中以错误的语言输入密码。
是否可以将锁屏语言保留为以前的语言在锁定屏幕中,而不是最后使用的那个?
我已经启用了
允许每个窗口使用不同的来源
输入源选项中的选项。
编辑:根据评论中的要求,这些是内容/etd/default/keyboard
:
$ cat /etc/default/keyboard
XKBLAYOUT="us,gr"
XKBVARIANT=","
BACKSPACE="guess"
XKBMODEL="pc105"
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"
答案1
答案2
我也遇到过同样的问题,这让我很烦恼,为了加快解决方案的速度,我创建了一个关注 gnome 扩展。
答案3
遇到同样的问题,我最终找到了一个解决方案,它是我找到的答案的组合。
该解决方案创建一个脚本,它将监听锁屏事件(通过org.gnome.ScreenSaver
),并使用 GNOME 扩展和应用程序更改语言g3kbswitch
。
对于 GNOME 42+:
安装 g3kb-switchhttps://github.com/lyokha/g3kb-switch按照github中的说明(拉取,安装依赖项,编译并安装应用程序和扩展)
通过运行找到您想要在锁定屏幕中使用的语言 ID
gdbus call --session --dest org.gnome.Shell --object-path /org/g3kbswitch/G3kbSwitch --method org.g3kbswitch.G3kbSwitch.List
(您应该得到类似的输出(true, '[{"key":"0","value":"us"},{"key":"1","value":"il"}]')
,如果您希望“en”作为锁定屏幕语言,您需要使用密钥0
)创建一个脚本,将其命名为,例如
lock-screen-lang.sh
,并用上一步中的键0
替换:Set 0
#!/bin/bash
dbus-monitor --session "type=signal,interface=org.gnome.ScreenSaver" |
while read MSG; do
MSG_STAT=`echo $MSG | grep boolean | awk '{print $2}'`
if [[ "$MSG_STAT" == "true" ]]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/g3kbswitch/G3kbSwitch --method org.g3kbswitch.G3kbSwitch.Set 0 > /dev/null 2>&1
fi
done
赋予脚本可执行权限:
chmod +x lock-screen-lang.sh
通过运行,将脚本添加到 GNOME 启动中
gnome-session-properties
,并添加新项目,选择您创建的脚本。
注意:虽然这是一个解决方法,但由于这个问题已经存在好几年了,所以它可能还是值得拥有的。
相关错误:
- https://bugs.launchpad.net/unity/+bug/1286910
- https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/225
资源: