温馨提示×

如何在Linux中为Compton配置自定义快捷键

小樊
35
2026-01-04 16:00:37
栏目: 智能运维

核心思路 Compton 本身不提供快捷键功能,需要在窗口管理器(如 i3、sway、awesome)里绑定键盘,通过执行 compton 命令或切换配置文件来改变透明、模糊等效果。也就是说,快捷键由窗口管理器处理,Compton 负责执行渲染效果。

i3 与 Sway 的配置示例

  • 在 i3 中绑定快捷键(示例:Alt+Shift+T 将窗口设为 50% 不透明)
    1. 打开 i3 配置:编辑 ~/.config/i3/config
    2. 添加绑定(将 $mod 替换为你的修饰键,如 Mod1=AltMod4=Super):
      # 将当前会话的窗口不透明度设为 50%
      bindsym $mod+Shift+t exec --no-startup-id compton --config /path/to/compton.conf --backend glx --alpha-threshold 1 --opacity 0.5
      
    3. 使配置生效:在 i3 中按 $mod+Shift+R,或执行命令:i3-msg reload
  • 在 Sway 中绑定快捷键(示例:Super+T 切换预设)
    1. 打开 Sway 配置:编辑 ~/.config/sway/config
    2. 添加绑定(Sway 使用 exec 执行命令):
      # 切换为“透明”预设
      bindsym $mod+t exec --no-startup-id compton --config ~/.config/compton/transparent.conf
      # 切换为“不透明”预设
      bindsym $mod+Shift+t exec --no-startup-id compton --config ~/.config/compton/opaque.conf
      
    3. 使配置生效:在 Sway 中按 $mod+Shift+R,或执行命令:swaymsg reload
  • 说明
    • 上述示例通过不同的配置文件切换效果,便于维护多套预设;也可直接在命令里覆盖少量参数(如 –opacity 0.5)。
    • 若你已在会话中运行 Compton,切换配置通常需要先结束旧进程再启动新进程;见下文“切换配置的正确姿势”。

切换配置的正确姿势

  • 推荐做法:用“切换脚本”避免重复启动多个 compton 实例
    1. 创建脚本(示例:/usr/local/bin/toggle-compton
      #!/usr/bin/env bash
      PIDFILE="$XDG_RUNTIME_DIR/compton.pid"
      CONF_DIR="$HOME/.config/compton"
      
      start() {
        if [[ -f "$PIDFILE" ]] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
          echo "Compton 已在运行 (PID $(cat "$PIDFILE"))"
          return 1
        fi
        compton --config "$CONF_DIR/$(cat "$CONF_DIR/current 2>/dev/null || echo default.conf)" &
        echo $! > "$PIDFILE"
      }
      
      stop() {
        if [[ -f "$PIDFILE" ]]; then
          kill "$(cat "$PIDFILE")" && rm -f "$PIDFILE"
        fi
      }
      
      case "$1" in
        start)  start ;;
        stop)   stop  ;;
        toggle)
          if [[ -f "$PIDFILE" ]] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
            stop && echo "已停止"
          else
            start && echo "已启动"
          fi
          ;;
        *) echo "用法: $0 {start|stop|toggle}"; exit 1 ;;
      esac
      
    2. 赋权:chmod +x /usr/local/bin/toggle-compton
    3. 在 i3/Sway 中绑定:
      bindsym $mod+Shift+t exec --no-startup-id toggle-compton toggle
      
    4. 预设切换示例(配合软链接或写入 current 文件)
      # 设为透明预设
      ln -sf ~/.config/compton/transparent.conf ~/.config/compton/current
      toggle-compton toggle
      
      # 设为不透明预设
      ln -sf ~/.config/compton/opaque.conf ~/.config/compton/current
      toggle-compton toggle
      
  • 直接 kill + 启动(简单但不优雅)
    bindsym $mod+Shift+t exec --no-startup-id killall compton; compton --config ~/.config/compton/transparent.conf
    

常见问题与排查

  • 快捷键无效:确认窗口管理器配置已保存并重新加载(i3:$mod+Shift+R;Sway:$mod+Shift+R),且快捷键未被其它程序占用。
  • 多个 Compton 实例:先 killall compton 再启动,或使用上面的“切换脚本”管理 PID 与单实例。
  • 参数不生效:部分选项需要在配置文件中设置并重启/切换配置才能生效;命令行覆盖的参数优先级更高但作用范围有限。
  • 需要后台运行:大多数发行版使用会话启动器(如 i3 的 exec)即可,无需额外 systemd 服务;若你使用 systemd 管理 compton,切换配置需 systemctl restart compton,并注意会话环境差异。

0