如何使用脚本更新 Mac OS X Mavericks 桌面背景

如何使用脚本更新 Mac OS X Mavericks 桌面背景

如何使用脚本更新 Mac OS X Mavericks 桌面背景?

使用脚本更新 Mac OS X 桌面背景适用于 OS X 10.8,但现在不再适用。桌面默认为默认的“Wave”背景。

答案1

Jan-Yves 提到的文件现在似乎已经失效了。

我在 Mavericks 上使用 SQLite Database Browser 2.0 b1.app。它有点旧,但仍然可以使用。

如果您打开 ~/Library/Application Support/Dock/desktoppictures.db,您可以查看关键的“数据”表。它基本上只是当前桌面图片的路径。但是,根据您运行的监视器数量,可能会有多行。显然,您可以为每个显示器设置不同的桌面图片,我相信这一改进是 Mavericks 的一部分。

您可以手动更改 sqlite 编辑器中的行,然后执行“killall Dock”,只要您记得在编辑器中保存更改即可。这并不比弹出系统首选项更容易,但我尝试了一下,只是为了确保系统如何工作。在手动编辑之前备份 .db 文件可能是有意义的。

无论如何,我使用几个小型 shell 脚本来更改我的桌面,作为当我更改 hosts 文件时发出的警告。

完整脚本如下:

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

您可以轻松添加参数以更好地控制图片,但这是基本逻辑。

您会看到一些帖子推荐一个额外的“where rowid=1”。出于我的目的,我允许更改所有显示器的桌面,因此我省略了 rowid。它将更新多行。

希望这可以帮助。

答案2

Mavericks 改变了存储桌面背景信息的位置。以前是~/Library/Preferences/com.apple.desktop.plist二进制 plist 文件,现在则是~/Library/Application Support/Dock/desktoppictures.dbSQLite 文件。如果你打开它(我认为 sqlite3 是 OS X 的标准配置?否则你应该能找到一个 SQLite DB 应用程序 - 我使用根据但可能还有更好的)您会注意到表中有桌面背景文件名data。其他表格很有趣,但有点神秘。您基本上可以在表上运行 UPDATE 查询来更改给定空间的桌面背景,例如:

UPDATE data SET value=~/Pictures/foo.png WHERE ROWID=1

我刚刚自己解决了这个问题:还有更多详细信息这里

[预计到达时间:固定链接]

答案3

我无法让有点弃用的 appscript 继续工作,因此我改用了 PyObjc。

使用 Macports 的 python 2.7 并安装了 py27-pyobjc-cocoa 包:

#!/opt/local/bin/python2.7

from AppKit import NSWorkspace, NSScreen
from Foundation import NSURL

def change_desktop_background(file, desk_id):
    file_url = NSURL.fileURLWithPath_(file)
    ws = NSWorkspace.sharedWorkspace()
    screen = NSScreen.screens()[desk_id]
    ws.setDesktopImageURL_forScreen_options_error_(file_url, screen, {}, None)

# Change my second screen desktop
change_desktop_background("myfile.jpg", 1)

答案4

我一直在尝试在 osx Yosemite 上实现这个功能,并通过 @yelling_monster 的回答和旧 bash 脚本曾经在山狮上工作过,我做了这个:

#! /bin/bash

echo -n "Drag and drop an image file here and hit 'return' (or ctrl-c to cancel)
"
 read -e WLPR;
function change_wallpaper
 {
#!/bin/sh
sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$WLPR'";
killall Dock;
 }
 change_wallpaper

desktoppicture.db使用简单的备份

cp ~/Library/Application\ Support/Dock/desktoppicture.db{,-bkp}

按照我链接的站点上的说明使脚本可执行(将其命名为更好的名称wpset),然后您就可以开始了。

一旦执行,您仍然可以通过系统偏好设置单独更改显示器的背景Desktop & screensaver,这对于第二台显示器来说很方便(不过,在 finder -> 服务上下文菜单中旧的右键单击图片似乎没有任何作用)

相关内容