问题描述
Ubuntu 14.04 引入了看起来类似于登录屏幕的 a new lockscreen。
我仍然可以使用命令 gnome-screensaver-command --lock
锁定屏幕(就像我以前一直做的那样),在 14.04 下它确实锁定了屏幕,但是:
-
如果您从桌面运行它,它会使用新的锁屏锁定屏幕。
-
如果您从虚拟控制台或通过 SSH 运行它,它会使用旧锁屏锁定屏幕。
我也尝试过使用 xdg-screensaver lock
,但它的工作方式与 gnome-screensaver-command --lock
相同(仅在从桌面运行时使用新的锁屏)。
运行 light-locker-command --lock
无效,因为未安装 light-locker
。
我想从桌面运行相同的命令和通过 SSH/虚拟控制台运行它肯定有一些区别,但我无法在环境变量中找到任何区别。
所以,我的问题是:如何使用新的 Unity 锁屏而不是命令行中的旧锁屏来锁定屏幕?
This question 可能是相关的,因为它要求使用需要使用的新命令,所以这是另一个问题:为什么运行相同的锁定命令会给出不同的结果?
请注意,根据 this bug report,gnome-screensaver
在 14.04 中不再使用:
\\n
That’s not really a gnome-screensaver bug, that component stopped being used in trusty.
\\n
最佳方法
我没有安装 gnome-screensaver
,我能找到的唯一有效的命令是:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
次佳方法
我最近发现\n xdg-screensaver lock
\n 也可以工作并且也是一个非常简单的解决方案!
第三种方法
接受的答案有正确的想法,除了锁屏与统一面板有关,而 org.gnome.ScreenSaver
显然是 Gnome-related 类型的架构,因此它可能会或可能不会工作。
然而,存在一个用于 Unity 的 dbus 接口,我们只需要像这样调用此方法 com.canonical.Unity.Session.Lock
qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.Lock
边注:
它与统一面板相关的事实证明很简单,当您锁定屏幕时,从 tty1 观察到,进程 /usr/lib/unity/unity-panel-service
将更改为 /usr/lib/unity/unity-panel-service --lock-mode
。