defaults 指令簡短的答案:每一項 Dock 設定都存放在 com.apple.dock 裡,每次
更改後都需要執行 killall Dock,否則什麼都不會發生。
這個頁面列出每個值得認識的設定鍵、可用的值,以及它實際的作用。 這是一份參考資料,而不是教學,所以請直接跳到你要找的那一列。
兩條指令。第一條寫入設定,第二條重新啟動 Dock,讓它套用這項設定:
defaults write com.apple.dock tilesize -int 48; killall Dock
少了 killall Dock,這個數值就只會靜靜躺在偏好設定檔裡,什麼作用都沒有。這是部落格文章裡的指令
看起來沒有效果的最常見原因。想了解詳情,參見
killall Dock 的作用。
在更改任何東西之前,先確認它目前的狀態,這樣你才能把它調回去:
defaults read com.apple.dock tilesize
如果某個鍵從未被設定過,defaults read 會回傳錯誤而不是數值。這是
正常現象,代表 Dock 正在使用內建的預設值。若要回到這個狀態,請直接刪除這個鍵,
而不是猜測原本的數字:
defaults delete com.apple.dock tilesize; killall Dock
tilesize 是大家最想要的那一個。它是以點為單位的圖示大小,「系統設定」
裡的滑桿寫入的正是同一個數值。
defaults write com.apple.dock tilesize -int 48; killall Dock
tilesize 整數,16 到 128。「系統設定」裡的滑桿
同樣也只涵蓋 16 到 128,但輸入數字能讓你精準定位到一個確切的大小,之後也能
再回到那個大小。magnification 布林值。游標移到圖示上方時,圖示是否會放大。largesize 整數,最大 128。開啟放大效果時圖示會放大到的尺寸。
關閉放大效果時則完全忽略這個值。值得注意:Dock 可以接受從指令列輸入超過 128 的 tilesize,但下次啟動時就會被限制回範圍內,所以不要把更大的數字當成隱藏功能。
orientation 字串,可為 left、bottom 或
right。沒有 top,macOS 從未支援過它。autohide 布林值。Dock 是否會隱藏,直到你把游標推到
邊緣。autohide-delay 浮點數,單位為秒。游標需要停留在邊緣多久,
Dock 才會出現。設為 0 可立即顯示。autohide-time-modifier 浮點數。滑動動畫持續的時間。
0.15 較快,0 則會取消動畫。大家真正想要的搭配,是一個立即顯示的 Dock:
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
killall Dock
這個網站的存在,就是為了這些設定鍵。每一個都會讓「系統設定」裡對應的控制項失去反應, 讓這項設定不會被意外更動、被其他 App 更動,或是六個月後被忘記這回事的 你自己更動。
defaults write com.apple.dock size-immutable -bool true
defaults write com.apple.dock position-immutable -bool true
defaults write com.apple.dock contents-immutable -bool true
defaults write com.apple.dock autohide-immutable -bool true
killall Dock
size-immutable 會凍結大小,連帶也讓分隔線上的拖曳把手失效,
這其實才是大多數人真正想阻止的事。position-immutable 會凍結 Dock 所在的邊緣。contents-immutable 能阻止圖示被拖出、拖入或
重新排序。autohide-immutable 會凍結隱藏與顯示設定。這是大多數教學
都遺漏的一項。把任何一個 true 換成 false 就能解除對應的鎖定。我們的
指令產生器會依你選擇的鎖定寫出完整的指令組合,
包含復原指令。更完整的方式比較請見
三種鎖定 Mac Dock 的方式。
這四項都是依使用者而定,而且可以復原。描述檔則是能撐過終端機指令 和重新啟動的版本,它適合用在其他人也會使用的 Mac 上,但不適合用在你自己的 Mac 上。
show-recents 布林值。右側的最近使用應用程式區塊。
將它設為 false,是大家在系統更新後搜尋最多的解法。static-only 布林值。設為 true 時,Dock 只會顯示目前正在執行
的應用程式,並隱藏所有已固定的圖示。是一種截然不同的使用方式。persistent-apps 陣列。已固定的應用程式。手動編輯這個陣列雖然可行,
但過程並不愉快;用拖曳的方式簡單多了。persistent-others 陣列。分隔線右側的資料夾與堆疊。show-process-indicators 布林值。正在執行的 App 下方的圓點。若要把 Dock 裡固定的 App 全部清空,只留下正在執行中的項目:
defaults write com.apple.dock persistent-apps -array; killall Dock
mineffect 字串,可為 genie、scale 或
suck。最小化的動畫效果。suck 從未出現在「系統設定」中,
卻已經有效運作超過十五年。minimize-to-application 布林值。縮到最小的視窗,是否會收進
它的 App 圖示裡,而不是獨立顯示在右側。launchanim 布林值。App 開啟時圖示彈跳的動畫。scroll-to-open 布林值。在圖示上向上捲動,即可開啟該
App 的「Exposé」。expose-group-apps 布林值。「調度中心」是否依應用程式
將視窗分組。mru-spaces 布林值。「操作空間」是否依最近使用順序
自動重新排列。設為 false 可讓你的桌面保持固定順序,這是讓桌面
真正保持不變的另一半關鍵。| 鍵 | 類型 | 它的作用 |
|---|---|---|
tilesize | int 16–128 | 圖示大小 |
magnification | bool | 滑鼠移入時放大圖示 |
largesize | int | 放大後的大小 |
orientation | left/bottom/right | 哪一個邊緣 |
autohide | bool | 需要時才顯示 |
autohide-delay | float | 顯示前的延遲時間 |
autohide-time-modifier | float | 滑動速度 |
size-immutable | bool | 鎖定大小 |
position-immutable | bool | 鎖定邊緣 |
contents-immutable | bool | 鎖定圖示 |
autohide-immutable | bool | 鎖定隱藏與顯示 |
show-recents | bool | 最近使用的 App 區塊 |
static-only | bool | 僅限執行中的 App |
persistent-apps | array | 已固定的 App |
persistent-others | array | 資料夾與堆疊 |
show-process-indicators | bool | 執行中圓點 |
mineffect | genie/scale/suck | 最小化動畫 |
minimize-to-application | bool | 縮小到圖示裡 |
launchanim | bool | 啟動時彈跳 |
scroll-to-open | bool | 捲動以開啟 Exposé |
expose-group-apps | bool | 依應用程式分組 |
mru-spaces | bool | 依使用情況重新排列操作空間 |
若要捨棄你曾經更改過的所有 Dock 設定,恢復成出廠時的 Dock:
defaults delete com.apple.dock; killall Dock
這無法復原,而且確實會丟棄你的設定。你固定的 App、堆疊、 大小,全部都會消失。如果你只想復原某一項設定,改為刪除那一個鍵即可。更多內容請見 如何重設 Mac Dock。
幾乎總是因為漏了
killall Dock。數值確實被寫入了,只是正在執行的 Dock 還沒重新讀取它。另一個原因
是鍵名打錯了:defaults 會接受任何你自創的鍵名並樂於寫入它,
因為它根本不知道 Dock 真正能理解哪些鍵。
會。它們存放在你的使用者偏好設定裡, 而不是系統中,所以更新不會動到它們。搬到新 Mac 時的遷移 也一樣會保留。
不需要,也不應該使用它。這些是依使用者而定
的設定。用 sudo 執行,會寫入 root 的偏好設定,而不是你自己的,
看起來就像是指令悄悄失敗了一樣。
會的,這正是這四個
immutable 鍵存在的原因。任何擁有你權限的 App 都能寫入
com.apple.dock;而鎖定正是阻止這項變更生效的機制。
Still Dock 把同樣的四項鎖定變成選單列裡的開關,還多了指令做不到的 一件事:它會記住你鎖定前的 Dock 樣子,讓你隨時都能 回到原本的狀態。鎖定大小完全免費。