我有一个Python脚本,它使用子进程来运行改变桌面背景的AppleScript。定期通过launchd调用bash脚本来运行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)
答案 0 :(得分:1)
终于明白了。在我编写此脚本的某个地方,我在OSX的系统偏好设置中启用了“更改图片:每天”功能(我想看看我是否能找到用于此过程的plist)。一旦我终于意识到并禁用它,launchd就可以通过我的脚本改变背景。
我仍然不确定为什么会发生这种情况,因为我在手动运行脚本时能够更改背景,但是很好。
感谢您的帮助!