Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Linux: forced WEBKIT_DISABLE_DMABUF_RENDERER=1 makes the main window transparent on WebKitGTK 2.54 (only repainted regions show)

未关闭
#2,624 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@AatmanAJ 已经在做这个了。

开始于 2026年10月15日。

  • #2628 来自 @AatmanAJ —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
linux, rust, tauri
领域
desktop

调研方向

The forced variable is set unconditionally in apps/desktop/src-tauri/src/main.rs, lines 48-51, under a #[cfg(target_os = "linux")] block. Read that block, then check the linked PR #2628 before starting, since it is already open against this issue. Done means the variable is skipped when the user has already set it, and the window renders on WebKitGTK 2.54 without the shim.

由索引模型根据 Issue 内容生成。

描述

Description

On Linux with WebKitGTK 2.54, Cap's main window is almost entirely invisible. The window exists (KWin reports it mapped, 330×395, not hidden/minimized), but only the regions that get repainted show up: a hovered button, a toggle being animated, etc. Everything else stays transparent, so you see the desktop through the window.

The cause is the unconditional override added for #1948:

https://github.com/CapSoftware/Cap/blob/83237e994efb1e9842933d279ae2b338549be545/apps/desktop/src-tauri/src/main.rs#L48-L51

#[cfg(target_os = "linux")]
unsafe {
    std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1");
}

With WebKitGTK 2.54, disabling the DMABUF renderer on a transparent window makes WebKit repaint only the damaged areas, and the rest of the surface is never painted. Other Tauri projects hit the same regression on 2.54 (e.g. rogeriojunior31/vultures-ai#126, xnmp/tauri-explorer#1057).

Because the variable is overwritten with set_var, users can't opt out: running WEBKIT_DISABLE_DMABUF_RENDERER=0 Cap still yields WEBKIT_DISABLE_DMABUF_RENDERER=1 in the environment of Cap's WebKitWebProcess (checked via /proc/<pid>/environ).

Reproduction
  1. Debian 13, KDE Plasma 6.3 Wayland, WebKitGTK 2.54.0.
  2. Install Cap 0.6.0 (.deb) and launch it.
  3. The main window is transparent except for elements being hovered or animated.
What I tried

All of these still show the bug, because the forced variable stays in effect:

  • GDK_BACKEND=x11 (XWayland)
  • WEBKIT_DISABLE_COMPOSITING_MODE=1
  • WEBKIT_SKIA_ENABLE_CPU_RENDERING=1
  • forcing Mesa EGL instead of NVIDIA (__EGL_VENDOR_LIBRARY_FILENAMES=.../50_mesa.json)
  • WEBKIT_FORCE_COMPOSITING_MODE=1

Workaround that fixes it: an LD_PRELOAD shim that turns setenv("WEBKIT_DISABLE_DMABUF_RENDERER", …) into a no-op. With the variable unset, the window renders fully and correctly on this machine.

#define _GNU_SOURCE
#include <dlfcn.h>
#include <string.h>
int setenv(const char *name, const char *value, int overwrite) {
    static int (*real)(const char *, const char *, int);
    if (!real) real = dlsym(RTLD_NEXT, "setenv");
    if (name && strcmp(name, "WEBKIT_DISABLE_DMABUF_RENDERER") == 0) return 0;
    return real(name, value, overwrite);
}
Suggested fix

At minimum, respect a value the user already set, so people can opt out without a shim:

#[cfg(target_os = "linux")]
if std::env::var_os("WEBKIT_DISABLE_DMABUF_RENDERER").is_none() {
    unsafe { std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); }
}

Better still, don't apply the workaround by default on WebKitGTK ≥ 2.54 (or limit it to the configurations from #1948), since it now breaks rendering instead of fixing it.

Environment
  • Cap 0.6.0 (.deb)
  • Debian GNU/Linux 13 (trixie), kernel 6.12
  • KDE Plasma / KWin 6.3.6, Wayland session
  • libwebkit2gtk-4.1 2.54.0
  • Hybrid GPU: Intel Raptor Lake UHD (i915) + NVIDIA RTX 4060 Laptop (driver 555.58.02)

Related: #1948, #1553

主要语言
Rust
星标
23.2k
派生
2k
平均合并
1 天 5 小时
30 天内合并 PR
130

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

CapSoftware/Cap 的其他 Issue

查看 CapSoftware/Cap 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。