在 OSX Lion 中设置单个桌面的背景图像
Posted
技术标签:
【中文标题】在 OSX Lion 中设置单个桌面的背景图像【英文标题】:Setting background image of individual desktops in OSX Lion 【发布时间】:2011-09-15 10:19:43 【问题描述】:我有一个小 PyObjC 脚本可以将桌面图像更改为特定文件(从 flickr 获取)。如果您有多个屏幕,它会为每个屏幕设置不同的图像。这在 Snow Leopard 中运行良好,但在 Lion 中,您可以为单个桌面(以前称为 Spaces)设置背景图像,而在 Snow Leopard 中,所有 Spaces 共享相同的背景。
我目前在[NSWorkspace sharedWorkspace]
上使用setDesktopImageURL:forScreen:options:error:
,但这只会将图像设置在当前空间/桌面上。
有什么想法可以迭代桌面并在每个桌面上设置图像吗?非常感谢!
【问题讨论】:
【参考方案1】:虽然我认为没有支持的 API,但您应该可以使用 defaults
命令行实用程序来实现。桌面图像以每个空间为基础存储在 ~/Library/Preferences/com.apple.desktop.plist 中,并且可以按照 Clinton Blackmore 在此处的回答中所述进行读写:How can I programmatically change the background in Mac OS X?。您显然必须稍微更改命令来修改空格字典而不是默认值,但它应该可以正常工作。
【讨论】:
我认为这正是我所需要的。我将查找有关该文件结构的一些文档。【参考方案2】:您可以使用 [NSScreen screens]
将所有屏幕作为 NSArray 获取,然后遍历该数组,为每个屏幕设置桌面图像。苹果有一些示例代码:http://developer.apple.com/library/mac/#samplecode/DesktopImage/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008860
【讨论】:
不幸的是 [NSScreen 屏幕] 返回每个连接的监视器 1 个屏幕。我可以用它来设置每个显示器的背景,但不能设置单独的空间以上是关于在 OSX Lion 中设置单个桌面的背景图像的主要内容,如果未能解决你的问题,请参考以下文章