问题描述
是否可以从命令行解锁 13.04 Gnome shell 登录屏幕\n?用户登录到 Gnome shell,我可以作为该用户登录到控制台。我也有 root 访问权限。
这是为了通过 VNC 访问活动的 X11 显示器,而无需输入密码。
执行中
gnome-screensaver-command -d
blog post 中的建议没有帮助。
最佳方案
我假设您有一个带有 systemd
的最新 Linux 系统(例如 Ubuntu 16.04 或更高版本)。
如果您需要解锁自己的会话,只需运行 loginctl unlock-session
(不需要 root,因为它是您自己的会话)。如果您有多个会话并且只想选择一个,请运行 loginctl list-sessions
来识别会话,然后运行例如loginctl unlock-session c187
。
如果您需要解锁所有会话,只需运行 sudo loginctl unlock-sessions
(注意复数形式)。请注意,无论哪个用户正在运行屏幕保护程序,这都会立即解锁所有会话。
如果您需要更多信息来识别正确的会话,您可以尝试如下操作:
loginctl list-sessions --no-legend | while read id rest; do echo; loginctl show-session $id; done
次佳方案
从 SSH 会话执行 gnome-screensaver-command
这样的命令的问题通常是它们不会自动连接到活动桌面会话的适当会话总线 – 通常,设置 DISPLAY 变量可以解决这个问题,例如这些对我有用(登录通过 SSH 作为拥有锁定 X 会话的同一用户(位于 DISPLAY :0):
$ DISPLAY=:0 gnome-screensaver-command -d
解锁,并且
$ DISPLAY=:0 gnome-screensaver-command -l
锁定。
或者,您可以使用 dbus-send
切换活动状态 – 例如
$ export DISPLAY=:0
$ dbus-send --session \
--dest=org.gnome.ScreenSaver \
--type=method_call \
--print-reply \
--reply-timeout=20000 \
/org/gnome/ScreenSaver \
org.gnome.ScreenSaver.SetActive \
boolean:false
来源:https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html#gs-examples
第三种方案
以下对我有用:
sudo killall gnome-screensaver
当您通过 SSH 使用其他用户登录时尤其有用。
第四种方案
我遇到了 gnome 3 的屏幕锁定(屏幕保护程序)卡在空白屏幕的问题。我设法通过替换 gnome-shell 窗口管理器来解决这个问题。
Ctrl+Alt+F1 并登录虚拟控制台,然后:
pkill -QUIT gnome-shell
DISPLAY=:0.0 gnome-shell -r &
( &
将新的 gnome-shell 置于后台,以便您可以注销虚拟控制台并保持其运行。或者使用 Ctrl+Z 挂起 gnome-shell 进程,然后使用 bg
将其置于后台。)
它可能不太优雅,但它最终允许我返回桌面应用程序,而无需 gnome 强制我注销。