Changer régulièrement son fond d'écran (gnome) grâce à un script python !

Un truc qui me manquait, vue que j’ai trouvé plusieurs potentiels fonds d’écran pour… mon fond d’écran, c’était la possibilité d’en mettre plusieurs, qui changent de manière automatique toutes les X secondes. (Ça n’existe pas en natif dans Gnome, au contraire de KDE), ça permet d’éviter de faire un choix ;). Après n’avoir trouvé que ça d’intéressant, je me suis dit que c’était plus simple de le faire moi-même et en profiter pour découvrir le python ! (Au final c’est pas compliqué, sauf que c’est un langage de tabulés[1] ;))

Voila le script :

 #!/usr/bin/python # coding=UTF-8 # ######################################################################################################### # Changeur de font d’écran à intervalles réguliers pour GNOME, Version 1.0             # #                                                     # # Par Maximilien Cuony [maxi_the_glu@bluewin.ch][http://theglu.tuxfamily.org]             # #                                                 # # Basé sur un script de guix77 [http://linuxfr.org/comments/465267.html#465267]               # ######################################################################################################### ## Importation des librairies nécessaires import os, re, time, random, commands, sys, StringIO from getopt import GetoptError, gnu_getopt ## Configurations par default : #Dossier des images Path_images = os.path.expanduser("~") + "/" + "fondsdecran/" # extensions a chercher File_Match = re.compile(’[{png}{jpeg}{swg}{jpg}{gif}]$‘) # Nombre de secondes avant de changer une image Secondes = 60 ## Fonctions # Récupération de la liste des images disponibles def Dir_Contents(Item=""):     Final_List = []     if Item == “: return (“)  elif os.path.isdir(Item):       List = os.listdir(Item)         for Item2 in List:          Item3 = Item + "/" + Item2            Temp_List = Dir_Contents(Item=Item3)            for Item4 in Temp_List: Final_List.append(Item4)    elif os.path.isfile(Item):      if File_Match.search(Item): return([Item])      else: return([])    return (Final_List) # Fin de Dir_Contents # Affichage de l’aide def Show_Help():    print "Ceci est un programme pour changer de fond d’écran GNOME à intervalles réguliers"  print ""  print "Vous pouvez lancer le script sans arguments, et il utilisera les variables par défaut (" + Path_images + " comme dossier de recherche et changement de l’image toute les " + Secondes + " secondes),"    print "Ou se servir des paramètres –sec SECONDES ou -s SECONDES pour changer le fond toutes les SECONDES secondes, ainsi que –path DOSSIER ou -p DOSSIER pour définir le dossier de recherche des images."  print ""  print "Par Maximilien Cuony [maxi_the_glu@bluewin.ch][http://theglu.tuxfamily.org], basé sur un travail de  guix77 [http://linuxfr.org/comments/465267.html#465267]" # Fin de Dir_Contents ## Gestion des arguments try:  args = sys.argv[1:]         optlist = gnu_getopt(args, ‘hs:p:‘, [‘sec=’, ‘help’, ‘path=’]) except GetoptError:  print "" # Les options for option, value in optlist[0]:   if option in ["-h", "–help"]:          Show_Help()             sys.exit(0)     elif option in ["-s", "–sec"]:         Secondes = int(value)   elif option in ["-p", "–path"]:        Path_images = value ## Préparation # Récupération de la liste des images disponibles avec la fonction List = Dir_Contents(Path_images) if len(List) == 0:   print "Erreur: aucun fichier image trouvé dans "+Path_images  sys.exit(1) # Amélioration du système de hasard Secs = int(time.strftime(‘%S’)) * int(time.strftime(‘%H’)) * int(time.strftime(‘%M’)) for i in range(0,Secs): random.random() # Boucle principale (qui ne se termine jamais) while 1:   # obtenir aléatoirement un fichier  Position = random.randint(0,len(List) - 1)  Fichier = (List[Position])  # Modification du fond  guix = "gconftool-2 -t string -s /desktop/gnome/background/picture_filename ‘" + str(Fichier) + "‘"     commands.getstatusoutput(guix)  # On attend un moment   time.sleep(Secondes) # Fin de la boucle (qui va recommencer) 

(Oui, ce n’est pas vraiment très beau, mais je début en python je vous rappelle. Ne vous inquiétez pas, le programme n’est pas dangereux ;).)

