Last active
April 28, 2023 19:00
-
-
Save sbamin/d3a5a0dfb42fbdb90f19790a539d1e9e to your computer and use it in GitHub Desktop.
toggle sleep mode for mac os ventura on M2 macbook, especially with unplugged power, monitors attached, and closed lid (closed diplay mode or clamshell).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
## Enable/Disable sleep on closed display | |
## strict mode on | |
set -euo pipefail | |
## can be one of status|on|off | |
cmd="${1:-"status"}" | |
if [[ "${cmd}" != "status" ]] && [[ "${cmd}" != "on" ]] && [[ "${cmd}" != "off" ]]; then | |
echo "ERROR: Invalid first positional argument: ${cmd}. It should be one of: status,on,off" >&2 | |
exit 1 | |
fi | |
## bash functions | |
_get_sleep_state() { | |
sleep_state="$(pmset -g | grep -E "SleepDisabled" | awk -F"\t" '{print $3}')" | |
if [[ "${sleep_state}" == 0 ]]; then | |
echo -e "SleepDisabled is set to 0 or default. Display will sleep on closing lid.\n\nRun ${0##*/} on to toggle to a non-default.\n" | |
elif [[ "${sleep_state}" == 1 ]]; then | |
echo -e "WARN: SleepDisabled is set to non-default 1.\nDisplay will NOT sleep on closing lid and can\ndrain battery to zero without any warning.\n\nRun ${0##*/} off to toggle to a default state.\n" >&2 | |
else | |
echo -e "ERROR: Invalid sleep state reported for SleepDisabled row below.\n" >&2 | |
pmset -g | |
exit 1 | |
fi | |
} | |
export -f _get_sleep_state | |
if [[ "${cmd}" == "status" ]]; then | |
_get_sleep_state | |
exit 0 | |
fi | |
sleep_state="$(pmset -g | grep -E "SleepDisabled" | awk -F"\t" '{print $3}')" | |
if [[ "${cmd}" == "on" ]] && [[ "${sleep_state}" == 0 ]]; then | |
_get_sleep_state | |
echo "Disabling default sleep mode. Require sudo." | |
sudo pmset -a disablesleep 1 | |
_get_sleep_state | |
elif [[ "${cmd}" == "off" ]] && [[ "${sleep_state}" == 1 ]]; then | |
_get_sleep_state | |
echo "Enabling default sleep mode. Require sudo." | |
sudo pmset -a disablesleep 0 | |
_get_sleep_state | |
else | |
_get_sleep_state | |
echo -e "sleep mode is already what you've intended it to be.\nNo further action needed." >&2 | |
fi | |
## end ## |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment