Как разблокировать экран из скрипта в KDE Plasma 5?

Я использую pam_usb и хочу заблокировать/разблокировать компьютер при удалении/вставке USB-накопителя. Для блокировки я использую qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock и это работает прекрасно. Для разблокировки я попробовал серию команд, которые я нашел (большинство из них агрегируются здесь), но они не работают. В частности, если исключить синтаксис KDE 4, они делятся на 2 категории: те, которые используют qdbus (relevant path here, several variations exists) /MainApplication quit которые вешают мой Xorg полностью, и те, кто использует killall против процесса screenlocker, но процесс просто перезагрузится сразу после этого!

Итак, мой вопрос: Как разблокировать экран KDE5, заблокированный стандартным шкафчиком программно?

11
задан Ruslan Prokopchuk
22.03.2023 21:46 Количество просмотров материала 3551
Распечатать страницу

3 ответа

не совсем мой ответ, но он может быть полезен и кому-то другому.

Это происходит из https://forum.kde.org/viewtopic.php?f=289&t=130691#p350000 и он работает на последнем archlinux с KDE 5.7

loginctl lock-session
loginctl unlock-session
5
отвечен Syco 2023-03-24 05:34

на современной плазме KDE команда, по-видимому:

qdbus --system org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/$session Unlock

имя сеанса можно получить из

qdbus --literal --system org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager \
org.freedesktop.ConsoleKit.Manager.GetSessions | sed 's/^.*\(Session[0-9]*\).*$//'

остерегайтесь, так как может быть несколько сеансов! Есть несколько GetSession* функции для различных вариантов использования.

проблема в том, что все эти функции конечно Требуется root!

Я не знаю как loginctl обошел бы это, но это предполагает, что это возможно. В противном случае, возможно, вы может использовать sudo и разрешить запуск скрипта, который делает это, без ввода пароля.

0
отвечен Evi1M4chine 2023-03-24 07:51

шкафчик экран разбит и разблокировки уже невозможно. Чтобы разблокировать коммутатор к виртуальному терминалу (например, Ctrl + Alt+F2), войдите в систему и выполните команду: loginctl разблокировка-сеансы После этого вернитесь к запущенному сеансу (Ctrl + Alt+F7).

это сообщение иногда появляется на моем ноутбуке под управлением Gentoo Stable с Plasma 5, OpenRC и ConsoleKit. Следующий скрипт я запускаю из TTY1 успешно открывает сессии X11 в TTY7:

fitzcarraldo@clevow230ss ~ $ cat unlockKDEsession.sh
#!/bin/bash

# Screen locker broken in KDE with ConsoleKit
# See https://forums.gentoo.org/viewtopic-t-1046566.html
# and https://forums.gentoo.org/viewtopic-t-1054134.html

# Find which session is locked
session=Session$(ck-list-sessions | grep -B10 "x11-display = ':0" | grep -o -P '(?<=Session).*(?=:)')

# Create Bash script to unlock session
echo "#!/bin/bash" > /unlock.sh
echo "su -c 'dbus-send --system --print-reply --dest=\"org.freedesktop.ConsoleKit\" /org/freedesktop/ConsoleKit/$session org.freedesktop.ConsoleKit.Session.Unlock'" >> /unlock.sh
chmod +x /unlock.sh

# Run Bash script in another TTY
openvt -s -w /unlock.sh
0
отвечен Fitzcarraldo 2023-03-24 10:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх