Имам скрипт на Python, който използва подпроцес, за да стартира AppleScript, който променя фона на моя работен плот. Скрипт bash се извиква периодично от launchd, за да стартира скрипта на Python.
Когато стартирам bash скрипта от командния ред, той работи добре, но проблемът е, че когато launchd извиква bash скрипта по същия точен начин, AppleScript изглежда не работи (отстранявах грешки до този момент и всичко преди извикването на подпроцес работи добре). Предполагам, че това е проблем с разрешенията, но launchd изглежда изпълнява скрипта като мен. Дори се опитах да го пусна като root и пак не работи. Изпълнението му като демон и потребителски администратор (/Library/LaunchAgents) също не работи.
Ето моя plist файл:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.foo.background.change</string>
<key>Nice</key>
<integer>-15</integer>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/Users/scott/Projects/Background/env/bin/Background/change_background.sh</string>
</array>
<key>ServiceDescription</key>
<string>Runs a script to change the desktop background image.</string>
<key>ServiceIPC</key>
<false/>
<key>StartInterval</key>
<integer>60</integer>
<key>UserName</key>
<string>scott</string>
</dict>
</plist>
Всяка помощ се оценява!
РЕДАКТИРАНЕ: Благодаря за отговора! Ето скрипта на python. set_desktop_background
се извиква от друг метод, който определя кое изображение да се използва. Винаги се използва пълният път на изображението.
import subprocess
SCRIPT = """/usr/bin/osascript<<END
tell application "Finder"
set desktop picture to POSIX file "%s"
end tell
END"""
def set_desktop_background(filepath):
subprocess.Popen(SCRIPT%filepath, shell=True)
subprocess
? - person larsks   schedule 14.04.2014