Accueil ⇒ Informatique ⇒ Langage Perl ⇒ Fond d'écran aléatoire

Fond d'écran aléatoire

Introduction

Cet article a initalement été publié comme une petite documentation du script qui suit. Il concerne les systèmes Unix-like qui disposent de l'outil grep ainsi que d'un utilitaire en ligne de commande pour changer le fond d'écran. En réalité, le script a été conçu initialement pour les utilisateurs de bureaux moins gourmands que KDE ou Gnome, mais qui souhaitent quand même bénéficier de cette fonctionnalité.

Présentation

La plupart des gestionnaires de bureaux actuels, tels KDE ou Gnome (pour ne pas les citer), proposent une fonction bien sympathique pour rompre avec la monotonie : le choix d'un fond d'écran aléatoire parmi les fichiers images de dossiers donnés. Cependant, de tels gestionnaires sont volumineux et nécessitent une machine suffisamment performante et davantage de ressoucres, c'est pourquoi de nombreux utilisateurs leurs préfèrent Fluxbox ou encore WindowMaker.

Ce script leur est destiné : correctement paramétré, il leur permet de profiter de ce petit plus qui manque à la plupart de gestionnaires de fenêtrage. Simple et concis grâce au langage Perl, il sert également de tutorial à quiconque cherche à découvrir certains rouages dudit langage.

Utilisation

L'utilisation de l'application est simple et est résumée lors d'un appel sans argument :

$ rBackground
 
Author: Naopic Tastalian
Website: http://www.tastalian.org/
Programming time: less than 42 minutes.
Comment: I LIKE PERL !!!
 
--
This code is redistributed without any WARANTY,
use it at your own risks !
--
 
usage: rBackground [-f folder] [-p pattern] [-u script]

Tous les paramètres sont facultatifs, en leur absence les valeurs par défaut seront utilisées.

Dans la plupart des cas, vous n'aurez qu'à éditer le script pour régler vos paramètres. Si votre manager supporte les appels par défaut avec des paramètres, comme c'est le cas des thèmes Fluxbox ou WMaker , il est recommandé de passer par là et de ne pas éditer le script.

Implémentation

rBackground.pl

#!/usr/pkg/bin/perl -w
 
use strict;
 
# Constantes
my $DEFAULT_FOLDER  = ".";
my $DEFAULT_PATTERN = ".jpg";
my $DEFAULT_SCRIPT  = "wmsetbg -s";
 
# Variables
my $FOLDER  = $DEFAULT_FOLDER;
my $PATTERN = $DEFAULT_PATTERN;
my $SCRIPT  = $DEFAULT_SCRIPT;
my ($cur, @files);
 
# ============================================================
# Méthode.
 
sub usage
{
   print "usage: $0 [-f folder] [-p pattern] [-u script]\n\n".
         "Where '-f folder'  gives the current folder name\n".
         "where wallpapers are stored.                  \n\n".
         "Where '-p pattern'  is  a  pattern  of  filename\n".
         "describing part of  the name  the script  should\n".
         "look for in current folder.                   \n\n".
         "Where '-u script'  defines  the  script  to  use\n".
         "use instead of the default.                   \n\n";
}
 
# ============================================================
# Script principal.
 
# Générique
print "\nAuthor: Naopic Tastalian\n";
print "Website: http://www.tastalian.org/\n";
print "Programming time: less than 42 minutes.\n";
print "Comment: I LIKE PERL !!!\n";
 
# Avertissement
print "\n--\n";
print "This code is redistributed without any WARANTY,\n";
print "use it at your own risks !\n";
print "--\n\n";
 
# Lecture des arguments
for ($cur = 0; $cur < $#ARGV; $cur++) {
   if ($ARGV[$cur] eq "-f") {
      $FOLDER = $ARGV[++$cur];
   } elsif ($ARGV[$cur] eq "-p") {
      $PATTERN = $ARGV[++$cur];
   } elsif ($ARGV[$cur] eq "-u") {
      $SCRIPT = $ARGV[++$cur];
   }
}
 
# Aller au dossier visé
chdir($FOLDER);
 
# Acquérir la liste des fichiers
@files = `ls | grep $PATTERN`;
if ($#files < 0) {
   print "No file corresponding to pattern, exiting...\n";
   exit (-1);
}
 
# En choisir un, et définir le fond d'écran
$cur = rand($#files) % (($#files == 0) ? 1 : $#files);
system("$SCRIPT $files[$cur]");
 
exit 0;

Conclusion

Ce script a été programmé par Naopic Tastalian (aka. Stéphane Caron). Tout utilisateur est libre de le redistribuer ou de le modifier. Article rédigé le 02/04/2005.