温馨提示×

Linux Compton配置中透明度如何设置

小樊
31
2025-12-14 02:53:14
栏目: 智能运维

Compton 透明度设置指南

一 配置思路与关键点

  • 使用 opacity-rule 按窗口类、名称或状态设置透明度,语法为:“透明度:条件”,透明度用 0–100(百分比)表示。示例:“90:class_g ‘Firefox’” 表示类名为 Firefox 的窗口透明度为 90%。
  • 使用 focus-exclude 排除特定窗口(如弹出菜单、覆盖层)使其保持不透明,例如排除位于左上角的 dmenu“x 0 && y 0 && override_redirect true”
  • 使用 ignore_root true 可忽略桌面根窗口的透明度,避免背景被透出。
  • 使用 background-opacity 设置桌面背景的透明度(如:0.8 表示 80% 不透明)。
  • 使用 fade 系列参数控制透明度变化时的淡入淡出效果(如:fade-in-step、fade-out-step、fade-exclude)。
  • 注意:Compton 仅适用于 X11 会话;在 Wayland 下无法正常工作。

二 配置文件示例

# ~/.config/compton.conf
backend = "xrender"
vsync = true
shadow = true

# 背景透明度(0.0–1.0,1.0 为不透明)
background-opacity = 0.9

# 淡入淡出步长(数值越小越平滑,但可能更耗资源)
fade-in-step = 0.03
fade-out-step = 0.03

# 按窗口设置透明度
opacity-rule = [
  "90:class_g 'Firefox'",
  "90:name 'Terminal'",
  "95:class_g 'alacritty' && !_NET_WM_STATE@:32a",   # 未全屏时 95%
  "0:_NET_WM_STATE@:32a * '_NET_WM_STATE_HIDDEN'"   # 隐藏窗口完全透明
]

# 排除特定窗口(如 dmenu 覆盖层)
focus-exclude = "x 0 && y 0 && override_redirect true"

# 忽略根窗口透明度
ignore_root = true
  • 说明:上述规则综合使用了窗口类/名称匹配、状态匹配(如 _NET_WM_STATE)、以及排除规则,便于实现“聚焦更不透明、未聚焦更透明”的常见效果。

三 应用与热重载

  • 手动重启 Compton(确保先结束旧进程):
    killall compton
    compton --config ~/.config/compton.conf &
    
  • 使用 systemd 用户服务(若已配置):
    systemctl --user restart compton
    
  • 命令行临时覆盖(示例):
    compton -b -r 0.5 -i 0.8
    
    其中 -b 后台运行,-r 0.5 设置全局透明度为 50%,-i 0.8 设置聚焦窗口透明度为 80%(示例值,具体以你的 Compton 版本参数为准)。

四 常见问题与排查

  • 桌面环境自带合成器冲突:如 GNOME 自带 compositor,可能与 Compton 冲突。可尝试在系统设置中关闭自带合成,或改用其他复合器。
  • 性能与驱动:透明度与淡入淡出会占用一定 GPU/CPU,老旧显卡或驱动不佳时可能出现卡顿;优先确保 OpenGL/GLX 正常工作。
  • 规则不生效:优先用 xprop 检查窗口的 WM_CLASS、WM_NAME、_NET_WM_STATE 等属性,再微调 opacity-rulefocus-exclude 条件。
  • 会话限制:Compton 仅支持 X11Wayland 会话需改用其他方案(如桌面自带的合成器或其他 X11 复合器)。

0