2017-02-11 64 views
0

這聽起來很瘋狂,但我需要更新OS X用戶的默認值(特別是Dock.app),然後讓應用程序以某種方式識別出該更改已被並做出相應迴應。導致應用程序響應OS X中的更改用戶默認值

我知道這是可能的莫名其妙,因爲當在系統偏好設置中更改設置時,它立即生效。不幸的是,手冊defaults write -ing的情況並非如此。

這是我到目前爲止已經試過:

  1. 掛起Dock過程。
  2. $ defaults write com.apple.dock launchanim -bool false
  3. 運行這一個基本程序:[[NSDistributedNotificationCenter defaultCenter] postNotificationName:NSUserDefaultsDidChangeNotification object:nil];

不幸的是,這個通知似乎沒有任何效果。在恢復Dock時,無法識別更改(實際上,它在系統首選項中也未被識別)。

在這種情況下,我可以使用一些其他的(可能未記錄的)通知名稱嗎?或者用其他方式來表明這一點?

請注意,在這種情況下,只需要停止Dock功能,即可使用而不是選項。我可能會使用一些代碼注入方法(mach-inject?)來強制Dock調用[[NSUserDefaults standardUserDefaults] synchronize],但是我首先對更簡單和不太侵入的方法更感興趣,如果它們存在。

+0

@Ssswift Huh,沒有看到。所以目前看來這是不可能的。好吧。 – ThatsJustCheesy

+0

您可以向Apple提交錯誤報告 - 它今天不會幫助您,但這似乎是一個受歡迎的請求,我認爲這是一個合理的事情要做。 – Ssswift

+0

有趣的提示:我剛剛發現這個名爲cDock的應用程序,它允許Dock上的各種用戶自定義... ***沒有***關閉它!最重要的是,它完全開放源代碼:https://github.com/w0lfschild/cDock2它實現這一點(特別是,SIMBL注入到Dock並調用一些反向工程的內部過程API ),但知道這一點非常簡單,只要有足夠的奉獻精神(和代碼!),這是完全可能的。但是,這需要代碼注入,我寧願不要插入...但它可能是唯一的選擇:/ – ThatsJustCheesy

回答

0

好吧,這並不相當回答原來的問題(引起任何應用到用戶默認的變化做出反應),但它是我所期待的事,並希望它可以爲別人有用,太。

基本上,系統上有一個私有API來實時更新Dock偏好設置。這由Dock.prefpane使用。由於@Ssswift在評論中提到了一個更具體的問題,要求提供相同的信息,我已經在那裏發佈了我的完整答案。

請參閱https://stackoverflow.com/a/45788114/5390105

相關問題