Для систем, що працюють з KDE 4.x, що буде
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
Для Ubuntu / Gnome: qdbus org.gnome.ScreenSaver /ScreenSaver Lock
Як написано вище, Qdbus просто надсилає повідомлення на шині повідомлень, яке отримує скринька. Однак команда заблокує екран. qdbus просто гарно запитує: "хтось заблокує екран, будь ласка?" Перевага використання qdbus полягає в тому, що він підтримується на інших платформах, ніж KDE. Наведений нижче текст працює лише для KDE4.
Тепер дивіться і вчіться: o)
Щоб розібратися в цьому трохи детальніше, потрібно трохи хитрощів:
- перелічити всі процеси під час розблокування
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
kscreensaver
може бути , ви повинніps aux
що