温馨提示×

如何配置Compton实现透明效果

小樊
42
2025-12-31 10:03:34
栏目: 编程语言

配置 Compton 实现透明效果

一 安装与准备

  • X11 会话中使用 Compton(Wayland 不适用)。在常见发行版安装:
    • Debian/Ubuntu: sudo apt update && sudo apt install compton
    • Fedora: sudo dnf install compton
    • Arch: sudo pacman -S compton
  • 检查版本:compton --version
  • 注意:部分桌面环境(如 GNOME)自带合成器,可能与 Compton 冲突,需先在其设置中关闭自带合成或改用兼容方案。

二 创建基础配置

  • 生成配置文件:
    • mkdir -p ~/.config && touch ~/.config/compton.conf
  • 使用最小可用配置起步(保存到 ~/.config/compton.conf):
    # 渲染后端:优先 glx(需 OpenGL/GLX),不行再试 xrender
    backend = "glx";
    
    # 全局不透明度(0.0~1.0,1.0 为不透明)
    opacity = 0.9;
    
    # 活动/非活动窗口透明度(更直观的聚焦高亮)
    active-opacity = 0.95;
    inactive-opacity = 0.8;
    
    # 让菜单、弹出层等覆盖层保持不透明
    focus-exclude = "x 0 && y 0 && override_redirect true";
    
    # 性能与渲染
    vsync = true;
    shadow = true;
    frame-rate = 60;
    
  • 说明:
    • opacity 是全局默认;active-opacity/inactive-opacity 会覆盖默认,便于实现“聚焦更清晰、非聚焦更透明”。
    • focus-exclude 常用于排除 dmenurofi 等覆盖层,避免被非活动规则透明化。

三 按应用与状态设置透明规则

  • 使用 opacity-rule 精确控制不同窗口/状态的透明度(数组,每项格式为 “透明度:匹配条件”):
    opacity-rule = [
      "90:class_g 'Firefox'",
      "90:name 'Terminal'",
      "100:class_g 'Xephyr'",
    
      # 终端:聚焦 90%,非聚焦 60%
      "90:name *? 'alacritty' && focused",
      "60:name *? 'alacritty' && !focused",
    
      # 编辑器:聚焦 90%,非聚焦 60%
      "90:name *? 'VIM' && focused",
      "60:name *? 'VIM' && !focused",
    
      # 特定应用保持高不透明
      "95:class_g 'Typora'",
      "95:class_g 'Spyder'"
    ];
    
  • 提示:匹配可用 class_g(按应用类)、name(按窗口名,支持通配 *?)、以及 _NET_WM_STATE 等 EWMH 属性;可按需增减规则。

四 启动与自启动

  • 手动前台调试:
    • compton --config ~/.config/compton.conf
  • 后台常驻:
    • compton --config ~/.config/compton.conf -b
  • 开机自启动(systemd 用户服务,推荐):
    • 新建:nano ~/.config/systemd/user/compton.service
    • 内容:
      [Unit]
      Description=Compton Compositor
      After=graphical-session.target
      
      [Service]
      ExecStart=/usr/bin/compton --config %h/.config/compton.conf
      Restart=always
      
      [Install]
      WantedBy=graphical-session.target
      
    • 启用并启动:
      • systemctl --user daemon-reload
      • systemctl --user enable --now compton.service
  • 其他桌面:也可将 compton --config ~/.config/compton.conf -b 加入会话的“启动应用程序”。

五 常见问题与优化

  • 合成器冲突:若使用 GNOME/KDE/Xfce 等自带合成器,先在其设置中关闭,避免撕裂、卡顿或透明失效。
  • 性能与画面:
    • 优先使用 backend = “glx”;如遇问题再试 xrender
    • 开启 vsync = true 减少撕裂;将 frame-rate 设为 60(或按显示器刷新率)平衡流畅与功耗。
  • 覆盖层不透明:对 dmenu/rofi 等使用 focus-exclude = "x 0 && y 0 && override_redirect true" 保持可读性。
  • 背景模糊(可选):部分分支/版本支持如 blur-background = true; 等参数;若选项不存在请升级或更换构建版本。
  • 调试技巧:将 log-level = "debug"; 写入配置,通过日志定位匹配规则或渲染问题。

0