macOS Tahoe menu bar 中删除已卸载的项目
tl;dr
在两台电脑上各折腾半个小时,同样的病症,不同的解决方法。
解决方式参考:r/MacOSBeta - Reddit - [Solved] Remove Stuck Menu Bar Toggle for Deleted Apps in macOS 26
具体说来就是 tahoe public beta 之后出现的问题,而且这个问题还在演化——有些 app 在卸载之后仍然出现在 system settings - menu bar - allow in the menu bar 之中。并不影响实际上 menu bar 的外观,但是总觉得非常烦人。
通行的解决方式是删除 /Users/user/Library/Group\ Containers/group.com.apple.controlcenter/Library/Preferences/group.com.apple.controlcenter.plist
然后 killall ControlCenter
.
但并不能解决。
用了 Pearlcleaner 定位到了 orphan files 把那几个涉事 app 的参与删除了,再重启,还是老问题。
然后再上述第二个帖子里找到了解决方法的大致方向。
具体操作是:
# 备份这个 plist
cp group.com.apple.controlcenter.plist group.com.apple.controlcenter.backup.plist
# 变成 xml 这样可以获取其中的 base64 数值
plutil -convert xml1 group.com.apple.controlcenter.plist -o group.com.apple.controlcenter.xml
# 打开 xml
open group.com.apple.controlcenter.xml
decode 其中 base64 的内容获得真实内容,大致看起来这样
<key>trackedApplications</key>
<data>
YnBsaXN0MDCvEBYBBhAWHiEnKjAzOTxD...
</data>
echo "BASE64_STRING_HERE" | base64 --decode > inner.plist
把其中 <data></data>
包含的内容转为可读内容
plutil -convert xml1 inner.plist -o inner.xml
open inner.xml
大概看到这样的内容
<array>
<string>com.apple.ScriptMonitor</string>
<string>com.raycast.macos</string>
<string>org.p0deje.Maccy</string>
<string>ru.keepcoder.Telegram</string>
...
</array>\
直接进行编辑,保存文件。
转成原本的 binary 文件:
plutil -convert binary1 inner.xml -o inner_new.plist
# 重新加密成 base64
base64 -i inner_new.plist -o inner_new.base64
# 查看第一行
head inner_new.base64
# 打开原本 plist 转成的 xml 并替换 <data></data> 里的 base64 字符串
open group.com.apple.controlcenter.xml
# 再把整个文件转成 binary
plutil -convert binary1 group.com.apple.controlcenter.xml -o group.com.apple.controlcenter.plist
# 确认一下
plutil -lint group.com.apple.controlcenter.plist
# 没问题的话会返回 group.com.apple.controlcenter.plist: OK
然后重启,system settings 里这些「腌臜泼才」就应该不见了。