Я хотел бы изменить обои всех рабочих столов (ранее «пробелы») на экране. Начиная с OS X 10.6, в NSWorkspace есть категория, которая позволяет устанавливать обои, однако, когда я использую эту функцию, изменяются только обои текущего рабочего стола, а все остальные рабочие столы остаются неизменными.
Затем я просмотрел список настроек рабочего стола и написал класс, который модифицирует его, чтобы отразить нужные мне изменения (по сути, установить новый путь к файлу изображения). После того, как новый файл был сохранен, я отправил уведомление com.apple.desktop «BackgroundChanged» — Google, если вы не знаете, о чем я говорю, это было то, как люди меняли обои до 10,6 дней. Сначала это не дало никакого результата, поэтому вместо «nil» в качестве словаря userInfo я отправил точно такой же словарь userInfo, как это делает Apple, когда вы меняете обои в своих настройках (подписывайтесь на уведомление в приложении и меняйте обои в приложении настроек, и вы увидите, как это выглядит). Здесь мне помогла удача, когда я отправил уведомление таким образом, Док почему-то завис, а при перезагрузке загрузил настройки из файла настроек, отобразив мои изменения.
Это работает на 10.7.1, однако я бы предпочел: а) не иметь плохого пользовательского опыта при сбое и перезагрузке дока и б) использовать путь, который более или менее гарантированно будет работать и в будущих выпусках. Использование ошибки не похоже на стабильный путь.
Любые другие идеи о том, как изменить обои всех рабочих столов? Я также не уверен, предназначено ли текущее поведение категории обоев NSWorkspace или является ошибкой, однако, судя по поведению панели настроек обоев, кажется, что первое имеет место.