在 Ubuntu 22.04 下修复 Clash Verge UI 问题

背景

Ubuntu 22.04.5 LTS(默认 Wayland 会话)下使用 Clash Verge 2.4.5 时,很多用户会遇到 UI 显示异常的问题,例如:

  • 界面空白 / 布局错乱
  • 按钮不可见

这是一个 已知的 Wayland + WebKit 渲染兼容性问题,并非 Clash Verge 本身的逻辑错误。

Clash Verge 官方 FAQ 中推荐的解决方案之一是:

禁用 WebKit 的 DMABUF GPU 渲染路径

对应的环境变量是:

WEBKIT_DISABLE_DMABUF_RENDERER=1

本文记录如何在 Ubuntu 22.04.5 LTS 上,将该方案永久写死到 Clash Verge 的启动器中,实现 GUI 启动无感修复

适用环境

  • OS:Ubuntu 22.04.5 LTS
  • 桌面:GNOME(Wayland)
  • Clash Verge:2.4.5
  • 安装方式:.deb

方案说明

我们采用的是官方的 启动失败:Error 71 解决方案:

WEBKIT_DISABLE_DMABUF_RENDERER=1 clash-verge

但不是每次手动在终端输入,而是:

修改 Clash Verge 的 .desktop 启动器,让系统每次启动都自动携带该环境变量

这种方式的优点:

  • 不切换系统会话(仍然使用 Wayland)
  • 不影响其他应用
  • GUI / 搜索 / Dock 启动都生效
  • 更新 Clash Verge 不容易被覆盖

具体步骤

1. 找到 Clash Verge 的 desktop 文件

系统级 desktop 文件一般位于:

/usr/share/applications

检查是否存在 Clash Verge:

ls /usr/share/applications | grep -i Clash

通常可以看到:

Clash-verge.desktop

2. 复制 desktop 文件到用户目录(重要)

不要直接修改系统目录下的文件,否则可能在更新时被覆盖。

mkdir -p ~/.local/share/applications
cp /usr/share/applications/Clash-verge.desktop ~/.local/share/applications/

之后我们只修改用户级启动器。

3. 编辑 Clash Verge 启动器

使用文本编辑器打开:

nano ~/.local/share/applications/Clash-verge.desktop

找到 Exec= 行,通常是:

Exec=clash-verge

或:

Exec=clash-verge %U

4. 修改 Exec 行(核心步骤)

将其修改为:

Exec=env WEBKIT_DISABLE_DMABUF_RENDERER=1 clash-verge

如果原本带参数(如 %U),请保留:

Exec=env WEBKIT_DISABLE_DMABUF_RENDERER=1 clash-verge %U

5. 保存并退出

在 nano 中:

  • Ctrl + O 保存
  • 回车确认
  • Ctrl + X 退出

6. 重新启动 Clash Verge

  • 关闭当前所有 Clash Verge 窗口
  • 不要用终端启动
  • 应用菜单 / 搜索 / Dock 启动 Clash Verge

此时 UI 应该已经恢复正常。

验证方式(可选)

如果 Clash Verge UI 显示正常,说明已经生效。

也可以通过进程查看(非必须):

ps aux | grep clash-verge

原理简述

Clash Verge 的 UI 基于 WebKit / WebView。

Wayland + 部分显卡驱动 环境下,WebKit 默认使用 DMABUF(GPU buffer)渲染路径,可能会在创建 GBM buffer 时失败,导致 UI 渲染异常。

环境变量:

WEBKIT_DISABLE_DMABUF_RENDERER=1

会强制 WebKit 使用 软件/兼容渲染路径,从而绕过该问题。

这是 Clash Verge 官方 FAQ 中明确给出的解决方案之一。