【问题标题】:Set macOS wallpaper folder via command line通过命令行设置 macOS 壁纸文件夹
【发布时间】:2020-10-26 04:11:31
【问题描述】:

macOS 允许用户通过旋转文件夹 as described in Apple Support 中的图像来自动更改桌面背景。

我使用该功能每 30 分钟轮换一次 iCloud 中的“壁纸”文件夹。我尝试设置一个命令来从命令行进行此更改,但它目前正在将背景设置为 macOS High Sierra 中的默认图像。

sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/Library/Mobile Documents/com~apple~CloudDocs/Wallpaper'" && killall Dock

任何提示将不胜感激!

【问题讨论】:

  • 嗨塞缪尔,感谢您的反馈。我相信这里的用例略有不同。该问题旨在使用 python 将背景设置为单个图像,对此有多种解决方案。我的目标是通过更改系统首选项将背景设置为目录。我在 Stack Overflow 和 Apple 论坛上进行了搜索,但尚未找到可行的解决方案。

标签: macos


【解决方案1】:

作为设置点文件的一部分,我想让它从我的图像集合中随机选择一张壁纸。上述解决方案似乎正是我所需要的,但我遇到了一些问题。

  1. shuf 在我的环境中不是可用的命令

  2. 在几个重要的情况下,我操作 desktoppicture.db 数据库失败了:

    • desktoppicture.db 中的数据表最初没有记录。这是新机器或新安装的操作系统上的状态,它显示默认背景。在这种情况下调用“更新数据集值”命令将失败,因为没有要更新的先前值。

    • 如果用户进入“系统偏好设置”中“桌面和屏幕保护程序”的“桌面”选项卡,并将文件夹添加到查找壁纸图像的位置列表中,则该文件夹的路径将添加到 desktoppicture 中的数据表中。D b。在这种情况下调用“更新数据集值”命令可以成功,只是没有达到预期的效果。它会导致 Dock 无法启动,可能是因为系统需要文件夹路径的位置现在有文件。幸运的是,删除 desktoppicture.db 文件可以让系统创建一个新文件。

    • 如果用户使用“桌面和屏幕保护程序”来添加文件夹和选择壁纸,则数据表最终会显示两行,每个值对应一行。在这种情况下,“更新数据集值”会将两行更改为具有相同的新值。同样,对于 Dock 的运行能力来说不是那么好。

为了解决这些问题,我采用了以下方法:

#!/usr/bin/env bash
walls="$HOME/projects/dot/wall"
wall=$(ls -1 "$walls" | sort --random-sort | head -1)
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$walls/$wall"'"'

【讨论】:

    【解决方案2】:

    我是通过谷歌到达这里的。您的答案几乎就在那里,但您正在尝试将壁纸图像设置为目录而不是图像文件。这是我用的

    #!/bin/zsh
    dir='~/Wallpapers'
    file=$(ls -1 $dir/*.jpg  | shuf -n 1)
    echo $file
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '${file}'" && killall Dock
    

    将此保存为名为@9​​87654322@ 的文件或其他文件,并让它每30 分钟在一个cron 作业上运行。

    你可以很容易地把它变成一个shell函数,将目录作为命令行参数并在不同的目录之间切换。

    所以,这会给你想要的效果,但我不确定如何让它显示在实际的系统偏好设置中,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多