简短回答:一个总在重置的 Dock,几乎从来都不是随机发生的。 原因是以下四种之一,其中三种你能在一分钟内解决。
关键在于它什么时候发生:登录时、更新后、拔掉显示器后,或是在你工作时看似随机地发生。每一种都指向不同的原因。
这是最常见的一种情况,通常意味着偏好设置文件已损坏。macOS 会在登录时读取
com.apple.dock,如果无法解析该文件,就会退回到默认值并
重新写入一份新文件,每一次都把你的布局丢弃。
解决办法是有意将它删除,让 macOS 重新干净地生成一份:
defaults delete com.apple.dock; killall Dock
你会一次性、有意地丢失已固定的 App,之后就不会再发生了。重新设置好 Dock, 退出登录再重新登录,确认它保持住了。完整细节见 如何重置 Mac Dock。如果只是图标顺序变了,而不是恢复到出厂状态,参见Dock 图标自行重新排列。
如果之后它仍然会重置,那问题就不在偏好设置文件上,是有什么东西在重写它。 请继续往下读。
更新可能会为版本之间发生变化的键重新引入 Apple 的默认值,最近使用的应用 这一部分通常首当其冲。这种情况不算损坏,也不需要用上面的删除方法:
defaults write com.apple.dock show-recents -bool false; killall Dock
更新本不应该把你的 Dock 移到另一条边,或改变它的大小。如果发生了, 那属于文件损坏的情况,而不是更新本身造成的。
这根本不是重置,这正是常规解决办法毫无作用的原因。macOS 决定哪块显示器拥有 Dock,把指针移到另一块屏幕的底部就会把它交出去。没有任何内容被重写, Dock 只是换了个地方。
没有对应的 defaults 键。这是 Apple 从未开放设置的一项 Dock 行为,
这也是为什么会有工具专门来实现它。参见
将 Dock 固定在单块屏幕上,以及
能做到这一点的应用。
如果大小改变了,而你并没有打开“系统设置”,那就是你碰到了分隔线。你的应用和 文件夹之间的那条线是一个拖动把手,它位于屏幕最繁忙的区域,没有确认,也没有撤销功能。
露出马脚的地方是一切都同时发生了变化:每个图标的大小都变了,你排列好的每个窗口 也都跟着移动了,因为 Dock 把那块空间收了回去。这是一次调整大小,而不是重置。
解决办法就是一项锁定:
defaults write com.apple.dock size-immutable -bool true; killall Dock
分隔线会停止响应拖动,“系统设置”里的大小控件也会变灰。把
true 换成 false 即可撤销它。
如果以上都不是原因,那就是有某个 App 在背后编辑 com.apple.dock。备份和
同步工具、“Mac 清理”类实用工具,以及雇主下发的受管理设备描述文件,都会这样做。
要查看该文件是否正在被重写,请观察它的修改时间:
ls -l ~/Library/Preferences/com.apple.dock.plist
如果你没有碰过 Dock,时间戳却变了,说明有别的东西在写入。在办公 Mac 上, 请检查“系统设置”›“通用”›“设备管理”中是否有描述文件,你无法在本地覆盖它, 也不应该尝试这样做。
除此之外,那四个 immutable 键正是阻止另一个 App 的写入生效的关键。
它们完整列在
每一条 Mac Dock defaults 命令中。
只有在原因是另一个 App 在写入它时才有用。它不会修复 损坏的偏好设置文件,而锁定本身也保存在同一份文件里,所以一份无法读取的文件 也会连带丢失这些锁定。请先修复文件,再进行锁定。
会的,defaults delete com.apple.dock
会做到这一点。App 本身不受影响,受影响的只是哪些 App 被固定的这份列表。先给你的
Dock 截个图,恢复起来只需要两分钟。
不会。iCloud 不会在 Mac 之间 同步 Dock。如果你的 Dock 看起来像另一台 Mac 的样子,那是来自“迁移助理”或 一次还原,而不是持续同步的结果。
Still Dock 会从菜单栏把全部四项 Dock 设置固定住,并记住你锁定之前的 Dock 样子。锁定大小是免费的。