修改OSX上的“Spaces”plist以设置默认桌面

时间:2012-02-23 20:43:02

标签: macos osx-lion plist osx-snow-leopard

我目前正尝试通过在10.6(和10.7)上修改与“Spaces”相关联的plist来将应用程序默认为所有桌面。在Snow Leopard上,可以通过转到“系统偏好设置”>设置应用程序的默认桌面。 Expose和Spaces,并将应用程序设置为默认显示在所有空格中。这按预期工作,我的应用程序出现在所有桌面上。

但是,我正在寻找一种实用的方法,并希望能够在我的应用程序中设置此功能。我找到了与每个操作系统相关的plist文件:

OS X 10.7: ~/Library/Preferences/com.apple.spaces.plist

OS X 10.6: ~/Library/Preferences/com.apple.dock.plist

编辑这些文件(参考应用程序桌面默认设置),然后使用 killall Dock 重新启动Dock不会影响我的应用程序在Spaces中显示的位置。

我还尝试使用 defaults 设置我的默认桌面:

defaults write com.apple.dock workspaces-app-bindings -dict-add com.mybundle.thing  65544

这也无法工作,因为应用程序没有与正确的桌面(或所有桌面,如上面的命令所示)相关联。

这两种方法都会使应用程序显示在“系统偏好设置”面板中,同时显示正确的空间分配。但是,除非我直接从系统偏好设置中分配它,否则它无法工作。

为了让这个工作起作用,还有其他我需要设置的东西吗?

2 个答案:

答案 0 :(得分:2)

10.7似乎将“所有空格”存储为字符串AllSpaces

作为参考,它使用空字符串将应用程序绑定到主桌面,并根据空间的uuid值将其绑定到其他空间。

答案 1 :(得分:1)

这个Applescript在OSX 10.8.5中为我的类似项目工作, 但它只列出了每个空间的名称,(我有9个空格。)这是一种访问plist数据的简单方法。我确信可以通过调整来重写plist。

tell application "Finder" to set propsLST to alias ((home as text) & ¬
"Library:Preferences:com.apple.spaces.plist") as text

tell application "System Events" to set theSPACES to value of every property list item of property list item "Space Properties" of property list item ¬
 "SpacesConfiguration" of contents of property list file propsLST

set spacesLST to {}

repeat with eachSPACE in every item of theSPACES
  set {spaceNAM, spaceWNDW} to eachSPACE as list
  set end of spacesLST to spaceNAM
end repeat

return spacesLST