Что такое механизм блокировки экрана под KDE?


14

Я установил рабочий стол KDE на свою Ubuntu:

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 это гном-заставка. Что это под KDE?


Я комментирую , потому что я не использую KDE , но я вижу , модуль называется , kscreensaverможет быть , вы должны ps auxчто
sagarchalise

Ответы:


27

Для систем под управлением KDE 4.x это будет

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock

Для Ubuntu / Gnome: qdbus org.gnome.ScreenSaver /ScreenSaver Lock

Qdbus, как написано выше, просто отправляет сообщение на шину сообщений, которую получает блокировщик экрана. Команда, однако, заблокирует экран. qdbus просто спрашивает: "Кто-нибудь заблокирует экран?" Преимущество использования qdbus заключается в том, что он поддерживается на других платформах, кроме KDE. Текст ниже работает только для KDE4.

Теперь смотри и учись: о)

Чтобы понять это немного подробнее, требуется немного хитрости 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 --forcelockblankscrn.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


Это <()ловкий трюк!
Мартин Уединг

qdbus кажется, сломан под Saucy , но это работает, если вы установите пакет qdbus-qt5.
Механическая улитка

Люблю технику обработки различий! Я использовал аналогичную вещь, но вручную выбрал блокировку в меню, пока он спал (т.е.diff <( ps -ef ) <( sleep 3; ps -ef )
Мэтью Уилкоксон,

Вместо того чтобы писать скрипт, вы можете просто переключать TTY с помощью ctrl + alt + F #, пока экран заблокирован и grep обрабатывает там. Но сценарий это круто!
Горе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.