【问题标题】:Change scaling for all desktop backgrounds on Mac via a script通过脚本更改 Mac 上所有桌面背景的缩放比例
【发布时间】:2016-02-05 14:57:38
【问题描述】:

我正在尝试设置一个脚本来自动更改 Mac 上的所有桌面(空间)背景。我已经到了this answer,它可以让您通过

的快速脚本将所有桌面背景更改为图像
#!/bin/sh
sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/Users/user/Documents/My Pictures/dlanham_Phobos.sitechange.jpg'";
killall Dock;

但是,默认为“填充屏幕”选项,我想使用“适合屏幕”来显示整个图像(最好也设置背景颜色)。

我一直在使用 desktoppicture.db 数据库,当我更改适合屏幕时,我可以看到某些事情发生了变化,但我无法确定需要添加到脚本中以获取所有内容桌面以显示相同的图像,但适当缩放。

【问题讨论】:

    标签: macos sqlite applescript osx-mavericks osx-yosemite


    【解决方案1】:

    我今天自己偶然发现了这个问题,并做了一些逆向工程。所以实际上有 4 个基本步骤可以完成您想要的事情:

    1. 清除整个数据库。 (这不是强制性的,但会让一切变得更容易)

      DELETE FROM data
      DELETE FROM displays;
      DELETE FROM pictures;
      DELETE FROM preferences;
      DELETE FROM prefs;
      DELETE FROM spaces;
      
    2. pictures 表中添加一个空行。据我了解,这以某种方式作为后备工作,macOS 会根据我们现在定义的所有内容自动创建具有相应显示 ID 和空间 ID 的附加行。

      INSERT INTO pictures (space_id, display_id) VALUES (null, null);
      
    3. 将您的实际偏好添加到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
      
    4. 现在这是最重要的部分——数据与适当的 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)
      

      因此,您所要做的就是将数据行的 ID 与上面列出的键匹配。例如

      INSERT INTO preferences (key, data_id, picture_id) VALUES (11, 2, 1);
      

      上面的行表示:使用data 表中的第二行 (→ 60) 作为第一张图片的Image changing interval (#11)(在我们的例子中,默认情况下表示所有空格/显示)。


    在我的情况下,我想将壁纸 每分钟 更改为 特定文件夹 中的 随机 图像,并带有 Fit to Screen 启用和 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
    

    希望这可以帮助那些在这方面苦苦挣扎的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2022-11-22
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多