Forum Linux.général Gnome 2.6 : rotation de fond d'écran

Posté par  .
Étiquettes : aucune
0
26
août
2004
Bonjour,

Voilà ce que j'aimerais faire depuis pas mal de temps : que le fond d'écran de mon bureau gnome 2.6 change automatiquement à intervalle régulier (ex : toutes les 1/2 heures).

A ma connaissance Gnome 2.6 ne propose pas ça en natif. J'ai regardé dans gconf et j'ai trouvé le paramètre qui enregistre le nom du fichier pour le fond d'écran.

Cependant je ne sais pas dans quel fichier ce paramètre est stocké...

Après, ce qu'il faudrait, c'est un script qui serait par exemple lancé par cron, qui regarderait dans un répertoire et choisirait un fichier au hasard... Mais un script en quoi, en Perl ? (je n'ai encore jamais programmé sous Linux)

Ca pourrait être la bonne occasion pour me lancer. Si quelqu'un a déjà fait quelque chose du genre, je suis preneur !
  • # ou encore mieux...

    Posté par  . Évalué à 1.

    ce thread m'avait pas mal interessé :
    https://linuxfr.org/tips/114.html(...)

    sauf que je n'ai pas réussi à empêcher Gnome 2.6 de "gérer le fonds d'écran exclusivement"...
  • # En Gtk2 Perl

    Posté par  . Évalué à 2.

    Un script perl qui change la valeur grace au module Gnome2::GConf a intervale régulié ;)
    Va donc voir : http://gtk2-perl.sourceforge.net/doc/pod/Gnome2/GConf.html(...)
    • [^] # Re: En Gtk2 Perl

      Posté par  . Évalué à 3.

      Voici un debut de programme, mais apparament il faut fait autre chose que juste changer la valeur dans gconf ! Je vous laiss tester :
      #!/usr/bin/perl -w
      
      use	strict;
      use	Gtk2 -init;
      use	Gnome2::GConf;
      
      my	@background = ("/home/g-remy/Wallpaper/Universal/Blue.png",
      		       "/home/g-remy/Wallpaper/Universal/Coal.png",
      		       "/home/g-remy/Wallpaper/Universal/Green.png",
      		       "/home/g-remy/Wallpaper/Universal/Orange.png",
      		       "/home/g-remy/Wallpaper/Universal/Pink.png",
      		       "/home/g-remy/Wallpaper/Universal/Silver.png");
      
      my	$client = Gnome2::GConf::Client->get_default;
      my	$key = "/desktop/gnome/background/picture_filename";
      my	$idx = -1;
      
      sub	change_background
      {
          $idx = -1 if ($idx == scalar(@background) - 1);
          $idx++;
          $client->set($key, { type => 'string', value => $background[$idx] });    
      }
      
      my  $timer= Glib::Timeout->add(500 ,\&change_background);
      
      Gtk2->main;
      
      • [^] # Re: En Gtk2 Perl

        Posté par  . Évalué à 2.

        Bon voici une version qui fonctionne. Il faut lui donner en parametre un intervalle de temps et la repertoire de tes backgrounds. Il va aller les chercher au hasard et te changer ton fond d'écran ;) Exemple :
        ./change_background.pl 10000 /home/g-remy/Wallpaper
        
        Et le code :
        #!/usr/bin/perl -w
        
        use	strict;
        use	Gtk2 -init;
        use	Gnome2::GConf;
        
        die("Usage: ./change_background.pl time wallpapers_path\n") if (scalar(@ARGV) != 2); 
        
        my	$directory = $ARGV[1];
        opendir(DIR, $directory) || die "can’t opendir $directory: $!";
        my	@background = grep { !/^\./ && (/\.png$/ || /\.jpg$/ || /\.bmp$/) } readdir(DIR);
        closedir DIR;
        my	$client = Gnome2::GConf::Client->get_default;
        my	$key = "/desktop/gnome/background/picture_filename";
        my	$idx;
        srand();
        
        sub	change_background
        {
            $idx = int(rand(scalar(@background)));
            $client->set($key, { type => 'string',
        			 value => $directory."/".$background[$idx] }); 
            print "Changing background to: $background[$idx]\n";
        }
        
        my  $timer= Glib::Timeout->add($ARGV[0] ,\&change_background);
        
        Gtk2->main; 
        
  • # python rulez ...

    Posté par  . Évalué à 1.

    tu fais un ch'ti script python qui :
    - choisit un fichier au hasard
    - modifie la clé gconf correspondant au bg grace à python-gnome (très bons exemples dans la doc python-gnome/gconf/*.py)
    - c'est fini ;-)
  • # chbg

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    y'a un programme qui s'appelle chbg qui fait ça je crois...

    M.
    • [^] # Re: chbg

      Posté par  . Évalué à 3.

      Tout à fait, là :
      http://www.mavit.pwp.blueyonder.co.uk/#chbg-gnome2(...)

      Je l'utilisais en 2.2 mais je sais pas s'il marche encore en 2.6
      • [^] # Re: chbg

        Posté par  . Évalué à 1.

        Je n'arrive pas à m'en servir sous Gnome 2.6. Ce n'est pas étonnant le projet semble être à l'abandon.

        Merci pour les suggestions, je vais tenter en Python histoire de découvrir ce langage, ça me servira peut-être si un jour je dois m'occuper d'un serveur sous Zope !
  • # merci, plus qu'à me lancer...

    Posté par  . Évalué à 1.

    chbg j'avais vu, mais je n'arrive pas à le faire marcher sous Gnome 2.6. Par ailleurs le projet semble être à l'abandon.

    Merci pour vos suggestions, je vais tenter en Python plutôt, ça ne me fera pas de mal si jamais un jour je dois m'occuper d'un site sous Zope !
    • [^] # Re: merci, plus qu'à me lancer...

      Posté par  . Évalué à 0.

      Je sais pas si ça peut aider mais j'ai trouver sur le net une commande qui te permet de changer le fond d"ecran sous gnome 2.6 :

      gconftool-2 -t string -s /desktop/gnome/background/picture_filename "foo.jpg"

      reste plus qu'a lui faire choisir un fichier au hasard dans une liste et de le mettre en crontab !
      J'espere que ça peut t'etre utile.

      --
      TiTiX
      • [^] # Re: merci, plus qu'à me lancer...

        Posté par  . Évalué à 1.

        Super !

        Je viens de finir le script Python qui choisit le fichier au hasard, ta commande va bien me servir !

        Sauf que... comment je l'execute à partir du script Python ?

        Je me retrouve ici :

        #!/usr/bin/python
        #
        # blabla... bref j'arrive avec l'adresse du fichier dans la variable Fichier
        print Fichier


        Et maintenant comment je lance gconftool-2 -t string -s /desktop/gnome/background/picture_filename "foo.jpg" ?
        • [^] # Re: merci, plus qu'à me lancer...

          Posté par  . Évalué à -1.

          Hola !

          Je crois avoir trouvé exactement ce qu'il te faut :
          grotbckgd stands for gnome rotate background. This is a small script that I have written that rotates the Gnome 2 wallpaper using gconftool. It can be run by hand or from a cron job. No needs for a special daemon. It can take wallpapers in directories, or from a file containing the list of wallpapers to use.
          ici pour le site :
          http://users.skynet.be/bk221183/(...)
          ici pour le lien direct vers le script :
          http://users.skynet.be/bk221183/grotbckgd.bz2(...)

          Sinon pour Python il faudrait creuser autour de os.system(tacommande)
          (je ne fournis pas la pelle =p)
          Bonne Soiree !

          --
          TiTiX
          • [^] # Re: merci, plus qu'à me lancer...

            Posté par  . Évalué à 1.

            avec getoutput j'y arrive on dirait...

            merci pour l'aide

            *impatient de voir le résultat*
            • [^] # Re: merci, plus qu'à me lancer...

              Posté par  . Évalué à 1.

              C'est moche mais ça marche...


              #!/usr/bin/python

              # import des modules python necessaires
              import os, re, time, random, commands

              ########################################
              # configuration
              #
              # repertoire ou prendre les images
              Home = "/home/guix/Desktop/photos"
              # extensions a chercher
              File_Match = re.compile('[{jpg}{gif}]$')

              ########################################
              #
              # etape 1 : prendre une image au hasard
              #
              # ---------- fonction de recherche : explore le repertoire et les sous repertoires et dresse une liste
              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 fonction

              List = Dir_Contents(Home)
              # randomisation du nombre de fois ou random est appelle
              Secs = int(time.strftime('%S')) * int(time.strftime('%H')) * int(time.strftime('%M'))
              for i in range(0,Secs): random.random()

              # obtenir aleatoirement un fichier
              Position = random.randint(0,len(List) - 1)
              Fichier = (List[Position])

              ##############################################
              # etape 2 : modifier le fonds d'ecran de Gnome
              #
              guix = "gconftool-2 -t string -s /desktop/gnome/background/picture_filename '" + str(Fichier) + "'"
              commands.getstatusoutput(guix)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.