在 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 中设置单个桌面的背景图像的主要内容,如果未能解决你的问题,请参考以下文章

在 UITabBar 中设置背景图像的问题

在 IrfanView 中设置透明图像背景

如何在颤动中设置背景图像?

如何在 QWebEngineView 中设置背景图像 [重复]

无法在画布中设置背景图像

如何在 Django 模板中设置背景图像?