0

我目前正在编写一个脚本来每分钟更改一次桌面背景,但是当我将输出通过管道传输到一个文件时,我得到:

** (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 调用有关

4

3 回答 3

1

问题是gsettings需要知道要在哪个屏幕上运行。如果您在终端中运行它,它将在终端所在的屏幕上运行,但如果您在 crontab 中运行它,它的上下文中没有任何屏幕。

您可以通过向 gsettings 命令或环境变量添加开关来指定显示来执行此操作。这取决于是否曾经编写过 gsettings 以在无法推断显示的情况下工作。

于 2012-08-29T07:20:18.330 回答
0

crontab 通常不知道 X 服务器。试试,

* * * * * DISPLAY=:0 /home/benkaiser/scripts/changeDesktop.py

我不确定它是否会起作用。

于 2012-08-29T07:19:05.027 回答
0

不确定您的设置,但添加DISPLAY=:0.0对我有用。Ubuntu 12.04,gnome3,双显示器

在 crontab 中有这个条目

* * * * * DISPLAY=:0.0 /home/german/change-bg.py
于 2012-08-29T11:44:08.883 回答