08-14-2020, 06:03 AM
This is how I solved this in sway (wayland). I wanted power button to open be/dmenu with common actions (lock, suspend...).
1. Disable power button handling in logind.
/etc/systemd/logind.conf:
2. Handle power button in sway.
~/.sway/config:
3. Add seat script to your path.
seat:
5. For loginctl lock-session to work, you also need something like this (mainly the lock part).
~/.sway/config
1. Disable power button handling in logind.
/etc/systemd/logind.conf:
Code:
HandlePowerKey=ignore
2. Handle power button in sway.
~/.sway/config:
Code:
input "gpio-key-power" xkb_model "pc105"
bindsym XF86PowerOff exec seat
3. Add seat script to your path.
seat:
Code:
#!/bin/bash
cmd=`echo -e "lock\nlogout\nsuspend\npoweroff" | bemenu -l 10 -p 'seat>'`
case "$cmd" in
lock)
loginctl lock-session
;;
logout)
loginctl terminate-session $XDG_SESSION_ID
;;
suspend)
systemctl suspend
;;
poweroff)
systemctl poweroff
;;
esac
5. For loginctl lock-session to work, you also need something like this (mainly the lock part).
~/.sway/config
Code:
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -f -c 000000' \
lock 'swaylock -f -c 000000'