Получение настольного фона на Mac

Вы можете только await обещание.

decrypt.upload не возвращает обещание.

Замените его обещанием.

Этот вопрос охватывает преобразование функции, которая принимает обратный вызов, к функции, которая возвращает обещание.

5
задан Bemmu 19 November 2008 в 07:27
поделиться

1 ответ

Обновленный Ответ (Индивидуалисты и более новый)

Начиная с Индивидуалистов, Apple пишет Рисунки рабочего стола в

/Users/<current-user>/Application Support/Dock/desktoppicture.db 

который является базой данных SQLite. Можно открыть этот файл в Терминале как это

sqlite3 "/Application Support/Dock/desktoppicture.db"

и затем выполненный следующий ВЫБОР:

SELECT display_uuid,space_uuid,value 
FROM preferences 
JOIN data ON preferences.data_id=data.ROWID 
JOIN pictures ON preferences.picture_id=pictures.ROWID
JOIN displays ON pictures.display_id=displays.ROWID 
JOIN spaces ON pictures.space_id=spaces.ROWID ;

Вывод будет

<UID1>|<UID2>|<PicturePath>
<UID1>|<UID2>|<PicturePath>
:

UID1 UID дисплея (например, дисплей Вашего MacBook, внешнего дисплея, и т.д. поскольку каждый дисплей может иметь собственное фоновое изображение), UID2 является дополнительным (иногда, это отсутствует, который, вероятно, означает все пробелы того дисплея), и это - UID пространства (каждый дисплей на OS X может иметь несколько пробелов, и каждое пространство может иметь собственное фоновое изображение), и <PicturePath> путь к изображению (для этого определенного пространства на этом определенном дисплее).

Конечно, можно связать Приложение против библиотеки SQLite и сделать все, что с вызовами библиотеки, но как использовать SQLite и синтаксис SQL для запросов и данных обновления, конечно, путь вне объема этого ответа. Всего одна подсказка: Вы выходите sqlite клиент путем ввода .exit (отметьте ведущий период!) и хит входят (CTRL+C не будет работать).

Просто еще одно примечание: можно обновить базу данных в приложении, но это не будет иметь никакого эффекта, поскольку Прикрепление не будет знать об этом (Вы изменяете его за его спиной). Для создания Прикрепления, знающего о том изменении, Вы имеете, уничтожают его как killall Dock, может быть достаточно просто ПОНУКНУТЬ его (killall -HUP Dock), который действительно не уничтожит его (я не протестировал это). В рамках приложения необходимо было бы найти идентификатор процесса Прикрепления и отправить ему сигнал (это - то же это killall делает), получение идентификаторов процесса и отправка сигналов также выходят за рамки того ответа.

Ответ прежней версии (Лев и ранее)

Вы на правильном пути. Если Вы пишете приложение в Углероде/Какао, просто загружаете предпочтительный файл. Это расположено в

/Users/<current-user>/Library/Preferences/com.apple.desktop.plist

Словарь содержит подсловарь с ключом default и этот sub словарь содержит ключ ImageFilePath, содержа полный путь к файлу изображения.

5
ответ дан 14 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: