#!/bin/bash # i3exit # # Provide simple arguments for various locking and power related tasks. # with openrc use loginctl [[ $(cat /proc/1/comm) == "systemd" ]] && logind=systemctl || logind=loginctl LOCK_SCREEN_COLOR=${LOCK_SCREEN_COLOR:-000000} I3LOCK_RE="i3lock -(c|i) " lock() { i3lock -c "$LOCK_SCREEN_COLOR" # Add a small delay to prevent possible race conditions with suspend sleep 1 } is_locked() { pgrep -u "$USER" -f "$I3LOCK_RE" >/dev/null } case "$1" in lock) is_locked || lock ;; logout) i3-msg exit ;; switch_user) dm-tool switch-to-greeter ;; suspend) lock && $logind suspend ;; hibernate) lock && $logind hibernate ;; reboot) $logind reboot ;; shutdown) $logind poweroff ;; commands) echo "lock,logout,switch_user,suspend,hibernate,reboot,shutdown" ;; help) cmds="$($0 commands)" echo "Usage: $0 ${cmds//\,/\, }" ;; *) echo "== ! i3exit: missing or invalid argument ! ==" $0 help exit 2 ;; esac exit 0