簡短的答案:Dock 並沒有真的改變大小。macOS 只是儲存了一個
tilesize 數值,並把它繪製在像素密度不同的螢幕上,所以同一個數字
在某台螢幕上看起來就是比另一台大。
鎖定大小只會阻止數值本身被更改,這才是你真正能控制的部分:
defaults write com.apple.dock size-immutable -bool true; killall Dock
整台 Mac 只有一項大小設定,而不是每台螢幕各一個。tilesize 是以點為單位的數字,而一個點並不是固定數量的像素。在 Retina 筆電螢幕上,一個 48 點的圖示所繪製的像素數量,大約是 1080p 螢幕上的兩倍,所以同一個 Dock 在一台螢幕上看起來正常,在另一台上卻不對,即使儲存的數值從未改變過。
這就是為什麼插上或拔除螢幕的瞬間,Dock 看起來像是自己改變了大小: 數字其實沒有變,改變的是它底下的畫布。
還有第二個獨立的問題,也是真正值得鎖定的那個。當 Dock 移到尺寸不同的 螢幕上時,它的最大寬度也會跟著改變。一個在 27 吋螢幕上綽綽有餘的 Dock,放到筆電螢幕上就會放不下, 所以 macOS 會把圖示縮小以容納它們。等你回到大螢幕時,它們不一定會恢復到原本的大小。
每一次在錯誤的螢幕上不小心碰到分隔線,都會寫入一個新的
tilesize,而這個數值就是跟著你回到原本螢幕的那一個。
在你最常使用的顯示器上選擇大小,然後讀取這個數值,方便你之後回頭使用:
defaults read com.apple.dock tilesize
把這個數字記下來。它是一個整數,通常介於 16 到 128 之間。
defaults write com.apple.dock size-immutable -bool true
killall Dock
「系統設定」裡的大小滑桿會失去反應,分隔線也不再能調整大小。Dock 在不同像素密度的
螢幕之間,視覺上仍然會有縮放效果,因為那是 macOS 繪製時的行為,但儲存的
數值不會再跑掉。若要解除,把 true 換成 false 即可。
如果 Dock 在螢幕之間跳來跳去才是真正困擾你的問題,那大小只是問題的一半。參見 如何讓 Dock 固定在單一螢幕,其中涵蓋了 macOS 允許和不允許你固定的部分。
tilesize 設定超過 128。Dock 會從指令列接受這個值,
但下次啟動時就會被限制回範圍內。這不是什麼隱藏的更大尺寸。defaults write com.apple.dock size-immutable -bool false
defaults write com.apple.dock tilesize -int 48
killall Dock
使用你在步驟一記下的那個數字。如果你當初沒有記下來,
執行 defaults delete com.apple.dock tilesize 可以讓 Dock 回到 macOS 的預設值,而不是隨便亂猜。
不會。
size-immutable 只會固定 tilesize。放大效果和
largesize 仍然可以調整,除非你另外鎖定它們,而在放大效果開啟的情況下鎖定大小,
是常見的一種讓 Dock 看起來仍在改變的原因。
不會。鎖定只會阻止數值被寫入, 不會阻止 macOS 依照每台螢幕所需的縮放比例繪製 Dock。簡報功能 運作方式完全不受影響。
所有重要的版本都支援。
size-immutable 已經運作超過十五年,在 macOS 26 上依然有效。
設定面板搬到了「系統設定」›「桌面與 Dock」,變成灰色的滑桿就會出現在那裡。
如果你不想自己保存一份指令清單,Still Dock 把同樣的四項設定 變成了開關,還會記住你鎖定前的 Dock 樣子。大小鎖定完全免費。