Я сам сегодня наткнулся на эту проблему и сделал небольшую обратную инженерию. Так что есть на самом деле - существенные шаги, которые будут выполнять то, что вы хотите:
Очистить всю базу данных. (Это не является обязательным, но делает все намного проще)
DELETE FROM data
DELETE FROM displays;
DELETE FROM pictures;
DELETE FROM preferences;
DELETE FROM prefs;
DELETE FROM spaces;
Добавить пустую строку в таблице pictures
. Насколько я понял, это как-то работает как резерв, а macOS автоматически создает дополнительные строки с соответствующими идентификаторами отображения и идентификаторами пространства на основе всего, что мы определяем сейчас.
INSERT INTO pictures (space_id, display_id) VALUES (null, null);
Добавить фактические предпочтения в data
таблице.
INSERT INTO data (value) VALUES ('~/Pictures'); -- #10
INSERT INTO data (value) VALUES (60); -- #11
INSERT INTO data (value) VALUES (5); -- #2
INSERT INTO data (value) VALUES (0.07); -- #3, #4, #5
INSERT INTO data (value) VALUES ('current-wallpaper.jpg'); -- #16
INSERT INTO data (value) VALUES (1); -- #11/#12
Теперь это самая важная часть - фактическое отображение данных с соответствующими ключами Macos внутренние предпочтения. Это то, что я узнал, что до сих пор:
#1: Image path
#2: Scaling method (Fill Screen (1), Center (3), Stretch to Fill Screen (4), Fit to Screen (5))
#3: Fill color
#4: Fill color
#5: Fill color
#9: Enable automatic changing
#10: Directory path to images
#11: Image changing interval
#12: Random order
#16: Current image (used when automatic changing is enabled)
Так все, что вам нужно сделать, чтобы соответствовать идентификаторы строк данных с помощью клавиш, перечисленных выше. Например
INSERT INTO preferences (key, data_id, picture_id) VALUES (11, 2, 1);
линия выше означает: использовать 2-ю строку из data
таблицы (→ 60) в качестве Image changing interval
(# 11) на 1-й картине (в нашем случае означает все пробелы/дисплеи по умолчанию) ,
В моем случае я хотел изменить обои каждую минуту к случайным изображений из определенной папки с размером экрана включен и 7% яркий черный фоном цвет. Я достиг этого с этой линией:
sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db " \
DELETE FROM data; \
DELETE FROM displays; \
DELETE FROM pictures; \
DELETE FROM preferences; \
DELETE FROM prefs; \
DELETE FROM spaces; \
INSERT INTO pictures (space_id, display_id) VALUES (null, null); \
INSERT INTO data (value) VALUES ('~/Pictures'); \
INSERT INTO data (value) VALUES (60); \
INSERT INTO data (value) VALUES (5); \
INSERT INTO data (value) VALUES (0.07); \
INSERT INTO data (value) VALUES ('198.png'); \
INSERT INTO data (value) VALUES (1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (2, 3, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (3, 4, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (4, 4, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (5, 4, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (9, 6, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (10, 1, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (11, 2, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (12, 6, 1); \
INSERT INTO preferences (key, data_id, picture_id) VALUES (16, 5, 1); \
" && killall Dock
Надеюсь, это поможет любому, кто там борется.