進階
MacBook 合蓋休眠終端方案
這頁記錄的是一個基於終端的進階方案,用來在 Mac App Store 版 Rouse 之外手動處理 MacBook 合蓋休眠。
這是一個終端層面的方案,不是 macOS 官方支援的 API,也不是 Mac App Store 版 Rouse 的功能。它會修改系統層級的電源設定,而且需要管理員權限。具體表現可能因 Mac 機型和 macOS 版本而不同。
Mac App Store 版不能把它做成功能,因為這條路線依賴管理員權限下的 pmset 系統電源修改,超出了商店版應用的正常沙盒邊界。
快捷命令
把下面這段 function 加到你的 ~/.zshrc 或其他 shell 設定裡:
rouse() {
case "$1" in
on)
sudo pmset -a disablesleep 1
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
off)
sudo pmset -a disablesleep 0
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
status)
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
*)
echo "usage: rouse {on|off|status}"
return 1
;;
esac
}
重新載入 shell 之後,就可以用 rouse on、rouse off 和 rouse status。
它實際做了什麼
rouse on會執行sudo pmset -a disablesleep 1。rouse off會用sudo pmset -a disablesleep 0恢復正常睡眠。rouse status會用更易讀的格式印出目前的SleepDisabled狀態。- 這裡主要針對的是 MacBook 的合蓋休眠,不是泛用的桌面版睡眠開關。
因為 disablesleep=1 會同時阻止閒置睡眠和合蓋睡眠,所以 Mac 在桌面閒置時也會保持喚醒。用完後請盡快執行 rouse off。
邊界
- 這是進階終端方案,不是正式產品功能。
- 它影響的是整個系統的睡眠行為,不只是合蓋睡眠。
- 它和 Mac App Store 版 Rouse 是分開的。
- Mac App Store 版不能把這條路徑作為受支援功能內建進去。
- 該設定重啟後仍保留。如果忘了執行
rouse off,你的 Mac 在重啟後仍會持續跳過閒置睡眠。 - 用完之後,最好盡快執行
rouse off。
如何移除
- 如果目前仍顯示
SleepDisabled = 1,先執行rouse off;如果你已經刪掉了 function,也可以直接執行sudo pmset -a disablesleep 0。 - 從
~/.zshrc或你使用的 shell 設定裡刪掉rouse(),然後重新載入 shell。
關於本頁
Mac App Store 版 Rouse 專注在 App Sandbox 允許的範圍內。本頁面為熟悉系統電源設定修改的進階使用者提供終端層面的方案說明。本頁的 rouse shell function 只是放在你 shell profile 裡的獨立 helper,不是 Mac App Store 版 Rouse 的命令列介面。