summarylogtreecommitdiffstats
path: root/freddy.sh
blob: 30a09319515f10c637a43afc5c51d2226d67ba89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env sh

set -eu

krueger() {
  for freddy in "$@"; do
    case "$freddy" in
      on)
        if [ "$(uname -s)" = "Linux" ]; then
          # disable sleeping by almost all means
          sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
        else
          # disable sleeping by almost all means
          sudo pmset -a disablesleep 1
        fi
        return
        ;;
      off)
        if [ "$(uname -s)" = "Linux" ]; then
          # enable sleeping by default
          sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
        else
          # enable sleeping by default
          sudo pmset -a disablesleep 0
        fi
        return
        ;;
      status)
        if [ "$(uname -s)" = "Linux" ]; then
          # check if sleeping is disabled
          if [ "$(sudo systemctl is-enabled sleep.target)" = "masked" ]; then
            echo 'enabled'
          else
            echo 'disabled'
          fi
        else
          # check if sleeping is disabled
          sudo pmset -g | grep -E "SleepDisabled|disablesleep"
        fi
        return
    esac
  done

  printf 'Usage: %s on|off|status\n\n' "$0" >&2
  printf 'Example:\n'
  printf '  krueger on      \x1b[2m# machine cannot sleep\x1b[0m\n'
  printf '  krueger off     \x1b[2m# machine can sleep\x1b[0m\n'
  printf '  krueger status  \x1b[2m# check krueger state\x1b[0m\n'
  return 1
}

krueger "$@"