5

次の簡単な python スクリプトを作成しました。これを Ubuntu 12.04 で cron ジョブとして設定して、1 時間に 1 回壁紙を変更するつもりでした。端末から完全に実行すると、スクリプトが実行され、壁紙が変更されます。しかし、cron ジョブを設定すると、syslog で cron ジョブが実行されたことを確認できますが、壁紙は変更されませんか?

#!/usr/bin/python

import os
import random

directory = os.getcwd() + '/'
files = os.listdir('.')
random.shuffle(files)
files.remove('.project')
files.remove('.pydevproject')
files.remove('background.py')
background = files[0]
setup = 'file://' + directory + background

print setup

os.system("gsettings set org.gnome.desktop.background picture-uri '%s'" % (setup))
4

3 に答える 3

2

cron で gsettings を実行すると問題が発生するようです。os.system コマンドを変更して DISPLAY=:0 GSETTINGS_BACKEND=dconf を含めると、うまくいきます。

os.system("DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '%s'" % (セットアップ))

于 2012-10-03T12:22:37.563 に答える
1

スクリプトの作業ディレクトリを変更する必要があります。次のように crontab から呼び出すことで実行できます。

cd /path/of/your/script && python scriptname.py

または、スクリプトで次のように実行できます。

import os

my_path = os.path.abspath(__file__)
dir_name = os.path.dirname(my_path)
os.chdir(dir_name)
于 2012-10-03T11:31:03.913 に答える
0

背景画像ファイルの正しいパスを提供し、必要な環境変数を設定することに加えて、os.system()呼び出しなしで Python から背景を変更できます。

import os
import urllib
from gi.repository.Gio import Settings  # pylint: disable=F0401,E0611

def set_background(image_path, check_exist=True):
    """Change desktop background to image pointed by `image_path`.

    """
    if check_exist:  # make sure we can read it (at this time)
        with open(image_path, 'rb') as f:
            f.read(1)

    # prepare uri
    path = os.path.abspath(image_path)
    if isinstance(path, unicode):  # quote() doesn't like unicode
        path = path.encode('utf-8')
    uri = 'file://' + urllib.quote(path)

    # change background
    bg_setting = Settings.new('org.gnome.desktop.background')
    bg_setting.set_string('picture-uri', uri)
    bg_setting.apply() # might be unnecessary

from Python 2.7.3 を使用した自動背景チェンジャーが機能しない

于 2012-10-03T14:44:05.067 に答える