温馨提示×

如何用Compton配置实现自定义主题

小樊
39
2025-12-27 20:13:43
栏目: 编程语言

用 Compton 配置实现自定义主题

一 准备与基础配置

  • 确认会话与安装:Compton 仅适用于 Xorg 会话,在 Wayland 下不生效。按需安装:Debian/Ubuntu 执行 sudo apt install compton,Arch 执行 sudo pacman -S compton。配置文件默认路径为 ~/.config/compton.conf,不存在可创建:mkdir -p ~/.config && nano ~/.config/compton.conf。建议先准备一份最小可用配置,再逐步加入主题项(如阴影、模糊、不透明度规则等)。

二 主题化配置的核心维度与示例

  • 颜色与背景:通过 background(纯色背景)与窗口 opacity/opacity-rule(按应用设定不透明度)形成主题基调。示例:整体半透明、特定应用更不透明。
  • 阴影与模糊:用 shadow / shadow-radius / shadow-offset-x / shadow-offset-y / shadow-opacity 定义主题阴影风格;用 blur { method = “gaussian”; size = 10; deviation = 5.0; } 控制背景模糊强度与范围。
  • 渲染与同步:选择 backend = “glx”(或 xrender 以提升兼容性),用 vsync = true 减少撕裂。
  • 动效:用 fade / fade-delta 控制窗口切换的淡入淡出,数值越小越顺滑、开销略增。
  • 示例主题(暗色玻璃风,保存为 ~/.config/compton.conf):
    # 渲染与同步
    backend = "glx";
    vsync = true;
    
    # 背景(无透明时生效)
    background = "#1e1e1e";
    
    # 阴影
    shadow = true;
    shadow-radius = 12;
    shadow-offset-x = 2;
    shadow-offset-y = 2;
    shadow-opacity = 0.45;
    
    # 淡入淡出
    fade = true;
    fade-delta = 8;
    
    # 窗口不透明度规则(语法:"不透明度:匹配条件")
    opacity-rule = [
        "92:class_g = 'Firefox'",
        "94:class_g = 'Alacritty'",
        "90:class_g = 'Thunar'"
    ];
    
    # 排除不需要阴影的窗口
    shadow-exclude = [
        "class_g 'GtkMenu'",
        "class_g 'GtkDialog'",
        "class_g 'Notification'"
    ];
    
    # 背景模糊(若所用构建支持;部分版本/构建可能无此项)
    blur-background = true;
    blur {
        method = "gaussian";
        size = 10;
        deviation = 5.0;
    }
    
    说明:不同构建对 blur-background / screen_edge_blur 等开关的支持存在差异,如配置项不存在请先确认版本与构建配置。

三 多主题切换与自启动

  • 多文件法(推荐):为不同主题准备多个配置,如 ~/.config/compton-dark.conf~/.config/compton-light.conf。通过环境变量指定配置启动:例如在 ~/.xprofile 或会话启动脚本中写入:
    # 切换为暗色主题
    export COMPTON_CONFIG="$HOME/.config/compton-dark.conf"
    compton --config "$COMPTON_CONFIG" &
    
    需要切换主题时,仅修改 COMPTON_CONFIG 并重启 Compton 进程。
  • systemd 用户服务(稳定自启动):创建 ~/.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=default.target
    
    启用与启动:
    systemctl --user daemon-reload
    systemctl --user enable --now compton.service
    
    切换主题时,更新 ExecStart 中的配置文件路径或替换软链接,然后执行 systemctl --user restart compton.service
  • 热重载:调试阶段可用命令快速重启:pkill compton && compton --config ~/.config/compton.conf &

四 常见问题与性能优化

  • 性能优先:不需要时关闭 shadowfade;减少 opacity-rule / blur 规则数量;驱动良好时优先 glx/egl,兼容性需求再退回 xrender
  • 画面异常排查:出现花屏/残影可切换 backend,或调整 glx-damage / glx-fbo / glx-no-stencil 等 OpenGL 细节;有撕裂可开启 vsync,若输入延迟敏感可在本机验证后决定是否关闭。
  • 阴影与模糊细节:完善 shadow-exclude 规则,排除菜单、通知、Dock/面板等不需要阴影或模糊的元素,避免不必要的混合开销。

0