Compton 实现画面缩放的实用方法
一、先明确缩放目标
- 全局显示缩放:改变整个屏幕的显示比例(如把 4K 屏按 2 倍显示)。这类设置不属于 Compton,应通过系统的显示缩放或 xrandr 完成;Compton 只负责合成与特效。若需放大整个画面,请优先用系统设置或 xrandr 的 scale 功能,然后再启动 Compton 进行合成。
二、在 Compton 中可用的缩放手段
- 窗口级缩放(推荐):对指定窗口做缩放、平移,适合“放大某个应用/游戏窗口”的场景。做法是在配置中使用 transform 规则,或在命令行传入 transform。示例:transform = “translate(0px, 0px), scale(1.25, 1.25)” 将窗口放大到 1.25 倍;也可只对特定窗口生效(见下方规则示例)。
- 全屏/输出级缩放(有限支持):部分构建的 compton 支持在配置中为某个输出设置 scale(如 screen0 { output = “HDMI-1”; scale = 2.0; }),但并非所有版本都有该字段;若你的版本不支持,应改用 xrandr 完成输出级缩放,再由 Compton 合成。
三、配置文件示例
- 全局启用 OpenGL 加速(性能更好),并对特定应用做 1.25 倍缩放,同时保留阴影与透明度:
backend = "glx";
vsync = true;
# 对 Firefox 窗口放大到 1.25 倍,并向右下各平移 10px(避免内容被任务栏遮挡)
opacity-rule = [
"class='Firefox'",
"class='Chromium'"
];
transform = [
"class='Firefox' translate(10px, 10px), scale(1.25, 1.25)",
"class='Chromium' translate(10px, 10px), scale(1.25, 1.25)"
];
shadow = true;
shadow-radius = 6;
shadow-opacity = 0.4;
- 说明:
- 将 class 换成你需要放大的程序窗口的 WM_CLASS(可用 xprop 获取)。
- 若需要“缩小”,使用小于 1 的因子(如 0.8)。
- 若版本不支持 transform 数组语法,可改为多条顶层 transform 规则(旧语法同样支持 translate + scale)。
四、命令行快速验证
- 直接对当前会话测试窗口缩放(以 Firefox 为例):
compton --backend glx --vsync true \
--transform "class='Firefox' translate(10px, 10px), scale(1.25, 1.25)" \
--shadow true --shadow-radius 6 --shadow-opacity 0.4
五、常见问题与建议
- 性能与兼容性:缩放/模糊等特效会增加 GPU/CPU 负载;若出现卡顿,可降低或关闭阴影、模糊,或改用更轻量的后端(如 xrender)。多屏时优先确保 OpenGL 加速开启(backend = “glx”),并合理设置刷新率与帧率限制。
- 获取窗口类名:运行 xprop | grep WM_CLASS,在结果中查看应用程序的 class 名称,用于编写 transform/opacity-rule 的匹配规则。
- 何时不用 Compton 缩放:若目标是“系统级 DPI/显示缩放”,请用系统设置或 xrandr 完成;Compton 更适合做“窗口级特效与局部缩放”。