插件窝 干货文章 Linux Compton与Wayland如何搭配

Linux Compton与Wayland如何搭配

Picom Wayland 合成器 xwayland 743    来源:    2025-05-04

在 Wayland 环境下使用 Compton(现通常指 Picom,Compton 的分支)需要特别注意 Wayland 的合成器架构差异。以下是详细配置指南和注意事项:


1. 确认 Wayland 环境

Wayland 本身不依赖独立的合成器(如 Xorg 的 Compton/Picom),因为合成功能已由 Wayland 合成器(如 westonswaymutter 等)原生提供。但部分 Wayland 合成器允许通过 Picom 增强特效。

检查当前会话:

echo $XDG_SESSION_TYPE

若输出 wayland,则确认处于 Wayland 环境。


2. Wayland 下的替代方案

A. 使用支持特效的 Wayland 合成器

  • Sway (wlroots-based):内置特效支持,可通过 sway-effects 等插件实现透明度、阴影等。
  • Mutter (GNOME):通过扩展(如 blur-my-shell)实现模糊效果。
  • Hyprland:原生支持动画、模糊等高级特效,无需 Picom。

B. 使用 xwayland 模式运行 Picom

若部分 X11 应用在 Wayland 中运行(通过 XWayland),可针对它们启动 Picom:

picom --backend xr_glx_hybrid --xrender-sync-fence

参数说明: - --backend xr_glx_hybrid:兼容 XWayland 的最佳后端。 - --xrender-sync-fence:避免画面撕裂。


3. 配置 Picom 的 Wayland 兼容模式

编辑 ~/.config/picom/picom.conf

backend = "glx";
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
xrender-sync-fence = true;

# 透明和阴影设置(仅对 XWayland 窗口生效)
opacity-rule = [
    "90:class_g = 'Alacritty'",
    "80:class_g = 'Code'"
];
shadow = true;
shadow-radius = 12;

关键点: - 仅对 XWayland 窗口生效,原生 Wayland 窗口不受影响。 - 避免使用 vsyncuse-damage,可能导致问题。


4. 启动 Picom

手动启动(调试用)

picom --config ~/.config/picom/picom.conf --log-level DEBUG

检查日志确认是否识别到 XWayland 窗口。

自动启动(如 Sway/Wayfire)

在 Wayland 合成器配置文件中(如 ~/.config/sway/config)添加:

exec_always picom --config ~/.config/picom/picom.conf

5. 常见问题解决

问题1:Picom 对原生 Wayland 窗口无效

  • 原因:Wayland 协议限制,Picom 无法直接控制原生 Wayland 窗口。
  • 解决:改用合成器内置特效(如 Sway 的 for_window 规则设置透明度)。

问题2:画面闪烁或卡顿

  • 解决:更换后端或禁用某些特性: ini backend = "xrender"; vsync = false;

问题3:Picom 崩溃

  • 解决:更新至最新版本(如 Picom 的 jonaburg 分支支持更多特性): bash git clone https://github.com/jonaburg/picom cd picom && meson setup --buildtype=release . build ninja -C build && sudo ninja -C build install

6. 推荐方案

  • 轻度需求:直接使用 Wayland 合成器的内置特效。
  • XWayland 窗口需求:搭配 Picom 的 xr_glx_hybrid 后端。
  • 高级特效:切换到支持特效的合成器(如 Hyprland)。

通过以上步骤,可以在 Wayland 环境中合理利用 Picom 增强 XWayland 应用的外观,同时保持系统稳定性。