如何在Mac OS X中通过编程方式更改背景?

38

我如何在Mac OS X中以编程的方式更改桌面背景? 我想使用Python,但我对任何可能的方法都感兴趣。 我能连接到终端并调用特定命令吗?


在您自己的计算机上这样做是可以的,甚至可以让其他人轻松设置背景。但是,请不要将其编写为自动设置背景的应用程序的一部分;桌面是供用户选择的,从未是应用程序在未经用户明确许可的情况下更改的地方。 - Jonathan Leffler
3
除了办公室恶作剧的情况外,其他情况均不适用。 - Nick T
12个回答

0

你也可以使用py-appscript代替Popening osascript,或者使用ScriptingBridge与pyobjc一起使用,后者包含在10.5中,但使用起来有点麻烦。


0

以编程方式改变桌面壁纸的另一种方法是将壁纸设置指向一个文件。使用您的程序覆盖该文件并重新启动Dock:killall Dock

以下内容依赖于Xcode,lynx和wget,但这是我如何在Mountain Lion上自动下载和安装每月的壁纸(无耻地从http://ubuntuforums.org/showthread.php?t=1409827中窃取并改编):

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/local/bin
size=1440
dest="/usr/local/share/backgrounds/wallpaperEAA.jpg"
read -r baseurl < <(lynx -nonumbers -listonly -dump 'http://www.eaa.org/en/eaa/aviation-education-and-resources/airplane-desktop-wallpaper' | grep $size) &&
wget -q "$baseurl" -O "$dest"
killall Dock

把它倒入/etc/periodic/monthly/,然后你就有了一锅美味的炖菜!

如果用户正在进行某些操作,关闭 Dock 会导致问题吗? - stib
我没有注意到。它只是刷新了背景和Dock项目。 - DrumEater
1
有没有一种方法可以在不关闭Dock的情况下完成这个操作。我已经编写了一个脚本,每5秒刷新壁纸, 在这种情况下killall Dock将会每5秒刷新我的条目。 - thenakulchawla
1
@thenakulchawla 我添加了一个答案,可以在不使用killall Dock的情况下完成此操作。 - tnychn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接