我在我的 Ubuntu 上安装了 KDE 桌面:
root@DESKTOP:/var/log# dpkg -l|fgrep -i kde-plasma-desktop
ii kde-plasma-desktop 5:63ubuntu16 the KDE Plasma Desktop and minimal set of applications
root@DESKTOP:/var/log# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.04
Release: 11.04
Codename: natty
root@DESKTOP:/var/log#
我只是想知道,如果我按下“CTRL+ALT+L”,那么锁定屏幕的进程/应用程序是什么?在 GNOME 下是 gnome-screensaver。在 KDE 下是什么?
答案1
对于运行 KDE 4.x 的系统
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
对于 Ubuntu / Gnome:qdbus org.gnome.ScreenSaver /ScreenSaver Lock
如上所述,Qdbus 只是在消息总线上发送一条消息,屏幕锁定程序会接收该消息。但是,该命令将锁定屏幕。qdbus 只是礼貌地询问“有人可以锁定屏幕吗?”使用 qdbus 的优势在于,除了 KDE 之外,它还支持其他平台。下面的文本仅适用于 KDE4。
现在观看并学习:o)
为了更详细地弄清楚这一点,需要使用一些 bash 技巧:
- 列出所有解锁的进程
ps -ef
; - 锁定屏幕
qdbus ..........
; - 等待片刻即可锁定屏幕
sleep 1
- 然后列出锁定的进程
ps -ef
- 找出两个命令输出之间的差异
diff <( cmd1 ) <( cmd2 )
命令行:
diff <( ps -ef ) <( qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock; sleep 1; ps -ef )
0a1
>
242d242
< jhendrix 17088 16352 0 21:11 pts/4 00:00:00 /bin/bash
245,246c245,247
< jhendrix 17091 17088 0 21:11 pts/4 00:00:00 ps -ef
< jhendrix 17092 17089 0 21:11 pts/4 00:00:00 qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
---
> jhendrix 17093 2801 11 21:11 ? 00:00:00 /usr/lib/kde4/libexec/kscreenlocker --forcelock
> jhendrix 17095 17093 11 21:11 ? 00:00:00 kblankscrn.kss -root
> jhendrix 17099 17089 0 21:11 pts/4 00:00:00 ps -ef
这缩小了锁定屏幕的潜在命令列表,不是吗?现在你的问题的答案很简单:要从命令行锁定屏幕,请使用:/usr/lib/kde4/libexec/kscreenlocker --forcelock
blankscrn.kss 是 kscreenlocker 的子进程,因此 kscreenlocker 是要运行的进程。
查看命令语法:
/usr/lib/kde4/libexec/kscreenlocker --help
它的作用是什么?它基本上会绘制一个覆盖整个屏幕的大黑窗口,并强制将其置于所有内容之上。它捕获所有击键并弹出登录对话框。
最后它是在哪个包中(kde-workspace-bin)?
$ dpkg -S /usr/lib/kde4/libexec/kscreenlocker
kde-workspace-bin: /usr/lib/kde4/libexec/kscreenlocker