首先,如果你不担心自己已有的布局,想彻底推倒重来,执行这两条命令,然后转身离去。
$ 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
其他操作与此相同,慢慢探索很容易发现规律,不再赘述。