[rc/sway] bind XF86PowerOff to prompt for system exit action
authorAmin Bandali <amin@gnu.org>
Mon, 17 Sep 2018 15:37:44 +0000 (11:37 -0400)
committerAmin Bandali <amin@gnu.org>
Mon, 17 Sep 2018 15:37:44 +0000 (11:37 -0400)
- (l)ock
- (e)xit sway
- (s)uspend
- (h)ibernate
- (r)eboot
- (S)hutdown

need to inhibit systemd's handling of the power button using
systemd-inhibit (or alternatively and less elegantly by modifying
/etc/systemd/logind.conf, which i didn't want to do)

rc.org

diff --git a/rc.org b/rc.org
index c857af3..654bd8e 100644 (file)
--- a/rc.org
+++ b/rc.org
@@ -3771,6 +3771,10 @@ insert_pass="Alt+n"
 #+begin_src conf
 exec xrdb .Xresources
 exec dunst
+exec pgrep -x "systemd-inhibit" || \
+     systemd-inhibit --what=handle-power-key --who=aminb \
+     --why="Handle power button in sway" sleep infinity
+
 ### Variables
 # super
 set $mod Mod4
@@ -3990,6 +3994,27 @@ mode "resize" {
 }
 bindsym $mod+Shift+r mode "resize"
 
+#
+# Power button
+#
+set $locker swaylock && sleep 1
+
+set $mode_system System (l)ock, (e)xit sway, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown
+mode "$mode_system" {
+    bindsym l       exec $locker,                          mode "default"
+    bindsym e       exec swaymsg exit,                     mode "default"
+    bindsym s       exec $locker && systemctl suspend,     mode "default"
+    bindsym h       exec $locker && systemctl hibernate,   mode "default"
+    bindsym r       exec            systemctl reboot,      mode "default"
+    bindsym Shift+s exec            systemctl poweroff -i, mode "default"
+
+    # back to normal: Enter, Escape, or q
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+    bindsym q      mode "default"
+}
+bindsym XF86PowerOff mode "$mode_system"
+
 #
 # Status Bar:
 #