Comment l’utiliser ? C’est pas très compliqué, d’abord il vous faut récupérer le script sur votre ordinateur : Sélectionnez le programme plus haut EN ENTIER, et copiez le dans votre presse-papier. Ouvrez un éditeur de texte (par exemple gedit), copiez-y le texte, et sauvegardez le fichier avec un nom tel que changefond.py dans votre dossier personnel (par exemple aussi). Rendez-vous dans le dossier ou le fichier a été sauvé avec nautilus, cliquez avec la touche droite dessus, et sélectionnez Propriétés. De là, cliquez sur l’onglet Permissions, et cochez la case Autoriser l’exécution de fichier comme un programme. Votre programme est maintenant exécutable !

Maintenant il s’agit de faire un dossier ou vos fonds seront stockés : par défaut, il s’agit du dossier fondsdecran dans votre dossier personnel, mais ne paniquez pas: cela est très facilement modifiable ! Déplacez ou copiez donc toutes vos images dans un seul dossier.

Après, il s’agit de lancer le script au démarrage : les menus Système/Préférences/Sessions et l’onglet Programmes au démarrage vous permettront de le faire : Cliquez sur Ajouter, et entrez le texte suivant :
/chemin/vers/le/script/nomduscript.py –sec nombredesecondes –path /dossier/des/images
Si vous désirez un changement d’images toutes les 60 secondes, pas besoin d’entrer le –sec nombredesecondes, et si les images à mettre en fond d’écran dans /home/votrelogin/fondsdecran –path /dossier/des/images est inutile ! Validez, et à votre prochaine connexion[2], votre fond d’écran changera tout seul toutes les nombredesecondes secondes !

Remarque: vous pouvez aussi tester le programme en ligne de commande, en tapant exactement la même commande que vous avez entré pour le démarrage afin de vérifier que tout est fonctionnel !

Notes

[1] En fait, la structure visuelle, tels que les tabulations et les retours à la lignes permettent de définir les parties du programme.

[2] Vous pouvez aussi appuyer sur Alt-F2, et entrer la même commande afin d’éviter la déconnection


Comments

Pour ceux qui ne veulent pas de python, j’avais réalisé un script il y a bien longtemps qui permet de changer son fond décran mais en bash :

http://www.tux-planet.fr/blog/?2006...



Pti-seb, 2007-02-02 18:08:37

Pti-seb -> Ouais, mais c’est avec les CRONS, et les crons c’est compliqué ;)



The_Glu, 2007-02-02 19:01:34

Sinon, y’a ça aussi en python

http://wallpapoz.akbarhome.com/

et les paquets debian compilés avec amour par les soins :

http://www.goldenfish.info/wallpapo...



Goldy, 2007-02-02 19:57:07

Merci theglu d’utiliser tes connaissances en programmation afin d’en faire profiter toute la communauté ^_^



poof65, 2007-02-03 00:15:18

Coucou, ton script est tombé juste le jour où je pensais justement à en faire un ! :)

Comme tu débutes en python j’ai pensé que la réecriture de ton code en utilisant une syntaxe plus "pythonesque" t’aurais intéressé :
http://sunfox.org/blog/2007/02/03/c...



Sunny, 2007-02-03 00:26:04

Sunny -> Ha oui c’est plus beau ! Beaucoup plus beau !



The_Glu, 2007-02-03 10:08:44

Sinon, pour les utilisateurs de Kubuntu, il suffit de sélectionner "diaporama" comme fond d’écran ;-)



bobuse, 2007-02-05 11:12:11

Pour Gnome il y a aussi cette solution là : http://oisux.org/index.php?option=c...



blacktux, 2007-02-05 16:58:51

Oui mais CRONS !



The_Glu, 2007-02-05 17:03:55

;) Merci !!! c’est parfait !
petit hic, comment faire quand on a un NAS ?
ceci ne fonctionne pô : /home/moi/change_wallpaper.py –sec 60 –path smb://medias/NetHDD/Mes_Images/Fonds_Ecran

Une idée ? Merci !



ParMesSoins, 2007-04-05 18:29:33
Normal : le script prend un chemin local en argument, pas un URI. La solution consiste à monter ton partage Samba dans ton arborescence native, grâce au paquet (debian) smbfs, qui permet par exemple d’avoir ton partage dans /mnt/media. Et hop ;)

Merwok

Merwok, 2008-09-17 15:07:14