一、前置准备:安装Compton
在开始前,需确保系统已安装Compton(轻量级X11复合管理器)。通过包管理器安装(以Debian/Ubuntu为例):
sudo apt update && sudo apt install compton
安装完成后,Compton可手动启动或添加至系统启动项。
二、配置Compton基础参数(可选但建议)
虽然Compton本身无专门“窗口抖动”参数,但可通过调整动画相关设置优化抖动效果的流畅度和强度:
mkdir -p ~/.config/compton && nano ~/.config/compton/compton.conf
# 动画持续时间(秒):数值越小,抖动越快
animation-duration = 0.3;
# 动画步长:控制抖动的细腻程度,建议0.05-0.1
animation-step = 0.1;
保存并退出(Ctrl+X→Y→Enter)。三、实现窗口抖动的核心方法
Compton无内置“窗口抖动”开关,需通过外部脚本+Compton组合实现。以下是两种常用方案:
xdotool可模拟键盘/鼠标输入及窗口操作,适合需要自定义抖动轨迹的场景:
sudo apt install xdotool x11-utils # 需xwininfo获取窗口几何信息
~/scripts/window_jitter.sh):#!/bin/bash
# 获取当前活动窗口ID
WINDOW_ID=$(xdotool getactivewindow)
# 获取窗口当前位置(x,y坐标)
POS=$(xdotool getwindowgeometry --shell $WINDOW_ID | grep -E 'POSITION_X|POSITION_Y' | cut -d'=' -f2)
read -r X Y <<< "$POS"
# 抖动参数:偏移量(像素)、循环次数(抖动频率)
OFFSET=15
ITERATIONS=10
# 执行抖动(左右随机偏移)
for ((i=0; i<ITERATIONS; i++)); do
# 生成随机偏移量(-OFFSET到+OFFSET之间)
DX=$((RANDOM % (OFFSET * 2) - OFFSET))
DY=$((RANDOM % (OFFSET * 2) - OFFSET))
# 移动窗口
xdotool windowmove $WINDOW_ID $((X + DX)) $((Y + DY))
# 短暂延迟(控制抖动速度)
usleep 100000 # 100毫秒
done
# 恢复窗口原始位置
xdotool windowmove $WINDOW_ID $X $Y
chmod +x ~/scripts/window_jitter.sh
~/scripts/window_jitter.sh,或绑定至快捷键(如GNOME的“设置→键盘→快捷键”)。若需抖动所有窗口(而非单个活动窗口),可使用以下脚本遍历窗口:
#!/bin/bash
# 获取所有窗口ID(Compton管理的窗口)
WINDOWS=$(compton --query | grep -oP '0x[0-9a-f]+')
# 抖动参数
OFFSET=10
ITERATIONS=8
DELAY=0.05 # 每次抖动的间隔(秒)
for WINDOW in $WINDOWS; do
# 获取窗口位置
GEOM=$(xwininfo -id $WINDOW | grep Geometry)
X=$(echo $GEOM | awk '{print $2}' | cut -d'+' -f1)
Y=$(echo $GEOM | awk '{print $2}' | cut -d'+' -f2)
for ((i=0; i<ITERATIONS; i++)); do
DX=$((RANDOM % (OFFSET * 2) - OFFSET))
DY=$((RANDOM % (OFFSET * 2) - OFFSET))
xdotool windowmove $WINDOW $((X + DX)) $((Y + DY))
sleep $DELAY
done
xdotool windowmove $WINDOW $X $Y
done
运行方式同方案1。
四、自动启动Compton(可选)
若需每次登录系统自动启用Compton,可将启动命令添加至桌面环境的“启动应用程序”中:
compton -c ~/.config/compton/compton.conf
注意事项
ITERATIONS(迭代次数)和DELAY(延迟)参数降低性能影响。OFFSET(偏移量)或减小DELAY(延迟)。