简短回答: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,那是重置。