如何以编程方式更改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,你有一个炖汤!