macos
  • sqlite3
  • applescript
  • osx-mavericks
  • osx-yosemite
  • 2015-11-04 95 views 4 likes 
    4

    我试图设置一个脚本,该脚本自动更改Mac上的所有桌面背景(空格)。据this answer,可以让你通过的通过脚本在Mac上更改所有桌面背景的缩放比例

    #!/bin/sh 
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/Users/user/Documents/My Pictures/dlanham_Phobos.sitechange.jpg'"; 
    killall Dock; 
    

    的快速脚本改变所有的桌面背景,图像然而,默认为“充满屏幕”选项,然后我想用我已经得到了“适合屏幕”显示整个图像(最好也设置背景颜色)。

    我一直在玩desktopficture.db数据库,我可以看到某些事情会改变,当我改变适合屏幕,但我不能完全弄清楚需要添加到脚本的东西来获取所有台式机都显示相同的图像,但适当缩放。

    回答

    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)(在我们的情况下,意味着所有的空格/默认显示器) 。


    在我来说,我想改变墙纸每分钟特定文件夹一个随机图像与适合屏幕启用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 
    

    希望这可以帮助任何人在那里挣扎。

    相关问题