KDE 4.x çalıştıran sistemler için
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
Ubuntu / Gnome için: qdbus org.gnome.ScreenSaver /ScreenSaver Lock
Qdbus, yukarıda yazıldığı gibi, ekran veri dolabının aldığı mesaj veri yoluna bir mesaj gönderir. Ancak komut ekranı kilitler. qdbus sadece "birisi ekranı kilitler mi lütfen?" Qdbus kullanmanın avantajı, KDE dışındaki diğer platformlarda desteklenmesidir. Aşağıdaki metin yalnızca KDE4 için geçerlidir.
Şimdi izleyin ve öğrenin: o)
Bunu biraz daha ayrıntılı olarak anlamak için biraz bash hile gerekir:
- kilidi açıkken tüm işlemleri listeler
ps -ef
;
- ekranı kilitleyin
qdbus ..........
;
- ekranı kilitlemek için bir dakika bekle
sleep 1
- ardından kilitliyken işlemleri listeler
ps -ef
- her iki komutun çıktısı arasındaki farkları bulur
diff <( cmd1 ) <( cmd2 )
Komut satırı:
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
Bu, ekranı kilitlemek için olası komutların listesini daraltır, değil mi? Şimdi sorunuzun cevabı basit: Ekranı komut /usr/lib/kde4/libexec/kscreenlocker --forcelock
satırından kilitlemek için: blankscrn.kss, kscreenlocker'ın alt işlemidir, bu nedenle kscreenlocker çalıştırılacak olanıdır.
Komut sözdizimini görüntülemek için:
/usr/lib/kde4/libexec/kscreenlocker --help
Bu ne yapar? Temelde tüm ekranı kaplayan büyük bir siyah pencere çizer ve her şeyin üstünde olmaya zorlar. Tüm tuş vuruşlarını yakalar ve bir giriş iletişim kutusu açar.
Sonunda hangi pakete geliyor (kde-workspace-bin)?
$ dpkg -S /usr/lib/kde4/libexec/kscreenlocker
kde-workspace-bin: /usr/lib/kde4/libexec/kscreenlocker
kscreensaver
size olabilir gerektiğips aux
o