在我的项目中,如果进程收到一些特定消息,即使应用程序中有一些未保存的数据,它也会运行一个脚本来强制注销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 的第三个参数“2”似乎意味着应用程序“kwrite”应该立即终止,而不是弹出对话框。但这不起作用。
有高手知道第三个参数“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
。