当我使用 Ubuntu 12.04 时,当我点击桌面状态栏上的“锁定”按钮后,它会显示锁定的屏幕。我使用另一台计算机 ssh 到这台锁定的计算机。并使用命令
export DISPLAY=:0
gnome-screensaver-command -d
解锁屏幕。效果很好。
但是现在,我将 Ubuntu 从 12.04 升级到 14.04。当我单击状态栏上的“锁定”按钮时,它将显示新的锁定屏幕,看起来像 unity-greeter。然后我使用与以前相同的命令:
export DISPLAY=:0
gnome-screensaver-command -d
什么都没发生〜我无法通过命令解锁屏幕。
它看起来像是 Ubuntu 中的一个错误。https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163
但有没有什么方法可以解决这个问题呢?
[更新]
我发现如果我们使用来自 ssh 的锁屏命令
export DISPLAY=:0
gnome-screensaver-command -l
它将显示 gnome 经典屏幕保护程序,就像 Ubuntu 12.04 一样。并且使用命令 gnome-screensaver-command -d 可以解锁屏幕。
那么,有没有办法在单击状态栏中的锁定按钮时切换到 gnome 经典屏幕保护程序?
附言,我努力了CompizConfig 设置管理器,没有更改锁屏的选项~~
答案1
一个解决方法是使用替代的屏幕保护程序,例如经典的 Linux屏幕保护程序. 可以使用命令行停用此功能
xscreensaver-command -deactivate
答案2
要通过终端锁定屏幕(适用于 Ubuntu 14.04 和 16.04),我使用:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
因此要解锁它,可以这样做:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Unlock
不幸的是,我没有安装 SSH 来测试它。当屏幕已解锁且没有错误消息时,我可以从终端进行测试。
我确实找到了另一篇可以这样做的文章:
dbus-send --session --dest=org.gnome.ScreenSaver --type=method_call --print-reply --reply-timeout=20000 /org/gnome/ScreenSaver org.gnome.ScreenSaver.SetActive boolean:false
这里声称的优点是它不需要密码来解锁屏幕。完整线程在这里:(解锁 gnome-screensaver,而不是停用)
答案3
不确定如何切换到 gnome-classical 屏幕保护程序,但是 gnome-screensaver-command 错误解决方法绝对有效:
首先,启用屏幕键盘:
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
首次登录时会出现屏幕键盘,但您可以将其关闭。
锁定屏幕(需要在启用屏幕键盘后进行)
现在gnome-screensaver-command -d
可以解锁屏幕。
应该可以通过 ssh 与 14.04 配合使用:
export DISPLAY=:0
gnome-screensaver-command -d
对于 16.04,还需要设置 dbus 会话:
export DISPLAY=:0
export $(cat /proc/`pidof compiz`/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS )
gnome-screensaver-command -d
或者更好的是,只需使用 loginctl,而不需要任何解决方法:
loginctl unlock-sessions