Answers:
一种正确的方法(不使用别的东西来调用你的脚本)就是将以下行添加到你的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'
注意:路径使用冒号而不是/,您必须为硬盘命名。
一个非常奇怪的选择更多的是咯咯笑,是一个解决方法的大量补充是将以下行添加到由cron运行的shell脚本中:
killall Dock
这将终止Dock,当它重新启动(自动)将刷新您的桌面背景。缺点?您打开的应用程序停靠栏图标将重新排序(如果应用程序图标尚未保存在停靠栏中的位置),任何最小化的窗口都将最小化。所以如果你不使用这些功能,那很好。
我之前对此的回答很糟糕,所以这里有一个更好的答案。
我使用shell脚本和Automator工作流来完成此任务。shell脚本下载我想要的图像,将其保存在某个地方,然后回显图像的完整路径(这是重要的部分)。Automator工作流程看起来像这样:
[run shell script ~/bin/getAPOD.sh] -> [Set the Desktop Picture]
据我所知,“设置桌面图片”动作来自Automator。
然后我有一个crontab条目,如下所示:
* 4 * * * /usr/bin/open /Users/myuser/bin/APODset.app
如果您愿意我可以发布脚本,Automator工作流程,无论如何。
这是我正在使用的最终AppleScript:
tell application "System Events"
set myfolder to folder "foo" of the pictures folder
tell desktop 2 to set picture to file "empty.jpeg" of myfolder as alias
tell desktop 2 to set picture to file "bar.jpeg" of myfolder as alias
end tell
这是osascript从更新jpeg的shell(实际上是ruby)脚本传递的。
如果新路径与当前路径相同(这仍然是Chealion的答案的问题),前面讨论的背景不更新的问题是通过暂时切换到“empty.jpeg”而被黑客攻击。这很烦人,因为转换是生涩的,但它不得不重新启动Finder / Dock。
我正在使用System Events应用程序,因为Apple示例也是如此。
不使用外部脚本就可以做到这一点....
首先,保持你的cron工作....
其次,创建一个文件夹,您的cron作业将放置一张照片/ jpg。此文件夹必须只包含一张照片/ jpg ..(多个文件会给你一个随机效果,见下文)。
第三,打开系统首选项 - >桌面和屏幕保护程序 - >桌面选项卡
第四,拖动或使用+将新文件夹添加到列表中。
第五,突出显示文件夹列表中的文件夹
第六,打开更改图片,然后选择一个时间范围。
你也可以运行一个Applescript重置图片,但这是我能看到的最明显和最简单的方式......