前言:
事情是这样的,使用steam安装软件时,点选了创建快捷方式,于是launchpad中就出现了图标。但是他会默认归类到游戏文件夹中,我就较真的,一向明明是应用软件,你非要给我归类游戏,算了我不要你这图标了,我天真的想把软件卸掉重新安装,选择不创建款街方式,结果是我太年轻,软件是删掉了,但是图标在,我...我...我就杠上了...(PS:简单问题描述——Launchpad的图标不能完全删除,且偶尔会出现乱序)
正常的在网上搜索了一些资料,主要参考https://blog.csdn.net/OMars/article/details/89743565、https://zhuanlan.zhihu.com/p/55866195和https://www.maczd.com/post/clean-macos-icon-cache.html,本人在此表示感谢。
其实第一个和第二个说的是同一件事情,因为前期搜到的资料基本都是说找到数据库,执行sql删掉对应的数据。所以也就面临着同样的问题,那就是重置Dock图标会出现。然后我就一直在想到底是什么原因导致的它恢复就会出现。
开始以为会有备份的数据,但是网上没有搜到相关的资料,排除了,后来想到了缓存,然后找到了第三个资料。然后看完抱着试一试的心态解决了我的问题。
操作过程:
1.删除所有图标和缓存
sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \; sudo rm -rf /Library/Caches/com.apple.iconservices.store;
2.删除图标(实用第一种和第二种都可以,我懒不想截图,这里就上Terminal的吧)
cd /private/var/folders
在和个目录下会出现好几个文件,且每个人的不一定相同,感觉上是第一个,这里可能需要找找,直到找到com.apple.dock.launchpad目录就算是找对了,
我的路径/private/var/folders/rj/1z_wbdws1dl5d_j2ksfhltj00000gn/0/com.apple.dock.launchpad,供参考。这个路径下有一个db文件夹,db文件家里面有db文件(就是那个数据库),再给个参考
XXX@XXX-MacBook-Pro db % pwd /private/var/folders/rj/1z_wbdws1dl5d_j2ksfhltj00000gn/0/com.apple.dock.launchpad/db XXX@XXX-MacBook-Pro db % ls db db-shm db-wal mario@Marios-MacBook-Pro db %
在db这个目录下,实用如下命令,删除你不想要的应用图标
sqlite3 db "delete from apps where title=' XXXXX';"
3.结束finder 和 dock相关进程
killall Dock killall Finder
然后问题就解决了。其实我只是个搬运工,希望能以上方式也能解决你删不掉的图标和乱序问题。
最后总结一下这个问题的原因,有一部分是推测的:
删不掉的图标——这个原因,应该是安装一些第三方网站下载的软件,或者是通过第三方平台间接的安装软件,或者一些软件附带的一些组件。删不掉或者删掉在某种特殊状态下就又出现了。
图标偶尔乱序(不定时、不定期)——这个原因,是因为遇到删不掉的图标之后,采用了一些非常规的方式删除了图标,但是没有删除干净,也就是说数据库中的数据删除了,但是开机后缓存加载的表没有删除,形成了数据不对称。在关机、注销用户或者结束dock进程后两张表取合集或者是缓存表回写。导致和记录位置的表数据对不上,之前调整的位置就发生了变化。
所以有个大胆的猜想:
如果之前是一个普通用户,创建一个新的普通用户,登陆初始化这个普通用户,然后切换到一个管理员用户,把那份数据拷贝过去应该是可以的。
如果之前是一个管理员用户,重新创建一个新管理员,登陆新管理员,把新管理员的那份数据拷贝过去。
理由如果当前乱戏用户不登陆,那就不会有加载缓存,替换过去应该是可以的。
之所以有这样的猜想,是因为在我管理员乱序的情况下,我创建的心普通用户不但没有乱序,也没有那个删除掉的图标。
之所以要求创建的用户和之前的用户同一级别,是担心有些某些软件的安装位置和权限问题导致普通用户本身就比管理员用户访问的软件少,例如anaconda,管理员安装后,普通用户没有。这一点我不清楚anaconda是不是仅为当前用户安装的,因为一路next,是默认的安装路径。