sxhkd
sxhkd 是一个简单的 X 热键守护进程,由 bspwm 的开发者创建,它通过执行命令来响应输入事件。
安装
配置
sxhkd 默认使用 $XDG_CONFIG_HOME/sxhkd/sxhkdrc 作为其配置文件。可以使用 -c 选项指定备用配置文件。
配置文件中的每一行都会被这样解释:
- 如果它以
#开头,则会被忽略。 - 如果它以一个或多个空格开头,则被视为一个命令。
- 否则,它将被解析为一个热键:每个键名由空格和/或
+字符分隔。
通用语法
[MODIFIER + ]*[@]KEYSYM
COMMAND
其中 MODIFIER 是以下名称之一: super, hyper, meta, alt, control, ctrl, shift, mode_switch, lock, mod1, mod2, mod3, mod4, mod5。如果键名前添加 @,则命令将在按键释放时执行,否则在按键按下时执行。KEYSYM 名称是您从 xev 中获取的名称。
可以通过使用以下特殊键名之一来定义鼠标热键: button1, button2, button3, ..., button24。热键可以包含形式为 STRING_1, ...,STRING_N} 的序列,在这种情况下,命令也必须包含一个包含 N 个元素的序列:这两个序列的配对将生成 N 个热键。如果命令包含花括号({, }),例如 awk '{print $1}',则需要用反斜杠 \ 进行转义,例如 awk '\{print $1\}'。此外,序列还可以包含形式为 A-Z 的范围,其中 A 和 Z 是字母数字字符。
实际执行的是 SHELL -c COMMAND,这意味着您可以在 COMMAND 中使用环境变量。SHELL 将是以下列表中第一个已定义的环境变量的内容: SXHKD_SHELL, SHELL。如果 sxhkd 收到 SIGUSR1 信号,它将重新加载其配置文件。
示例
$XDG_CONFIG_HOME/sxhkd/sxhkdrc
# On mouse button 1 press Alt_R+F1
button1
xte "keydown Alt_R" "keydown F1" "keyup Alt_R" "keyup F1"
# On mouse button 2 pause 3 seconds then press Alt_R+F2
button2
xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"
绑定命令到单个按键按下
有些用户可能希望像 Windows 中的 Super 键打开开始菜单一样,将命令绑定到单个按键按下。在 sxhkd 中,这可以通过绑定到一个由单个键符号的按键按下和按键释放事件组成的组合链来实现,如下所示:
$XDG_CONFIG_HOME/sxhkd/sxhkdrc
# Program launcher
Super_L; @Super_L
rofi -show drun
这种复杂的模式是必要的,因为如果没有显式的组合链(例如,单独的 @Super_L),sxhkd 将在按键的 *任何* 释放时触发绑定——即使该按键在另一个组合中使用。此外,必须使用键符号而不是修饰键(Super_L 而不是 super),因为 sxhkd 不支持对修饰键使用 @ 符号(表示按键释放)。
用法
配置完成后,您可能希望设置 sxhkd 以 自动启动;有关详细信息,请参阅您所使用的桌面环境或窗口管理器的相应文章。
如果您的桌面环境支持 Desktop Application Autostart Specification,您可以通过在适当的目录中创建一个 sxhkd.desktop 文件来启动 sxhkd。
~/.config/autostart/sxhkd.desktop
[Desktop Entry] Name=sxhkd Comment=Simple X hotkey daemon Exec=/usr/bin/sxhkd Terminal=false Type=Application
参见
- 官方网站 - 包括配置选项、示例绑定和源代码。
- Arch Linux 论坛帖子