Ubuntu 20.04 上的登录屏幕和系统使用一种语言

Ubuntu 20.04 上的登录屏幕和系统使用一种语言

我有 2 种语言“en”和“ru”。每次登录时,登录屏幕都会要求输入我的英语密码。当我在登录屏幕上将语言更改为英语时,它会切换回我之前使用的语言。如何锁定语言,这样当我在登录屏幕上更改语言时,Ubuntu 解锁后语言会保持不变?我安装了 Ubuntu 20.04,但问题也出现在 Ubuntu 19.10 上。

谢谢你!

答案1

切换会话语言是否会产生预期的结果?[摘自help.ubuntu.com]

Ubunto 20.04 已改为使用ibus,如果我没记错的话,它有一个方便的小键盘快捷键,<Alt>+<Shift>+L可用于在语言之间切换。这将是保留两种语言而不中断工作流程的好解决方案。

答案2

谢谢大家的快速回复。实际上,我遇到的不是语言问题,而是键盘布局问题。

使用案例:当我将屏幕切换键盘锁定为“En”时,登录系统并打开例如远程桌面客户端,尝试连接到服务器但无法连接,因为我的系统中没有“En”键盘,但最后使用的键盘在大多数情况下是“Ru”。

我使用标准设置解决了这个问题:打开设置 - 区域和语言 - 输入源 - 设置“允许每个窗口使用不同的源”

再次感谢您的帮助。

答案3

这些答案并不能真正解决问题。存在一些未解决的错误,导致super+space在锁定屏幕上根本无法使用,并且设置Allow different sources for each window也无济于事,因为锁定屏幕的确定语言(至少在 22.10 和 GNOME 43 上)是最后使用的输入布局。

经过测试的答案GNOME 42+直接解决这个问题的是:

该解决方案创建一个脚本,它将监听锁屏事件(通过org.gnome.ScreenSaver),并使用 GNOME 扩展和应用程序更改语言g3kbswitch

  1. 安装 g3kb-switchhttps://github.com/lyokha/g3kb-switch按照github中的说明(拉取,安装依赖项,编译并安装应用程序和扩展)

  2. 通过运行找到您想要在锁定屏幕中使用的语言 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

  3. 创建一个脚本,将其命名为,例如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
  1. 赋予脚本可执行权限:chmod +x lock-screen-lang.sh

  2. 通过运行,将脚本添加到 GNOME 启动中gnome-session-properties,并添加新项目,选择您创建的脚本。

注意:虽然这是一个解决方法,但由于这个问题已经存在好几年了,所以它可能还是值得拥有的。

相关错误:

资源:

相关内容