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 的开头添加 @
,则命令将在按键释放事件时运行,否则在按键按下事件时运行。 KEYSYM
名称是您从 xev
获取的名称。
鼠标热键可以使用以下特殊 keysym 名称之一来定义: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 中,这可以通过绑定到由单个 keysym 的按键按下和按键释放事件组成的和弦链来实现,如下所示
$XDG_CONFIG_HOME/sxhkd/sxhkdrc
# Program launcher Super_L; @Super_L rofi -show drun
这种复杂的模式是必要的,因为如果没有显式的和弦链(即单个 @Super_L
),sxhkd 将在任何按键释放时触发绑定——即使该键在另一个和弦中使用也是如此。 此外,必须使用 keysym 而不是修饰符 (Super_L
而不是 super
),因为 sxhkd 不支持对修饰符使用 @
符号(表示按键释放)。
用法
配置完成后,您可能希望设置 sxhkd 以进行自动启动; 有关详细信息,请参阅您的桌面环境或窗口管理器的相应文章。
如果您的桌面环境支持 桌面应用程序自动启动规范,您可以通过在适当的目录中创建 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 论坛帖子