Bonjour à tous,
J'ai voulu faire un script afin de créer un diaporama avec les images de fond du bureau. Je me suis inspirée du post de Cotaka posté il y a 1 an que j'ai modifié un peu.
Voici mon problème, il fonctionne nickel quand je l'exécute depuis la console en tapant: python fond.py
par contre si je fais: sudo ./fond.py il se lance correctement mais l'image de fond ne change pas.
Quelle est la différence entre ces 2 façons?
Car du coup quand il s'exécute avec CronTab, le script s'exécute bien (le fichier .log est correctement modifié) mais le fond ne change pas..
Est-ce que c'est un problème de droits incorrects quand il tente de faire: os.system('gsettings set org.gnome.desktop.background picture-uri "file://'+str(chemin)+str(num_img)+'.jpg"')?
voici le code de mon script de diaporama:
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Ce script permet de changer le fond d'écran toutes les 15 min avec CronTab
Pour le tester depuis la console: ne pas le lancer "sudo ./fond.py" mais "python fond.py" (Pourquoi??)
'''
import os
# Configuration des variables
chemin = '/home/liliana/fond-ecran/' # dossier contenant les img de fond
# On compte le nombre d'images de fond qu'il y a dans le dossier
nb_img = (len(os.listdir( chemin )) - 3) # on enlève 3 car il y les fichiers fond.py, liscatoi et num-img.log
# On va checker ou créer le fichier num-img.log pour connaitre le numéro de l'image de fond en cours
if os.path.isfile(chemin+"num-img.log"):
print("Le fichier num-img.log existe: on met son contenu ds la variable num_img")
fichier = open(chemin+"num-img.log", "r")
num_img = fichier.read()
fichier.close()
else: # num-img.log n'existe pas
print("Le fichier num-img.log n'existe pas -> on le créer et on inscrit 1 dedans pour 1ère img")
num_img = 1 # on cree la variable
fichier = open(chemin+"num-img.log", "a")
fichier.write(str(num_img))
fichier.close()
# On charge l'image portant le numéro contenu dans $num_img
os.system('gsettings set org.gnome.desktop.background picture-uri "file://'+str(chemin)+str(num_img)+'.jpg"')
#print('gsettings set org.gnome.desktop.background picture-uri "file://'+str(chemin)+str(num_img)+'.jpg"')
print("Image de fond " + str(num_img) + ".jpg chargée..")
# Puis on met +1 dans num-img.log
num_img = (int(num_img) + 1)
if num_img > nb_img: # si le numéro de l'image est > que le nombre d'img dans le dossier alors
num_img = 1 # on revient à la 1ère img
os.remove(chemin+"num-img.log") # on efface le fichier num-img.log
fichier = open(chemin+"num-img.log", "a") # pour le recreer avec + 1
fichier.write(str(num_img))
fichier.close()
print("Fichier num-img.log + 1")
Un grand merci d'avance :-)
(source du post de Cotaka: http://forum.elementaryos-fr.org/topic/1977-résolu-python-mettre-en-background-depuis-le-web-toutes-les-x-secondes)