跳到主要內容
Wham.sh

macOS 選單列應用程式

闔上上蓋。 Mac 依然保持喚醒。

只要點一下選單列上的開關,就能讓 Mac 真正保持喚醒,就算闔蓋也一樣。

下載 Mac 版

免費。macOS 11 或更新版本。支援 Apple 晶片與 Intel。

試試看

選單列裡的一個開關。

這就是整個應用程式。Mac 保持喚醒時是太陽,可以睡眠時是月亮,切換時都會響起一小段提示音。來,點一下試試。

聲音開啟:這就是真正的提示音,一段由瀏覽器播放的 8 位元琶音。

用途

為耗時的工作而生。

啟動工作,闔上上蓋,轉身離開。任何你不想乾等的工作,都會持續執行到完成為止。

運作原理

三個步驟,重點在第三步。

  1. 1下載並打開 Wham

    把它拖到「應用程式」資料夾並打開。它會待在選單列裡,就在時鐘旁邊。

  2. 2點一下開關

    太陽出現,提示音響起。第一次使用時,macOS 會要求你輸入一次密碼。

  3. 3闔上上蓋

    Mac 會繼續運作:Claude Code 完成任務,匯出跑到最後一格,下載跑到 100%。

大多數防睡眠應用程式,只會請求 macOS 保持清醒,而闔上上蓋後 macOS 會直接無視這個請求。所以 Wham 乾脆自己關掉睡眠功能,等你用完後再幫你打開。

小巧

你會忘記它在執行。

Wham 只做一件事:每兩秒讀取一次核心旗標。開啟期間,它還會留意 macOS 發出的電池、發熱、上蓋和網路狀態通知。其餘時間它什麼都不做,CI 也會嚴格把關這個資源預算。

作為比較:KeepingYouAwake 在磁碟上占用 7.6 MB,而 Amphetamine 在加上輔助應用程式之前,下載檔案就有 6.7 MB。測試機型為 MacBook Air,系統版本 macOS 26.6;詳情請見 docs/compatibility.md。

比較

大多數防睡眠應用程式,一闔蓋就失效。

開著上蓋讓 Mac 保持喚醒很容易。一闔上,macOS 就會無視那種客氣的請求。以下是幾款知名應用程式在使用電池、沒有接外接螢幕時,如何應付闔蓋這件事。

App Store 應用程式靠自己做不到這件事,誠實的開發者也會直說:Lungo 表示「闔上上蓋後,它無法阻止電腦進入睡眠,這是 Mac App Store 的限制」。 來源

常見問題

問得好。

不需要。下載並打開 Wham,一切都在選單列裡完成:點一下讓 Mac 保持喚醒,再點一下讓它恢復睡眠。這個頁面底部的指令,只是留給喜歡打指令的人。

安全。關閉睡眠功能需要系統管理員權限:第一次點擊時,macOS 會要求你輸入一次密碼,這樣 Wham 之後就能直接切換睡眠設定,不用再問。這是它唯一被允許做的事。這個應用程式經過開發者簽署,並通過 Apple 公證,每一行程式碼都公開在 GitHub 上。

可以。右鍵點一下開關,選擇「限時開啟」1、2、4 或 8 小時:每個選項都會顯示結束時間。執行期間,選單會顯示剩餘時間,開關的顏色會逐漸褪去,結束前 5 分鐘還會彈出提醒。選「不限時」就會一直保持開啟。在終端機裡,可以用 wham on 2h,或者在指令前面加上 wham run,讓 Mac 只在該指令執行期間保持喚醒。

Wham 不會讓它「烤熟」:一旦 macOS 判定 Mac 嚴重過熱,Wham 就會關閉並讓它進入睡眠。不過,闔起來的包包裡,高負載運作的筆電無處散熱,Wham 是設計給桌面、擴充座和架子這類通風良好的地方用的。出門前記得先關掉它,闔上上蓋時 Mac 就會像平常一樣進入睡眠。

Wham 本身幾乎不耗電。但保持喚醒的 Mac,無論闔蓋與否,耗電方式都和平常一樣。所以使用電池時,或接著功率不足、跟不上耗電的充電器時,電量到 10% 時 Wham 就會自動放手(也可以在選單的「電量下限」裡改成 2%、5%、20% 或 30%):Mac 會帶著儲存好的工作內容進入睡眠,而不是把電耗到關機。要跑長時間的工作,記得接上電源。沒有「永不」:Wham 開啟期間,macOS 在電量快耗盡時自行睡眠的機制也會被關掉,所以最低是 2%,這是 Mac 還能安全進入睡眠的最後時機。

