私のプロジェクトでプロセスが特定のメッセージを受け取ると、アプリケーションに保存されていないデータがあっても、KDEデスクトップを強制的にログアウトするスクリプトを実行します。
Googleで検索した結果、次のコマンドが表示されました。
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 0 0 2
上記のコマンドは、ログアウトをブロックするアプリケーションがない場合でも正しく機能します。ただし、一部のアプリケーションに保存されていないデータがある場合、アプリケーションは「kwrite」アプリケーションなどのログアウトを防ぐためのダイアログボックスを表示します。
私はKDEドキュメントを参照しています:
http://git.net/ml/kde-users/2014-03/msg00040.html
org.kde.KSMServerInterface.logoutに渡される3番目のパラメータ「2」は、「kwrite」アプリケーションがダイアログボックスを表示するのではなく、すぐに終了する必要があることを意味するようです。しかし、これはうまくいきません。
3番目のパラメータ「2」がなぜ機能しないのかを知っている人はいますか? 「kwrite」アプリケーションが保存されていない日付で実行されていますが、KDEを強制的にログアウトする方法は?
私のKDEバージョンはkdebase-workspace-4.3.4-30.el6_6.x86_64で、ディストリビューションはCentOS 6.7です。
ベストアンサー1
エレガンスが必要ない場合は、これを試してくださいkillall -9 plasma-desktop
。プロセス名を調整する必要があります。
アクティブなKDEセッションを使用しているユーザーが複数人の場合は、これに注意してください。などを評価してps aux | grep plasma-desktop | grep $USER | awk '{print $2}'
変数のPIDを変更することをお勧めしますkill -9 $PID
。