Sleep Manager

Sleeping and power management GUI. View current sleep status, disable sleep on battery, prevent sleeping using ootb caffeinate

Image preview of Sleep Manager plugin.

pmset.5m.sh

Edit
Open on GitHub
#!/usr/bin/env bash
# <xbar.title>Sleep Manager</xbar.title>
# <xbar.version>v0.3</xbar.version>
# <xbar.author>glowinthedark</xbar.author>
# <xbar.author.github>glowinthedark</xbar.author.github>
# <xbar.desc>Sleeping and power management GUI. View current sleep status, disable sleep on battery, prevent sleeping using ootb caffeinate</xbar.desc>
# <xbar.image>https://telegra.ph/file/20ef9918b679e238bc5ff.png</xbar.image>
# <xbar.abouturl>https://github.com/matryer/xbar-plugins/blob/main/System/pmset.5m.sh</xbar.abouturl>

if [[ "$1" = "pmset_disable_battery_sleep" ]]; then
  osascript -e 'display dialog "Disable system sleep while on battery?" buttons {"Cancel", "DISABLE NOW! (System will NOT sleep!)"}
do shell script "/usr/bin/pmset -a disablesleep 1" with administrator privileges'
  exit
fi

if [[ "$1" = "pmset_restore_battery_sleep" ]]; then
  osascript -e 'display dialog "Restore sleep mode back to normal?" buttons {"Cancel", "RESTORE NORMAL SLEEP"}
do shell script "/usr/bin/pmset -a disablesleep 0" with administrator privileges'
  exit
fi

if [[ "$1" = "stop_caffeinate" ]]; then
  pkill caffeinate
  exit
fi

if [[ "$1" = "start_caffeinate" ]]; then
  /usr/bin/caffeinate -sdi &
  exit
fi

if [[ "$1" = "edit_this_script" ]]; then
  # open with default editor registered for .sh extension
  open "$0";
  # OR use an explicit editor by app name or by bundle
  # open -a 'Sublime Text' "$0"
  # open -b com.sublimetext.4 "$0"
  exit
fi

battery_stats="$(pmset -g)"
sleep_disabled=$(echo "$battery_stats" | awk '$1~/SleepDisabled/ {print $2}')
sleep_prevented=$(echo "$battery_stats" | awk -F'(' '$0~/\(sleep prevented/ {print $2}' | tr -d ')')
display_sleep_prevented=$(echo "$battery_stats" | awk -F'(' '$0~/\(display sleep prevented/ {print $2}' | tr -d ')')

pgrep -n caffeinate -q &>/dev/null
is_caffeinate_running="$?"

if [[ $sleep_disabled == "0" ]] || [[ $sleep_disabled == "" ]] ; then
  if [[ $is_caffeinate_running -eq 0 ]] ; then  # "1" = no processes found
    echo "☕️"
    status="caffeinating... ☕️"
  else
    if [[ "_$sleep_prevented" != "_" ]] ; then
      echo '♻️'
      status="♻️ Sleep prevented by application(s):"
    else
      echo "🔋"
      status="💤 Sleeping normally"
    fi
  fi
  cmd="🔋 pmset: Disable sleep on battery | bash='$0' param1=pmset_disable_battery_sleep terminal=false refresh=true"
elif [[ $sleep_disabled == "1" ]]; then
  echo "‼️"
  status="‼️ Preventing sleep on battery"
  cmd="🔥 pmset: RESTORE sleep on battery | bash='$0' color=indianred param1=pmset_restore_battery_sleep terminal=false refresh=true"
fi

echo '---'
echo "$status"
if [[ "_$sleep_prevented" != "_" ]] ; then
  echo '---'
  echo "❗️$sleep_prevented"
fi
if [[ "_$display_sleep_prevented" != "_" ]] ; then
  echo '---'
  echo "‼️$display_sleep_prevented"
fi
echo '---'
echo "$cmd"

if [[ $is_caffeinate_running -eq 0 ]] ; then
  echo "❌ DECAFFEINATE! | bash='$0' color=indianred param1=stop_caffeinate refresh=true terminal=false"
else
  echo "☕️ caffeinate | bash='$0' param1=start_caffeinate refresh=true terminal=false"
fi
echo '---'
echo "✏️ Edit this file | bash='$0' param1="edit_this_script" terminal=false"
echo '---'
echo "🔃 Refresh... | refresh=true"