mac launchpad 空文件夹删不掉等疑难杂症的解决方案

mac launchpad 空文件夹删不掉等疑难杂症的解决方案

首先,如果你不担心自己已有的布局,想彻底推倒重来,执行这两条命令,然后转身离去。

$ defaults write com.apple.dock ResetLaunchPad -bool true$ killall Dock

否则,你就需要一些技巧来修改 launchpad 存储布局信息的 sqlite 数据库文件。

首先我们要找到这个文件,它藏在 /private/var/folders/ 的某个目录里,通过以下命令尝试定位它。

$ cd /private/var/folders/$ sudo find . -name com.apple.dock.launchpad -type d 2>/dev/null./kq/t24p104n49d8xf00yhbf84d40000gp/0/com.apple.dock.launchpad

你的结果应该与我不同,请使用命令自行查找。

$ cd ./kq/t24p104n49d8xf00yhbf84d40000gp/0/com.apple.dock.launchpad$ lsdb        db.corrupt$ cd db$ lsdb        db-shm         db-wal

这里的 db 就是我们需要处理的数据库文件了,你可以用命令行,也可以用图形化工具编辑。

$ sqlite3 dbsqlite>

通过基本的 sqlite3 命令,你能观察到数据库的表结构。

items 表存储了 apps / groups 等表项的 ID 和父子、排序等信息,且提供了 trigger 使得其他表能够跟随 items 表联动。

通过以下命令查看 groups 也就是文件夹的情况。

select g.*, i.* from groups g left join items i on (i.rowid = g.item_id);

观察到除了系统保留的文件夹外,每个文件夹都应该有两个项。

你可以得知哪些文件夹都有哪些项。

select * from items where parent_id='group_item2_id';

你可以重命名你删不掉的空文件夹,然后在这里你应该能够看到它,从 items 表删除即可。

delete from items where rowid in ('group_item1_id', 'group_item2_id');

处理完后,需要重启 Dock。

$ killall Dock

其他操作与此相同,慢慢探索很容易发现规律,不再赘述。

推荐阅读