是这个样子的,launchpad 图标位置信息等存储在一个数据库中,可能出于未知原因,这个数据库不是总是会被初始化,或是 launchpad 程序无法访问它,或者无法更新,再就是该数据库损坏等等,launchpad 程序与数据库无法互通。
首先,确保自己没有安装使用系统优化等的软件,
其次,通过监视这个数据库的变化,来分析问题的所在,具体解说如下:
这个数据库默认地保存在每个用户自己的程序临时文件夹中,这个文件夹的地址有些特殊,可以通过下面的方法看到:
echo $TMPDIR
它看上去是这个样子的:/var/folders/m9/1mc3g1w06v51jy17v0_yt9t40000gn/T/
其实,每个本地帐户都会在 /var/folders/目录下,都有一个自己的子目录,用于应用程序保存自己的运行时数据,比如上面的 m9,还不清楚它下面的子目录“1mc3g1w06v51jy17v0_yt9t40000gn”的含义,但这不妨碍咱们后边的分析。再下面一般有三个子目录,0, T, C 。而我们关心的是 0,在里面有一个目录叫 com.apple.dock.launchpad,launchpad 的数据库就保存在它里面的 db 子目录内。所以全路径就是:/var/folders/m9/1mc3g1w06v51jy17v0_yt9t40000gn/0/com.apple.dock.launchpad/db
这个路径也可以使用下面的目录可以获得:
echo "$(dirname $TMPDIR)/0/com.apple.dock.launchpad/db"
具体如何监测,可以简单监视数据库的修改时间,比如使用下面的命令:
$ ls -l "$(dirname $TMPDIR)/0/com.apple.dock.launchpad/db"
下面是一个例子:
total 8392
-rw-r--r-- 1 me staff 1310720 Aug 3 17:00 db
-rw-r--r-- 1 me staff 32768 Aug 22 20:58 db-shm
-rw-r--r-- 1 me staff 1891112 Aug 24 21:43 db-wal
每次改变 launchpad 中应用的图标位置,文件的时间就会变化。
那么通过这个行为可以观察,它们的时间是否随改动而改变,重启后,是不是也改变了。
如果任何地方出现问题或者可疑,有可能是不同的原因造成。比如,目录错误,有可能是 launchpad 的这个默认路径被未知原因改了;如果无法访问该目录,那么有可能是权限错误;如果每次重启都会改变,有可能是启动时有程序把它改变了;如果是文件时间不变,那么可能它们的联系中断了或者是数据库出错等,等等各种原因。上面只是举例说明,具体原因还要进一步分析。
也可以尝试把这个 com.apple.dock.launchpad 目录转移走 /或者直接删除,重启后,让系统重建一个新的,然后自定义。
对于你的问题的根结,不太好说。既然是刚刚入手的 Mac,有其它程序“从中捣乱”的可能性比较大,其次是数据库损坏。
https://discussionschinese.apple.com/thread/250581574