diff --git a/zsh/osx.zsh b/zsh/osx.zsh index 343eb16..7de968a 100644 --- a/zsh/osx.zsh +++ b/zsh/osx.zsh @@ -29,13 +29,41 @@ if [[ "$(uname)" == "Darwin" ]]; then killall Finder "/System/Library/CoreServices/Finder.app" } + # # Power management - alias pm-hibernate="sudo pmset -a hibernatemode 25" - alias pm-safesleep="sudo pmset -a hibernatemode 3" - alias pm-sleep="sudo pmset -a hibernatemode 0" + # - hibernate() { + # Set all relevant power management settings to force the machine to save a + # sleep image and immediately enter "standby" along with FileVault destroying + # disk decryption keys. + pm-hibernate() { sudo pmset -a hibernatemode 25 + sudo pmset -a standby 1 + sudo pmset -a standbydelayhigh 0 + sudo pmset -a standbydelaylow 0 + sudo pmset -a autopoweroffdelay 0 + sudo pmset -a destroyfvkeyonstandby 1 + } + + # Restore all settings modified by pm-hibernate to their defaults, effectively + # restoring default sleep behavior for macOS laptops. + pm-safesleep() { + sudo pmset -a hibernatemode 3 + sudo pmset -a standbydelayhigh 86400 + sudo pmset -a standbydelaylow 0 + sudo pmset -a autopoweroffdelay 28800 + sudo pmset -a destroyfvkeyonstandby 0 + } + + # Trigger hibernation now. + hibernate() { + pm-hibernate + sudo pmset sleepnow + } + + # Trigger a safe-sleep now. + safesleep() { + pm-safesleep sudo pmset sleepnow } fi