簡短回答:killall Dock 只會重新啟動 Dock。如果你寫入的設定打錯了、寫錯了位置,或被描述檔蓋過,重新啟動的 Dock 讀到的還是原本的值,看起來就毫無變化。
變更後執行 defaults read com.apple.dock。如果裡面缺少你的鍵和值,或內容不對,問題出在寫入,重新啟動沒有問題。
Dock 應該會消失大約一秒再出現。如果終端機顯示 No matching processes belonging to you were found,代表名稱打成了小寫。程序名稱是 Dock,D 要大寫:
killall Dock
這道指令做了什麼、不會動到什麼,詳見killall Dock 的作用。
defaults write 會接受你給的任何鍵,而且不會回報錯誤。寫成 tilesise 或 contents-immuteable,macOS 就會存下一項沒有任何東西會讀取的設定。把鍵讀回來,逐字比對:
defaults read com.apple.dock tilesize
刪除打錯的鍵,免得之後讓你混淆:
defaults delete com.apple.dock tilesise
每個 Dock 鍵的指令都整理在Mac Dock defaults 指令中。
Dock 設定位在網域 com.apple.dock 中。從舊論壇文章複製來的指令有時會寫入其他網域或某個檔案路徑,而 Dock 從來不會去那裡讀取。兩種常見的失誤:
.plist。com.apple.dock,但它其實屬於 com.apple.spaces,或者反過來。每個鍵都要求特定的類型。鎖定需要真或假的值,用 -bool 寫入。大小需要數字,用 -int 寫入。沒有標明類型的值會被存成文字,Dock 可能會忽略它:
defaults write com.apple.dock size-immutable -bool true; killall Dock
sudo defaults write com.apple.dock ... 寫入的是 root 使用者的偏好設定。你的 Dock 是以你的身分執行,從來不會讀取它們。拿掉 sudo 再執行同一道指令。變更 Dock 不需要管理者密碼。
macOS 會把偏好設定保留在記憶體中,由一個名為 cfprefsd 的背景程序管理。如果你用文字編輯器或 Xcode 修改 ~/Library/Preferences/com.apple.dock.plist,快取的副本可能會勝出,把你的修改蓋掉。請使用 defaults write,它會經過快取。如果一定要編輯檔案,之後請登出再重新登入。
在公司或學校的 Mac 上,IT 安裝的描述檔可能會設定 Dock 的值。受管理的值每次都會蓋過你的值,所以你的寫入成功了,Dock 卻不理它。打開「系統設定」,接著「一般」,再「裝置管理」。如果那裡列出的描述檔有提到 Dock,原因就找到了。受管理的值也會出現在 /Library/Managed Preferences 中。請詢問管理這台 Mac 的人,並參考Mac Dock 設定呈現灰色了解相關跡象。
有些變更確實生效了,之後又被還原。在「系統設定」中移動大小滑桿,會用新的大小蓋過你的設定。從備份還原、移轉到新的 Mac,或 macOS 更新,都可能帶回舊的 Dock 檔案。如果 Dock 一直自己回到舊的配置,請依照為什麼 Mac Dock 會自己還原逐項檢查。
重新啟動 Dock 也會重新啟動調度中心,因為兩者都由 Dock 執行。你的桌面和全螢幕 App 都會保留。有兩種情況看起來像被重置:
defaults write com.apple.dock mru-spaces -bool false; killall Dock。當 Dock 終於是你想要的樣子,四個內建鎖定可以防止它被一次拖移或不小心碰到的滑桿改變:size-immutable、position-immutable、contents-immutable 和 autohide-immutable。用終端機鎖定 Mac Dock列出每道指令及其復原方法。
Still Dock 把同樣的鎖定做成選單列中的開關。你不必輸入任何指令,也不可能打錯鍵名。它會幫你重新啟動 Dock,並顯示每項鎖定是否開啟。大小鎖定在免費版就有,其他鎖定屬於 Still Dock Pro。
成功時它什麼都不會顯示,鍵名打錯時也一樣會成功。沒有輸出代表值已經存下,而 defaults read 會告訴你存下的是什麼。
很少需要。Dock 設定在 killall Dock 之後就會套用。跨顯示器的空間設定需要登出。只有當 Dock 完全沒有回來時,才值得試試完整重新開機。
不會。它不會刪除任何東西,也不會關閉任何 App。會清掉你 Dock 設定的指令是 defaults delete com.apple.dock,那是重置。