1#!/usr/bin/env bash
2
3STATE_FILE="$XDG_CACHE_HOME/caffeine_state"
4PID_FILE="$XDG_CACHE_HOME/caffeine.pid"
5
6caffeine_pid() {
7 systemd-inhibit --list | awk '
8 $1 == "Caffeine" && $5 == "systemd-inhibit" { print $4 }
9 '
10}
11
12case $1 in
13toggle)
14 PID="$(caffeine_pid)"
15 if [ -n "$PID" ]; then
16 kill "$PID" 2>/dev/null
17 rm -f "$STATE_FILE" "$PID_FILE"
18 xset +dpms s on
19 notify-send "Caffeine off" "System might go to sleep."
20 else
21 systemd-inhibit --what=idle:sleep:shutdown --mode=block \
22 --who="Caffeine" --why="User-activated session protection" \
23 sleep infinity &
24 echo $! >"$PID_FILE"
25 touch "$STATE_FILE"
26 xset -dpms s off s noblank
27 notify-send "Caffeine on" "System will stay awake."
28 fi
29 ;;
30status)
31 if [ -n "$(caffeine_pid)" ]; then
32 echo ""
33 else
34 echo ""
35 fi
36 ;;
37esac