我有一台带有 Void-Linux 和 Wayland 桌面环境 (sway) 的笔记本电脑。我正在尝试将笔记本电脑的打开/关闭事件绑定到自定义命令,但我无法在此处扫描关键事件。我在 Wayland 环境之外的控制台showkey --scancodes
上进行了尝试showkey --keycodes
,但当我打开或关闭笔记本电脑时,它没有显示任何内容。如何在 Wayland 中正确扫描打开/关闭事件或绑定它?
PS:我真的不想安装一些复杂的工具,例如笔记本电脑模式工具(如果可能的话),我只需要在打开/关闭时运行非常原始的 bash 脚本。
答案1
作为解决方法,我根据 @peregrino69 注释创建了一个脚本:它每秒读取 LID 状态/proc/acpi/button/lid/LID0/state
,并在状态更改时执行回调函数:
#!/bin/bash
_state="open"
function on_state_open {
# run commands on open
}
function on_state_close {
# run commands on close
}
function on_state_change {
local update="$1"
local change=false
if [[ "${_state}" != "$update" ]]; then
change=true
fi
_state="$update"
if $change; then
case "${_state}" in
"open")
on_state_open
;;
"closed")
on_state_close
;;
esac
fi
}
while true; do
snapshot=$(cat /proc/acpi/button/lid/LID0/state | awk -d' ' '{print $2}')
on_state_change "$snapshot"
sleep 1
done