如何使用命令行中的新锁屏锁定屏幕?

Ubuntu 14.04引入了一个类似于登录屏幕的新锁屏。

新锁屏

我仍然能够使用命令gnome-screensaver-command --lock锁定屏幕(我以前一直这样做),在14.04下锁定屏幕,但是:

  • 如果您从桌面运行它,它会使用新的锁屏锁定屏幕。
  • 如果您从虚拟控制台或通过SSH运行它,它将使用锁屏锁定屏幕。

我也尝试过使用xdg-screensaver lock ,但它的工作原理与gnome-screensaver-command --lock (只有在从桌面运行时才使用新的锁屏)。

运行light-locker-command --lock不起作用,因为未安装light-locker

我想从桌面运行相同的命令和通过SSH /虚拟控制台运行它之间必然存在一些差异,但我无法找到环境变量的任何差异。

所以,我的问题是: 如何使用新的Unity锁屏而不是命令行中的旧锁屏来锁定屏幕?

这个问题可能与它要求使用的新命令有关,所以这是另一个问题: 为什么运行相同的锁定命令会产生不同的结果?

请注意,根据此错误报告 ,在14.04中不再使用gnome-screensaver

这不是一个真正的gnome-screensaver错误,该组件停止在可信任中使用。

我没有安装gnome-screensaver ,我能找到的唯一命令就是:

 dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock 

接受的答案有正确的想法,除了锁屏与统一面板相关,而org.gnome.ScreenSaver显然是与Gnome相关的模式类型,因此它可能或可能不起作用。

但是Unity存在一个dbus接口,我们只需要调用这个方法com.canonical.Unity.Session.Lock就像这样

 qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.Lock 

附注

certificate它与统一面板相关的事实很简单,当你屏幕被锁定时,进程/usr/lib/unity/unity-panel-service将变为/usr/lib/unity/unity-panel-service --lock-mode从tty1观察到的/usr/lib/unity/unity-panel-service --lock-mode

我最近发现xdg-screensaver lock可以工作,也是一个非常简单的解决方案!

你总是可以发送击键: xdotool key super+l