插件窝 干货文章 Compton配置文件详解:如何自定义设置

Compton配置文件详解:如何自定义设置

shadow opacity 窗口 Compton 878    来源:    2025-05-08

Compton 配置文件详解:自定义设置指南

Compton 是一个轻量级的 X11 合成管理器,用于提供窗口透明、阴影、淡入淡灭等视觉效果。以下是对 Compton 配置文件的详细解析和自定义设置方法。

基本配置文件结构

Compton 的配置文件通常位于 ~/.config/compton.conf/etc/xdg/compton.conf。基本结构如下:

# 后台运行
backend = "glx";
paint-on-overlay = true;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;

# 阴影设置
shadow = true;
shadow-radius = 12;
shadow-offset-x = -15;
shadow-offset-y = -15;
shadow-opacity = 0.75;
shadow-exclude = [ ... ];

# 透明度设置
inactive-opacity = 0.8;
active-opacity = 1.0;
frame-opacity = 1.0;
inactive-opacity-override = false;
opacity-rule = [ ... ];

# 淡入淡出效果
fading = true;
fade-delta = 10;
fade-in-step = 0.03;
fade-out-step = 0.03;

主要配置选项详解

1. 后端选择

# 可选值: xrender, glx
backend = "glx";

# 使用GLX后端时的优化选项
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
glx-copy-from-front = false;
  • glx 通常性能更好,但 xrender 兼容性更广
  • 如果遇到图形问题,可以尝试切换后端

2. 阴影设置

shadow = true;                  # 启用阴影
shadow-radius = 12;             # 阴影模糊半径
shadow-offset-x = -15;          # 阴影水平偏移
shadow-offset-y = -15;          # 阴影垂直偏移
shadow-opacity = 0.75;          # 阴影不透明度

# 排除不需要阴影的窗口
shadow-exclude = [
    "name = 'Notification'",
    "class_g = 'Conky'",
    "class_g ?= 'Notify-osd'",
    "class_g = 'Cairo-clock'",
    "_GTK_FRAME_EXTENTS@:c"
];

3. 透明度设置

inactive-opacity = 0.8;         # 非活动窗口透明度
active-opacity = 1.0;           # 活动窗口透明度
frame-opacity = 1.0;            # 窗口边框透明度
inactive-opacity-override = false; # 是否覆盖窗口自身设置的透明度

# 特定窗口的透明度规则
opacity-rule = [
    "90:class_g = 'Alacritty'",
    "85:class_g = 'Termite'",
    "80:class_g = 'URxvt'"
];

4. 淡入淡出效果

fading = true;                  # 启用淡入淡出
fade-delta = 10;                # 淡入淡出时间(毫秒)
fade-in-step = 0.03;            # 淡入步长
fade-out-step = 0.03;           # 淡出步长
fade-exclude = [];              # 排除淡入淡出的窗口

5. 窗口规则

# 排除特定窗口的合成效果
unredir-if-possible-exclude = [
    "class_g = 'Firefox'"
];

# 不绘制特定窗口
no-dnd-shadow = true;
no-dock-shadow = true;
clear-shadow = true;

高级自定义技巧

1. 性能优化

# 启用vsync防止屏幕撕裂
vsync = true;

# 降低刷新率以节省资源
refresh-rate = 60;

# 禁用某些特效以提高性能
detect-rounded-corners = false;
detect-client-opacity = false;

2. 特定窗口匹配规则

Compton 使用与 xprop 相同的语法来匹配窗口:

# 匹配窗口类名
"class_g = 'Firefox'"

# 匹配窗口实例名
"class_i = 'firefox'"

# 匹配窗口标题
"name = 'Google Chrome'"

# 组合条件
"class_g = 'Termite' && !_NET_WM_STATE@:32a"

3. 多显示器配置

# 为不同显示器设置不同参数
shadow-red = 0.0;
shadow-green = 0.0;
shadow-blue = 0.0;

# 主显示器设置
shadow-radius = 12;
shadow-offset-x = -15;
shadow-offset-y = -15;

# 副显示器设置
shadow-radius-secondary = 8;
shadow-offset-x-secondary = -10;
shadow-offset-y-secondary = -10;

常见问题解决

  1. 屏幕撕裂问题

    vsync = true;
    backend = "glx";
    glx-swap-method = "buffer-age";
    
  2. 性能问题

    backend = "xrender";
    paint-on-overlay = true;
    glx-no-stencil = true;
    
  3. 特定应用程序显示异常

    shadow-exclude = [ "class_g = 'ProblematicApp'" ];
    unredir-if-possible-exclude = [ "class_g = 'FullscreenApp'" ];
    

配置文件示例

以下是完整的配置文件示例:

#################################
#             Shadows           #
#################################

shadow = true;
shadow-radius = 12;
shadow-offset-x = -15;
shadow-offset-y = -15;
shadow-opacity = 0.75;
shadow-exclude = [
    "name = 'Notification'",
    "class_g = 'Conky'",
    "class_g ?= 'Notify-osd'",
    "class_g = 'Cairo-clock'",
    "_GTK_FRAME_EXTENTS@:c"
];

#################################
#           Opacity             #
#################################

inactive-opacity = 0.8;
active-opacity = 1.0;
frame-opacity = 1.0;
inactive-opacity-override = false;
opacity-rule = [
    "90:class_g = 'Alacritty'",
    "85:class_g = 'Termite'",
    "80:class_g = 'URxvt'"
];

#################################
#           Fading              #
#################################

fading = true;
fade-delta = 10;
fade-in-step = 0.03;
fade-out-step = 0.03;
fade-exclude = [];

#################################
#   Transparency / Compositing  #
#################################

backend = "glx";
paint-on-overlay = true;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;

#################################
#           Corners             #
#################################

corner-radius = 10;
rounded-corners-exclude = [
    "window_type = 'dock'",
    "window_type = 'desktop'"
];

测试和应用配置

  1. 测试配置:

    compton --config ~/.config/compton.conf --backend glx --shadow
    
  2. 作为守护进程运行:

    compton --config ~/.config/compton.conf -b
    
  3. 重新加载配置(需要杀死并重新启动 Compton):

    pkill compton && compton --config ~/.config/compton.conf -b
    

通过合理配置 Compton,您可以在保持系统性能的同时获得美观的视觉效果。根据您的硬件和需求调整参数,找到最适合您的平衡点。