Qual é o mecanismo de bloqueio de tela no KDE?


14

Instalei a área de trabalho do KDE no meu 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# 

Eu só queria saber que se eu pressionar "CTRL + ALT + L", qual é o processo / aplicativo que bloqueia a tela? no GNOME, ele é um protetor de tela gnome. O que há no KDE?


Estou comentando porque eu não usar o KDE, mas eu vejo um módulo chamado kscreensaverpode ser você deve ps auxisso
sagarchalise

Respostas:


27

Para sistemas executando o KDE 4.x, será

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock

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

O Qdbus, conforme escrito acima, envia apenas uma mensagem no barramento de mensagens que o bloqueador de tela recebe. O comando, no entanto, bloqueará a tela. qdbus apenas pergunta gentilmente "alguém bloqueará a tela, por favor?" A vantagem de usar o qdbus é que ele é suportado em outras plataformas que não o KDE. O texto abaixo funciona apenas para o KDE4.

Agora assista e aprenda: o)

Para descobrir isso com mais detalhes, é necessário um pouco de truque para o bash:

  • listar todos os processos enquanto desbloqueados ps -ef;
  • bloquear a tela qdbus ..........;
  • espere um momento para bloquear a tela sleep 1
  • em seguida, liste os processos enquanto bloqueados ps -ef
  • encontre as diferenças entre a saída dos dois comandos diff <( cmd1 ) <( cmd2 )

A linha de comando:

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

Isso restringe a lista de possíveis comandos para bloquear a tela, não é? Agora, a resposta para sua pergunta é simples: para bloquear a tela a partir da linha de comando, use: /usr/lib/kde4/libexec/kscreenlocker --forcelocko blankscrn.kss é um processo filho do kscreenlocker, portanto, é o kscreenlocker que deve ser executado.

Para visualizar a sintaxe do comando: /usr/lib/kde4/libexec/kscreenlocker --help

O que faz? Basicamente, ele desenha uma grande janela preta que cobre a tela inteira e a força a ficar por cima de tudo. Ele captura todas as teclas digitadas e abre uma caixa de diálogo de login.

Finalmente, em qual pacote ele vem (kde-workspace-bin)?

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

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


Esse <()é um truque legal!
Martin Ueding 10/09/12

qdbus parece estar quebrado no Saucy , mas funciona se você instalar o pacote qdbus-qt5.
Caracol mecânico

Ame a técnica dos processadores diff! Eu usei uma coisa semelhante, mas selecionado manualmente bloqueio a partir do menu enquanto ele estava dormindo (ou sejadiff <( ps -ef ) <( sleep 3; ps -ef )
Matthew Wilcoxson

Em vez de escrever o script, você pode simplesmente alternar TTY com ctrl + alt + F # enquanto a tela está bloqueada e o grep processa lá. Mas o roteiro é legal!
Luto
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.