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

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

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 锁屏而不是命令行中的旧锁屏来锁定屏幕?

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

请注意gnome-screensaver,根据此错误报告

这实际上不是一个 gnome-screensaver 错误,该组件已在 trusty 中停止使用。

答案1

我没有gnome-screensaver安装,我发现唯一有效的命令是:

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

答案2

我最近发现它 xdg-screensaver lock 也有效并且也是一个相当简单的解决方案!

答案3

接受的答案有正确的想法,除了锁屏与统一面板相关,而 org.gnome.ScreenSaver显然是与 Gnome 相关的模式类型,所以它可能有效也可能无效。

然而 Unity 有一个 dbus 接口,我们只需要com.canonical.Unity.Session.Lock像这样调用这个方法

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

边注

它与 Unity Panel 相关的证明很简单,当你锁定屏幕时,进程/usr/lib/unity/unity-panel-service将变为/usr/lib/unity/unity-panel-service --lock-mode从 tty1 观察到的。

答案4

您随时可以发送击键:xdotool key super+l

相关内容