2012-10-03 12 views
5

Napisałem następujący prosty skrypt Pythona, który zamierzałem ustawić jako zadanie cron w Ubuntu 12.04, aby zmienić tapetę raz na godzinę. Skrypt uruchamia się i zmienia tapetę, gdy doskonale wykonuję ją z terminala. Jednak gdy ustawię zadanie cron, widzę w syslog zadanie cron, ale tapeta się nie zmienia?Ustawianie tła z Python2.7 Crontab w Ubuntu 12.04

#!/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)) 

Odpowiedz

2

Wydaje swój problem z systemem gsettings pod cron. Zmiana komendy os.system tak, aby zawierała DISPLAY =: 0 GSETTINGS_BACKEND = dconf działa.

os.system ("WYŚWIETLACZ = 0 GSETTINGS_BACKEND = dconf gsettings ustawione org.gnome.desktop.background obraz-URI '% s'" % (Setup))

1

Musisz zmienić katalog roboczy swojego skryptu. Można to zrobić poprzez wywołanie go z crontab tak:

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

czy można to zrobić w skrypcie robi coś takiego:

import os 

my_path = os.path.abspath(__file__) 
dir_name = os.path.dirname(my_path) 
os.chdir(dir_name) 
+0

dzięki próbowałem obu, ale nie działało. Tło się nie zmienia. – James

0

Ponadto, aby zapewnić prawidłowe ścieżkę plik obrazu tła i ustawień niezbędne zmienne środowiskowe można zmienić tło z Pythona bez os.system() rozmowy:

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 

z Automatic background changer using Python 2.7.3 not working, though it should

Powiązane problemy