KDE 4.xを実行するシステムの場合
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
Ubuntu / Gnomeの場合: qdbus org.gnome.ScreenSaver /ScreenSaver Lock
上記のQdbusは、スクリーンロッカーが受信するメッセージをメッセージバスに送信するだけです。ただし、コマンドは画面をロックします。qdbusは「誰かが画面をロックしてくれませんか?」qdbusを使用する利点は、KDE以外のプラットフォームでサポートされることです。以下のテキストはKDE4でのみ機能します。
今見て、学ぶ:o)
これをもう少し詳しく理解するには、ちょっとした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 --forcelock
は、blankscrn.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
kscreensaver
ますがps aux
、それはあなたがする必要があるというモジュールがあります