如何使用脚本更新 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.db
SQLite 文件。如果你打开它(我认为 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 -> 服务上下文菜单中旧的右键单击图片似乎没有任何作用)