如何以编程方式更改Mac OS X中的背景?

我将如何去编程更改Mac OS X中的桌面背景? 我想使用Python,但我有兴趣在任何可能的方式。 我可以连接到terminal并调用某个命令吗?

从python,如果你有安装的脚本 ( sudo easy_install appscript ),你可以简单地做

 from appscript import app, mactypes app('Finder').desktop_picture.set(mactypes.File('/your/filename.jpg')) 

否则,这个applescript会改变桌面背景

 tell application "Finder" set desktop picture to POSIX file "/your/filename.jpg" end tell 

你可以使用osascript从命令行运行它,或者使用类似Python的命令行运行它

 import subprocess SCRIPT = """/usr/bin/osascript<<END tell application "Finder" set desktop picture to POSIX file "%s" end tell END""" def set_desktop_background(filename): subprocess.Popen(SCRIPT%filename, shell=True) 

如果您正在为当前用户执行此操作,则可以从shell运行:

 defaults write com.apple.desktop Background '{default = {ImageFilePath = "/Library/Desktop Pictures/Black & White/Lightning.jpg"; };}' 

或者,作为root用户,对于另一个用户:

 /usr/bin/defaults write /Users/joeuser/Library/Preferences/com.apple.desktop Background '{default = {ImageFilePath = "/Library/Desktop Pictures/Black & White/Lightning.jpg"; };}' chown joeuser /Users/joeuser/Library/Preferences/com.apple.desktop.plist 

您当然想要replace图像的文件名和用户名。

新的设置将在Dock启动时生效 – 无论是在login还是在您

 killall Dock 

[基于其他地方的post ,并根据Matt Miller的答案提供的信息]。

我有同样的问题, 除了我想要更改所有连接的显示器上的壁纸 这里有一个使用appscript (上面提到的; sudo easy_install appscript )的Python脚本。

 #!/usr/bin/python from appscript import * import argparse def __main__(): parser = argparse.ArgumentParser(description='Set desktop wallpaper.') parser.add_argument('file', type=file, help='File to use as wallpaper.') args = parser.parse_args() f = args.file se = app('System Events') desktops = se.desktops.display_name.get() for d in desktops: desk = se.desktops[its.display_name == d] desk.picture.set(mactypes.File(f.name)) __main__() 

您可以调用“defaults write com.apple.Desktop Background …”(如本文所述): http : //thingsthatwork.net/index.php/2008/02/07/fun-with-os-x-defaults-和的launchd /

文章也进入脚本这自动运行,但第一点点应该让你开始。

您可能还对默认手册页感兴趣: http : //developer.apple.com/documentation/Darwin/Reference/ManPages/man1/defaults.1.html

小牛的单线解决scheme是:

 osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Earth Horizon.jpg"' 

要添加到Matt Miller的回应 :您可以使用subprocess.call()来执行一个shell命令,如下所示:

 import subprocess subprocess.call(["defaults", "write", "com.apple.Desktop", "background", ...]) 

你也可以使用py-appscript代替Popening osascript,或者使用10.5中包含的pyobjc的ScriptingBridge ,但是使用起来更麻烦些。

以编程方式更改桌面墙纸的另一种方法是将壁纸设置指向一个文件。 用你的程序用新devise覆盖文件,然后重新启动dock: killall Dock

以下取决于Xcode,lynx和wget,但这里是我如何自动下载和安装在山狮每月壁纸(无耻地被盗和从http://ubuntuforums.org/showthread.php?t=1409827改编):;

 #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/local/bin size=1440 dest="/usr/local/share/backgrounds/wallpaperEAA.jpg" read -r baseurl < <(lynx -nonumbers -listonly -dump 'http://www.eaa.org/en/eaa/aviation-education-and-resources/airplane-desktop-wallpaper' | grep $size) && wget -q "$baseurl" -O "$dest" killall Dock 

把它转储到/etc/periodic/monthly/和baby,你有一个炖汤!