![如何启用 Plasma/KDE 在冻结时自动重启?](https://linux22.com/image/69985/%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8%20Plasma%2FKDE%20%E5%9C%A8%E5%86%BB%E7%BB%93%E6%97%B6%E8%87%AA%E5%8A%A8%E9%87%8D%E5%90%AF%EF%BC%9F.png)
我用了开放式Suse已经好几年了。我最喜欢这个发行版的一件事是 Plasma/KDE 问题的处理方式:有时可能会出现面板短暂消失并打开一个消息框,告诉我 Plasma 桌面已崩溃并已重新启动,如果我愿意的话,还建议将调试数据发送给开发团队。
现在几个月来我已经切换到基于 Fedora 的发行版(Qubes操作系统,基于 Fedora 20)。看来这个发行版默认不提供这种行为,因为:
- 我再也没有见过这个消息框了
- 但我的桌面几次完全冻结(屏幕和键盘冻结,声音和鼠标指针正常),不得不残酷地关闭我的计算机,祈祷失去所有正在进行的工作将是这种残酷的唯一副作用关闭。
十几年前,当我还是学生时,我的大学也在使用 Fedora 进行实践练习。当时,面对类似的冻结,我找到了通过 SSH 远程连接并杀死桌面管理器的解决方案,以便它自动重新启动,解锁图形环境。
遗憾的是,由于 Qubes OS 的特殊设计,这种快速而肮脏的 SSH 解决方案在这里不起作用。然而,我猜想 OpenSuse 的消息框工具可能会以正确的方式做类似的事情:实现某种看门狗,检测 Plasma/KDE 何时没有响应,然后终止并重新启动它。
所以我想知道的是:该工具是 OpenSUSE² 的特定功能吗?还是应该安装某些软件包或更改某些配置以在当前安装中启用此行为?
桌面冻结特别令人沮丧,尤其是当我知道应用程序本身很可能仍然工作正常并且简单地重新启动 Plasma 进程将使一切恢复正常时......
1:在 Qubes 操作系统中,网络连接在 Xen 域中被隔离,而 KDE 位于无网络的 Dom0 中。出于安全原因,Qubes OS 经过精心设计,以避免从网络到达用户界面......
²:过去(如果现在不是这样的话)OpenSUSE 曾经有一个内部经过大量修改的 KDE,使他们成为第一个提出稳定 KDE4 的发行版,所以我担心这个工具只是这些糖果的一部分。 ..
答案1
长话短说:这里的问题显然是由 OpenGL 和 KWin 之间的问题(很可能是一些模糊的竞争条件)引起的。
要解决此问题,必须禁用 OpenGL 并使用 XRender(在系统配置 > 桌面效果 > 高级 > 合成类型中,选择“XRender”而不是默认的 OpenGL)。
一些桌面效果将不再可用,但至少系统会稳定,不再卡顿。
很长的故事:
该问题每隔几周随机发生一次,有时一天几次,有时两三周没有问题,因此很难分析(顺便说一句,在某些时候我切换到另一个显卡,从 radeon 切换到 Intel i915对问题没有任何影响,因此它与显卡及其驱动程序无关)。
我留下了一个在后台运行的脚本,并在无限循环中每三分钟进行一次自动检查,这样他们就有希望在桌面冻结时捕获到一些东西。
事实上,可以通过 qdbus 以编程方式检测冻结,特别是当且仅当桌面被冻结时此调用才会失败:
qdbus org.kde.Kwin /App org.freedesktop.DBus.Peer.Ping
虽然通常它没有输出且返回代码为 0,但当桌面冻结时,此命令会失败,并返回代码 2 和“NoReply”错误消息。
作为信息,我还检查了 org.kde.plasma-desktop、org.kde.kuiserver 和 org.kde.kded 的状态,当发生冻结时它们看起来都很正常,因此 KWin 似乎是真正的罪魁祸首。
我尝试了多种方法来恢复桌面环境的完整性,但没有成功。尝试使用kquitapp kwin
或干净地重新启动 KWinkwin --replace
似乎没有任何明显的效果。我尝试杀死并重建完整的桌面环境,如下所示:
kbuildsycoca4
kquitapp plasma-desktop
kquitapp kwin
kquitapp kuiserver
sleep 2
killall plasma-desktop kwin kuiserver; sleep 2
killall -9 plasma-desktop kwin kuiserver; sleep 2
kstart kuiserver
kstart kwin
kstart plasma-desktop
桌面自行解冻了! ...但仅限一帧:屏幕(如查看任务栏中的时钟时可以看到)更新并立即再次冻结。
然而,找到罪魁祸首后,我发现一个古老的“高、关键但无法解决,因为太晦涩”的问题。相同的症状,相同的诊断步骤,最后建议的解决方法:使用 XRender 而不是 OpenGL。
自从我应用此更改以来已经有几个月了,从那时起我没有遇到冻结,所以我认为这个解决方法对于这个问题是正确的。
答案2
答案3
升级至魁贝斯3.2使用sudo qubes-dom0-update --releasever=3.2
如此处记录的将解决问题。
然后,您可以从 Qubes 存储库安装 KDE。