Clash-verge-rev更新后启动仪表盘时闪退¶
问题表现¶
在更新到 Clash-verge-rev 2.4.4 版本后,使用clash-verge能够正常启动clash内核并联网,但是在尝试打开Dashboard时会直接闪退。如果使用env WEBKIT_DISABLE_COMPOSITING_MODE=1 clash-verge启动,则可以避免闪退。
问题分析¶
-
报错信息:
Gdk-Message: Error 71 (协议错误) dispatching to Wayland display -
分析:Clash Verge Rev 的 Dashboard 使用
WebKitGTK作为渲染引擎。WebKitGTK在 Wayland 下运行时,可能遇到一些兼容性问题,导致Wayland 合成器(mutter / kwin)收到了一个非法或损坏的协议请求。Wayland 选择直接终止该连接,从而导致应用程序崩溃。
解决方法¶
找到clash-verge的启动脚本:
/usr/share/applications/Clash-verge.desktop:这是只读文件,需要使用root权限修改。下次更新可能会覆盖此文件。~/.local/share/applications/Clash-verge.desktop:如果没有这个文件,可以手动创建一个,内容与/usr/share/applications/Clash-verge.desktop相同。读取启动脚本时,用户目录优先级应当是大于系统目录的,不会因更新而被覆盖。
修改启动脚本Exec行,添加环境变量WEBKIT_DISABLE_COMPOSITING_MODE=1:
如果改的是系统目录下的文件,需要执行:
后续问题¶
重启后,发现clash-verge依然闪退,但是/usr/share/applications/Clash-verge.desktop和~/.local/share/applications/Clash-verge.desktop下都是正确的Exec行。
联想到我是使用gnome-tweaks管理启动应用的,怀疑是gnome-tweaks缓存了旧的启动配置。我将gnome-tweaks中Clash-verge的启动配置删除后重新添加,问题解决。