我目前正在编写一个脚本来每隔一分钟更改一次桌面背景,但是当我将输出传输到我得到的文件时:
** (process:22375): WARNING **: Command line `dbus-launch --autolaunch=134db3df26c562acad27e9cf00000009 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
python脚本如下:
#!/usr/bin/env python
import os, random
def main():
files = os.listdir("/home/benkaiser/scripts/XKCD_IMAGES");
nameOfImg = random.choice(files)
os.system("gsettings set org.gnome.desktop.background picture-uri file:///home/benkaiser/scripts/XKCD_IMAGES/" + nameOfImg)
print "Finished Fine!";
return 0
if __name__ == '__main__':
main()
crontab命令是: * * * * * /home/benkaiser/scripts/changeDesktop.py
我已经确定该文件是可执行的,这不是问题所在。这似乎与提供错误的os.system调用有关
答案 0 :(得分:1)
问题是gsettings
需要知道要运行的屏幕。如果你在终端中运行它,它将在终端所在的屏幕上运行,但是如果你在crontab中运行它,它的上下文中没有任何屏幕。
您可以通过向gsettings命令或环境变量添加开关来指定显示。这取决于是否曾在无法推断显示的情况下编写gsettings。
答案 1 :(得分:0)
Crontab通常不了解X服务器。试试,
* * * * * DISPLAY=:0 /home/benkaiser/scripts/changeDesktop.py
我不确定它是否会起作用。
答案 2 :(得分:0)
不确定您的设置,但添加DISPLAY=:0.0
对我有用。 Ubuntu 12.04,gnome3,双显示器
在crontab中有这个条目
* * * * * DISPLAY=:0.0 /home/german/change-bg.py