Quel est le mécanisme de verrouillage d'écran sous KDE?

14

J'ai installé le bureau KDE sur mon 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# 

Je voulais juste savoir que si j'appuie sur "CTRL + ALT + L", alors quel est le processus / l'application qui verrouille l'écran? sous GNOME c'est gnome-screensaver. Qu'est-ce que c'est sous KDE?

LanceBaynes
la source
Je commentais parce que je ne l' utilise KDE mais je vois un module appelé kscreensaverpeut être vous devriez ps auxque
sagarchalise

Réponses:

27

Pour les systèmes exécutant KDE 4.x qui seront

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock

Pour Ubuntu / Gnome: qdbus org.gnome.ScreenSaver /ScreenSaver Lock

Qdbus comme écrit ci-dessus, envoie simplement un message sur le bus de messages, que le casier d'écran reçoit. La commande verrouillera cependant l'écran. qdbus demande simplement "est-ce que quelqu'un verrouillera l'écran s'il vous plaît?" L'avantage d'utiliser qdbus est qu'il est pris en charge sur d'autres plates-formes que KDE. Le texte ci-dessous fonctionne uniquement pour KDE4.

Maintenant, regardez et apprenez: o)

Pour comprendre cela un peu plus en détail, un peu de ruse bash est nécessaire:

  • répertorier tous les processus déverrouillés ps -ef;
  • verrouiller l'écran qdbus ..........;
  • attendez un moment pour verrouiller l'écran sleep 1
  • puis répertoriez les processus verrouillés ps -ef
  • trouver les différences entre la sortie des deux commandes diff <( cmd1 ) <( cmd2 )

La ligne de commande:

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

Cela réduit la liste des commandes potentielles pour verrouiller l'écran, n'est-ce pas? Maintenant, la réponse à votre question est simple: Pour verrouiller l'écran à partir de la ligne de commande, utilisez: /usr/lib/kde4/libexec/kscreenlocker --forcelockle blankscrn.kss est un processus enfant de kscreenlocker, donc kscreenlocker est celui à exécuter.

Pour afficher la syntaxe de commande: /usr/lib/kde4/libexec/kscreenlocker --help

Ce qu'il fait? Il dessine essentiellement une grande fenêtre noire qui couvre tout l'écran et le force à être au-dessus de tout. Il intercepte toutes les frappes et affiche une boîte de dialogue de connexion.

Enfin dans quel paquet vient-il (kde-workspace-bin)?

$ dpkg -S /usr/lib/kde4/libexec/kscreenlocker

kde-workspace-bin: /usr/lib/kde4/libexec/kscreenlocker

jippie
la source
C'est <()une astuce intéressante!
Martin Ueding
qdbus semble être cassé sous Saucy , mais cela fonctionne si vous installez le package qdbus-qt5.
Escargot mécanique
J'adore la technique des processeurs de diff! J'ai utilisé une chose similaire, mais j'ai sélectionné manuellement le verrou dans le menu pendant qu'il dormait (c'estdiff <( ps -ef ) <( sleep 3; ps -ef )
Matthew Wilcoxson
Au lieu d'écrire le script, vous pouvez simplement basculer TTY avec ctrl + alt + F # pendant que l'écran est verrouillé et que les processus grep s'y trouvent. Mais le script est cool!
Grief