You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何操作com.apple.spaces.plist中的App Bindings配置?

macOS com.apple.spaces的app-bindings属性读写方案

你可以通过两种方式实现app-bindings的读写操作:

方法一:偏好域读写(无私有API依赖,适用所有公开版本macOS)

app-bindings属性本质存储在用户全局偏好的com.apple.spaces域下,你可以直接读写该偏好键实现操作:

  • 读取命令:defaults read com.apple.spaces app-bindings,返回结构为bundle ID对应空间UUID的字典
  • 写入命令:defaults write com.apple.spaces app-bindings -dict [要更新的bundle ID] [对应空间UUID]
  • 操作完成后需要重启Dock生效:killall Dock
  • 编程实现可直接调用CFPreferences或NSUserDefaults接口操作对应域的app-bindings键即可。

方法二:私有API方案(仅适用于非上架应用)

确实存在未公开的Core Graphics私有API支持直接操作App绑定,无需手动重启Dock,接口声明如下:

// 获取主CGS连接ID
extern CGSConnectionID CGSMainConnectionID(void);
// 给指定Bundle ID的App绑定到对应空间ID
extern OSStatus CGSSetWorkspaceAppBinding(CGSConnectionID cid, CFStringRef bundleID, CGSSpaceID spaceID);
// 查询指定Bundle ID的App绑定的空间ID
extern OSStatus CGSGetWorkspaceAppBinding(CGSConnectionID cid, CFStringRef bundleID, CGSSpaceID *outSpaceID);
// 删除指定App的空间绑定
extern OSStatus CGSRemoveWorkspaceAppBinding(CGSConnectionID cid, CFStringRef bundleID);

调用时注意:

  • 传入的CGSSpaceID为你通过现有CGSSpace相关接口获取的系统内部空间ID,和偏好中存储的UUID会自动映射同步
  • 该类私有API无官方兼容性保证,不同macOS大版本可能存在接口变更,无法通过App Store审核。

内容的提问来源于stack exchange,提问作者a_kira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:07