i3exit
authorAmin Bandali <me@aminb.org>
Sun, 4 Jan 2015 19:28:02 +0000 (14:28 -0500)
committerAmin Bandali <me@aminb.org>
Sun, 4 Jan 2015 19:28:02 +0000 (14:28 -0500)
i3/.i3/config
i3/.local/bin/i3exit [new file with mode: 0755]

index 5075095..77905fa 100644 (file)
@@ -147,7 +147,7 @@ bindsym $mod+Shift+c reload
 # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
 bindsym $mod+Shift+r restart
 # exit i3 (logs you out of your X session)
-bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
 
 # resize window (you can also use the mouse for that)
 mode "resize" {
@@ -250,6 +250,19 @@ bar {
         }
 }
 
+set $mode_system System (l) lock, (e) logout, (r) reboot, (Shift+s) shutdown
+mode "$mode_system" {
+    bindsym l exec --no-startup-id i3exit lock, mode "default"
+    bindsym e exec --no-startup-id i3exit logout, mode "default"
+    bindsym r exec --no-startup-id i3exit reboot, mode "default"
+    bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
+
+    # back to normal: Enter or Escape
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+}
+bindsym $mod+Shift+e mode "$mode_system"
+
 exec --no-startup-id nm-applet
 exec --no-startup-id "pulseaudio --start"
 
diff --git a/i3/.local/bin/i3exit b/i3/.local/bin/i3exit
new file mode 100755 (executable)
index 0000000..047edbf
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+lock() {
+    i3lock-wrapper && sleep 1
+}
+
+case "$1" in
+    lock)
+        lock
+        ;;
+    logout)
+        i3-msg exit
+        ;;
+    reboot)
+        systemctl reboot
+        ;;
+    shutdown)
+        systemctl poweroff
+        ;;
+    *)
+        echo "Usage: $0 {lock|logout|reboot|shutdown}"
+        exit 2
+esac
+
+exit 0