和平常一樣會鎖定。如果沒有接其他螢幕,闔上上蓋幾秒後 Wham 會關閉內建螢幕,Mac 則依照你的「鎖定畫面」設定來鎖定。如果接了外接螢幕,Wham 不會去動任何螢幕。

不需要。那些是 macOS 自己的「闔蓋模式」所要求的條件,Wham 一樣都不需要。就算是一台什麼都沒接的筆電,闔上上蓋後依然保持喚醒。

通常可以。Mac 不會進入睡眠,所以闔上上蓋後依然連著 Wi-Fi。不過 Wi-Fi 天線裝在上蓋裡,有些 Mac 闔蓋後訊號會變弱:別把闔上的 Mac 平放,讓它轉軸朝下立起來。iPhone 的個人熱點在手機認為沒人使用時會被手機自己關掉,而 Mac 不一定會重新連上:用 USB 線連接比較穩定。使用行動網路時,長時間沒有資料往來的 SSH 連線會被電信業者切斷:在 SSH 設定裡加上 ServerAliveInterval 60 就能保持連線。Wham 能讓 Mac 保持喚醒,但沒辦法讓網路不斷線。

睡眠功能會恢復。無論你是從選單結束(右鍵點一下開關)、用腳本結束,還是登出帳戶,結束的同時設定就會被關閉。如果 Wham 沒有正常結束就消失了,比如當機或被強制結束,它的看門狗機制會在一秒內把睡眠功能還回來。重新開機後,除非你在選單裡勾選了「重新開機後保持開啟」,否則 Wham 會保持關閉。

可以。Wham 會把它做過和看到的事記錄成日誌:何時、為何開啟或關閉,闔蓋與開蓋,睡眠與喚醒,電池,發熱,以及開啟期間網路是否一直保持連線。在終端機裡執行 wham log 就能看到最近幾行;它也存放在 ~/Library/Logs/Wham,可以用「主控台」打開。日誌只留在你的 Mac 上,從不傳送到任何地方,也不包含網路名稱、位址,或是你和 Mac 的名字。最多只有兩個小檔案。

會。它每天會向 GitHub 查詢幾次最新版本,確認是開發者簽署的之後再替換上去,開關保持原樣。選單裡的「檢查更新項目」可以立即執行。關掉「自動更新」後,Wham 只會告訴你有新版本了:開關上會出現一個粉紅色小圓點,更新就在選單裡等你(按右鍵)。每個版本有哪些變化,請看新功能。

有。Wham 支援英語、法語、西班牙語、德語、義大利語、葡萄牙語、日語、韓語、簡體中文和繁體中文,並會跟隨你 Mac 的語言設定。想讓它使用和 Mac 不同的語言,打開系統設定 > 一般 > 語言與地區,在應用程式裡加入 Wham。wham 指令和它的日誌仍然是英文。

從選單結束 Wham,睡眠功能會恢復,然後把 Wham 從「應用程式」資料夾拖進垃圾桶。如果要連密碼規則一起徹底清理,可以用 開發者 底下那一行指令的解除安裝工具。

App Store 應用程式都運作在沙盒裡,沙盒應用程式沒辦法更改 Mac 的睡眠設定。想做到的那些,最後也只能請求 macOS 保持清醒,而這恰好就是闔蓋後會失效的做法。

安裝

和下載版本一樣經過簽署的應用程式,還附帶 wham 指令。再次執行即可更新。

curl -fsSL wham.sh | sh
brew install gwendall/tap/wham
npx wham.sh

想先看看內容?讀一下 install.sh:它會下載最新版本,檢查簽署,放進「應用程式」資料夾並打開。

wham 指令

wham on
on: your Mac stays awake, even with the lid closed
wham on 2h
on until 4:30 PM: your Mac stays awake, even with the lid closed
wham status
on until 4:30 PM: your Mac stays awake, even with the lid closed
wham off
off: your Mac sleeps as usual
wham run make
# make 執行期間保持喚醒,結束後恢復原狀

解除安裝

curl -fsSL wham.sh/uninstall | sh

它會結束 Wham 並恢復睡眠功能,然後移除應用程式本身、wham 指令、相關設定、日誌,以及下面的 sudoers 規則。如果用 Homebrew:brew uninstall --zap wham。讀一下 uninstall.sh。

# /private/etc/sudoers.d/wham,使用者 ID 501(也就是你)
#501 ALL=(root) NOPASSWD: /usr/bin/pmset -a disablesleep 0, /usr/bin/pmset -a disablesleep 1