我有一个 shell 脚本,它由更新 jpeg 的 cron 作业运行。我的外接显示器上的桌面背景设置为同一个文件。但是,Mac OS X 不会在文件更新时自动刷新桌面背景。
如何强制从脚本更新桌面背景?
一个正确的方法(不使用其他东西来调用你的脚本)是将以下行添加到你的 shell 脚本中:
osascript -e 'tell Application "Finder"' -e 'set the desktop picture to {"NAME OF STARTUP DRIVE:PATH:TO:PICTURE.jpg"} as alias' -e 'end tell'
Run Code Online (Sandbox Code Playgroud)
注意:路径使用冒号而不是 / 并且您必须命名硬盘驱动器。
对于傻笑来说,一个非常奇怪的替代方案是大量的解决方法是将以下行添加到由 cron 运行的 shell 脚本中:
killall Dock
Run Code Online (Sandbox Code Playgroud)
这将杀死 Dock,当它重新启动时(自动)将刷新您的桌面背景。缺点?您打开的应用程序停靠栏图标将重新排序(如果应用程序图标尚未在您的停靠栏中保存一个位置)并且任何最小化的窗口都将取消最小化。因此,如果您不使用这些功能,也没关系。