KDE下的锁屏机制是什么?

Lan*_*nes 15 kde

我在 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# 
Run Code Online (Sandbox Code Playgroud)

我只是想知道,如果我按“CTRL+ALT+L”,那么锁定屏幕的进程/应用程序是什么?在 GNOME 下,它是 gnome-screensaver。KDE 下是什么?

jip*_*pie 27

对于运行 KDE 4.x 的系统,

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
Run Code Online (Sandbox Code Playgroud)

对于 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
Run Code Online (Sandbox Code Playgroud)

这缩小了锁定屏幕的潜在命令列表,不是吗?现在您的问题的答案很简单:要/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