如何更改 Dock Preferences 中“最小化到应用程序”的值
Posted
技术标签:
【中文标题】如何更改 Dock Preferences 中“最小化到应用程序”的值【英文标题】:How Change value of "minimize-to-application" in Dock Preferences 【发布时间】:2021-10-20 01:24:28 【问题描述】:搜索CoreDockPreferences,发现这些私有系统APIcoredock.h
我正在尝试使用 CoreDockSetPreferences 更改 Minimize To App 的值,但它不起作用
下面是我在 Obj-c 中的接口和实现:
@interface Symbolic : NSObject
extern void CoreDockSetPreferences(CFDictionaryRef preferenceDict);
- (void) setDictionaryDock: (CFDictionaryRef)dockDict;
@end
@implementation Symbolic
-(void) setDictionaryDock: (CFDictionaryRef)dockDict
CoreDockSetPreferences(dockDict);
这是我如何调用和传递 dock.plist 字典在 Swift 中更改:
func dockPrefChange()
if let dir = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first
let dockPlistPath = dir.appendingPathComponent("Preferences", isDirectory: true).appendingPathComponent("com.apple.dock.plist", isDirectory: false)
guard let dockDictionary = NSMutableDictionary(contentsOf: dockPlistPath) else return
dockDictionary["minimize-to-application"] = 1
Symbolic().setDictionaryDock(dockDictionary as CFDictionary)
【问题讨论】:
它是如何“不工作”的?CoreDockSetPreferences
被执行了吗? dockDict
应该是什么?
【参考方案1】:
谢谢Willeke你是对的。
DockDict 不是应该的。 阅读更多关于,我回答这个问题。
基本上我遵循 coredock.h 中的注释“序列用法”
// Example usage
/*
CFArrayRef d = CFStringCreateArrayBySeparatingStrings(kCFAllocatorDefault, CFSTR("showRecents,showProcessIndicators,minimizeToApplication"), CFSTR(","));
CFDictionaryRef dic;
CoreDockCopyPreferences(d, &dic, nil);
*/
并重新创建如下代码:
@implementation Symbolic
- (NSDictionary*) getDictionaryDock
CFArrayRef d = CFStringCreateArrayBySeparatingStrings(kCFAllocatorDefault, CFSTR("showRecents,showProcessIndicators,minimizeToApplication"), CFSTR(","));
CFDictionaryRef dic;
CoreDockCopyPreferences(d, &dic, nil);
NSDictionary *nsDictionary = (__bridge NSDictionary*)dic;
return nsDictionary;
- (void) setDictionaryDock: (NSDictionary*) newDictionary
CFDictionaryRef dict = (__bridge CFDictionaryRef)newDictionary;
CoreDockSetPreferences(dict);
在 Swift 中:
public func setMinimizeToApp(value: Bool)
if var dict = symbolic.getDictionaryDock() as? [String: Bool]
if dict["minimizeToApplication"] != value
dict["minimizeToApplication"] = value
symbolic.setDictionaryDock(dict)
【讨论】:
以上是关于如何更改 Dock Preferences 中“最小化到应用程序”的值的主要内容,如果未能解决你的问题,请参考以下文章
在 CAR_MODE/CAR_DOCK 中如何在 android 中设置不同的家庭应用程序