在Applescript(Mac OS X)中淡化桌面壁纸



我写了一个AppleScript,它设置了我的桌面背景。 然而,使用AppleScript的"设置图片"会突然改变背景 - 它看起来不太好。 有没有办法获得通过桌面和屏幕保护程序首选项的"更改图片"设置循环背景时使用的漂亮淡入淡出效果?

理想情况下,我想在AppleScript中执行此操作,但如果在Cocoa(或其他东西)中可以,请告诉我!谢谢!

回答我自己的问题!

这不是我想要的,但足够接近:

set picture rotation to 1 -- turn on wallpaper cycling
set change interval to -1 -- force a change to happen right now
delay 1.5 -- wait a bit to allow for the fade transition - you may want to play w/ this #
set picture of item N of theDesktops to POSIX file ("yourfilenamehere.png") -- set wallpaper to wallpaper you want
set picture rotation to 0  -- turn off wallpaper cycling

通过利用Apple的内置壁纸更换器,您可以在AppleScript中获得淡入淡出效果,但是您需要将要更改的任何图像放在目录中,然后在桌面和屏幕保护程序首选项中选择它或以编程方式选择它。

此外,set picture rotation to 1似乎会自动将墙纸更改为我认为是该目录中的第一个图像(按字母顺序)的内容 - 我没有费心测试这一点,不过,这对我的目的无关紧要。 1.5 的延迟允许有点闪烁,但由于我使用的图像是 TARDIS,这是可以接受的,并且实际上是为了一个很酷的效果(只要我们注意哭泣的天使!

最初的问题已经有十多年的历史了,但我想发布另一个贡献仍然有意义——毕竟我遇到这篇文章是因为我正在寻找它。

在玩过AppleScript之后,我找不到任何令人满意的解决方案。所以我使用了另一种方法:让系统像往常一样完成它的工作,而不用调整它,而是动态更改它管理的图像。

换句话说:假设$TEMP_WALLPAPER_FOLDER是一个空的工作文件夹,我将"系统偏好设置"配置为将其用作带有背景图片的文件夹,我禁用了随机顺序并设置为每 5 秒更改一次背景。

然后,每五分钟调用一次的这一小段bash脚本就可以完成这项工作。假设$IMAGE是要使用的新映像:

  1. $IMAGE链接到临时文件夹,其链接的名称是当前时间戳(不需要时间戳,渐进式索引就可以了,但时间戳更易于管理);此时文件夹中有两个链接,以前的图像和新图像。
  2. 等待 8 秒:通过这种方式,我们确定发生了 5 秒的变化,因此系统找到新图像并切换到它;并且它只发生一次,因此它不会再次切换回以前的图像。
  3. 它删除了指向上一个图像的链接;现在文件夹中再次只有一个链接,因此当 5 秒期限再次到期时,系统仅找到当前图像。我假设系统足够智能,在这种情况下不会浪费CPU,也就是说,它不会开始向同一图像的淡入淡出过渡。
        TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
        ln -fs "$IMAGE" "$TEMP_WALLPAPER_FOLDER/$TIMESTAMP.jpg"
        sleep 8
        find "$TEMP_WALLPAPER_FOLDER" -type l | grep -v "$TIMESTAMP" | xargs rm

最新更新