在OSX Lion中设置各个桌面的背景图像

时间:2011-09-15 10:19:43

标签: objective-c cocoa osx-lion pyobjc

我有一个小的PyObjC脚本将桌面图像更改为特定文件(从flickr获取)。如果你有多个,它会为每个屏幕设置不同的图像。这在Snow Leopard中运行良好,但在Lion中,您可以为各个桌面设置背景图像(正式为Spaces),而在Snow Leopard中,所有Spaces共享相同的背景。

我目前在setDesktopImageURL:forScreen:options:error:上使用[NSWorkspace sharedWorkspace],但这只会在当前空间/桌面上设置图片。

我有什么想法可以迭代桌面并在每个桌面上设置图像?非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用[NSScreen screens]将所有屏幕作为NSArray获取,然后遍历该阵列,为每个屏幕设置桌面图像。 Apple有一些示例代码:http://developer.apple.com/library/mac/#samplecode/DesktopImage/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008860

答案 1 :(得分:2)

虽然我认为没有支持的API,但您应该可以使用defaults命令行实用程序来完成此操作。桌面图像存储在〜/ Library / Preferences / com.apple.desktop.plist中的每个空间基础上,可以按照Clinton Blackmore在这里的答案How can I programmatically change the background in Mac OS X?中的描述进行读写。您显然必须稍微更改命令以修改空格字典而不是默认字典,但它应该工作相同。