Compton 与 Wayland 的协同工作方式
一 核心概念与总体关系
- Wayland 是 Linux 的现代显示服务器协议,采用 compositor/client 模型:由**合成器(compositor)**直接与显示硬件交互、完成窗口合成与呈现;应用作为客户端通过 Wayland 协议与合成器通信。
- Compton 传统上是 X11 的窗口合成器/混成器(常被称为“compositor”),负责阴影、透明度、淡入淡出等效果。
- 在 Wayland 会话中,真正的合成职责由桌面自带的 Wayland 合成器承担(如 GNOME 的 Mutter、KDE 的 KWin、或 Weston 等)。Compton 并不能替代它们;若需要类似效果,应在相应桌面/合成器内启用,而不是在 Wayland 会话里再运行一个 X11 合成器。
二 典型协作路径
- 在 Xorg 会话 中:Compton 作为 X11 合成器运行,拦截窗口绘制、进行合成与特效处理,然后输出到屏幕。
- 在 Wayland 会话 中:由 Mutter/KWin/Weston 等 Wayland 合成器负责与内核 DRM/KMS、GPU 驱动交互与合成;Compton 不参与 Wayland 的合成链路。若需要阴影/模糊等效果,应在 Mutter/KWin 的配置中启用相应选项,或使用支持 Wayland 的替代方案(如 picom 的新版本在部分环境可作为 Wayland 合成器使用)。
- 嵌入式或定制平台:常见做法是使用 Weston 作为参考合成器,底层选择 DRM 或 FBDEV 显示引擎;这类场景同样不需要 Compton。
三 配置与排错要点
- 确认会话类型:登录界面选择 GNOME/Xorg 或 GNOME on Xorg 才会使用 X11,此时可运行 Compton;选择 GNOME/Wayland 或 Plasma/Wayland 时由 Mutter/KWin 负责合成,Compton 不应再作为合成器启动。
- 在 Xorg 会话中启用 Compton:
- 安装:
sudo apt-get install compton(或发行版对应包管理器)。
- 配置:编辑 ~/.config/compton.conf(示例:开启阴影、模糊等)。
- 启动:可写入会话自启(如桌面会话的启动脚本)或使用 systemd 用户服务;注意 systemd 服务应设为 After=graphical-session.target,避免与显示管理器冲突。
- 常见误区:在 Wayland 会话里再启动 Compton 通常不会生效,也不会成为合成器;应改为在桌面/合成器内启用所需效果,或切换到 Xorg 会话再使用 Compton。
四 实践建议
- 桌面环境优先:在 GNOME/KDE 中优先使用其内置合成与特效配置;需要模糊/透明时,优先调整 Mutter/KWin 的相关设置或扩展。
- 嵌入式/定制:使用 Weston + DRM/KMS 的组合进行合成与显示,无需 Compton。
- 若必须使用 Compton:选择 Xorg 会话,按需配置阴影、透明度、淡入淡出等效果,并通过会话自启或 systemd 用户服务管理生命周期。