用 Apple Script 自动整理桌面

我在寝室里放了一台 27 寸的外接显示器。回到寝室的时候,我会把我的 Macbook 接在上面,把外接显示器作为第一屏幕使用。
这带来一个问题:由于是作为第一屏幕,桌面会跟随到那个显示器上去。但由于 Macbook 显示器和外接显示器分辨率不同,桌面的图标在这个过程中会被打乱,变成相互重叠的。
对于这个问题,最简单的解决方法就是每次切换显示器以后,在桌面选择右键-整理
一个更方便的办法是:用 Apple Script 触发桌面整理。方法很简单:

1
2
3
4
5
tell application "Finder"
tell window of desktop
clean up
end tell
end tell

把这段代码加入 LaunchBar,就可以只用键盘触发操作:
LaunchBar 版本整理桌面
但用键盘触发终究是手动触发。所以我又用 Keyboard Maestro 做了一个自动版本的:
KM 版本自动整理桌面
这个动作的实现比较取巧,因为KM 没有外接显示器相关的触发条件。我用的方案是选择「The audio output device changes」这个触发条件,因为我的显示器同时还接着音响。连接显示器的时候,Macbook 就会把音频输出切到音响,这也就意味着对我来说「音频输出切换」这个条件可以表示显示切换。

更新:用了两天,发现音频输出作为触发条件不稳定,所以换成了寝室和教学楼的 WiFi 触发。