Précédent   Forum du club des développeurs et IT Pro > Systèmes > Linux > Contribuez
Contribuez Vos contributions pour la rubrique Linux : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/08/2012, 15h39   #1
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 484
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 484
Points : 31 587
Points : 31 587
Par défaut Comment faire un diaporama de fond d'écran sous Gnome sans installer de logiciel ?

Bonjour,

Voici une petite astuce permettant de créer un diaporama en fond d'écran de son bureau Linux sans quelconque installation de logiciel. Pourquoi ?

Il existe certes les logiciels cortina, Desktop Drapes, Wallpaper-tray, Wally... mais en fonction des distributions, des versions de kernel il n'est pas toujours évident de les installer. Je vous présente donc une méthode simple que j'ai testée sur une Debian squeeze Gnome 64 bits.
Le principe consiste à créer un fichier XML qui contiendra les images de notre diaporama, les temps d'affichage et de transition entre chacune d'elle.

Pour créer ce fichier, j'ai développé un programme Perl auquel il faut passer en argument le(s) répertoires contenant les images qui seront dans le diaporama, la durée d'affichage de chaque image et le temps de transition en secondes.
Ce programme sera amélioré au fur et à mesure de vos remarques ou attentes.

Voici le programme :

Code perl :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/usr/bin/perl
#==========================================================================
# Auteur : djibril
# Date   : 19/08/2012 15:39:12 
# But    : Création du fichier XML pour le diaporama de fond d'écran Gnome
#==========================================================================
use warnings;
use strict;
 
use Cwd;
use English '-no_match_vars';
use File::Spec;
use File::Basename qw/basename dirname/;
use Getopt::Long;
my $USAGE = <<"USAGE";
  perl $PROGRAM_NAME -r '/path1/to/image' -r '/path2/to/image' -t XXX -d YYY 
    -r : permet de spécifier un repertoire d'images pour le diaporama. On peut faire appel plusieurs 
         fois pour mentionner plusieurs repertoire.
    -t : donnez la duree de transition entre chaque image en secondes (ex : XXX = 1 pour 1 seconde). Par defaut 2.
    -d : donnez la duree d'affichage de chaque image en secondes (ex : YYY = 60 pour 60 secondes). Par defaut 60.
USAGE
 
# Récupération des arguments
my ( @repertoires_images, $duree_transition, $duree_affichage ) = ();
GetOptions(
  'r=s' => \@repertoires_images,
  't=i' => \$duree_transition,
  'd=i' => \$duree_affichage,
);
my @extensions = qw/ jpeg jpg jpe bmp svg gif png /;
 
# Vérification des arguments
# Répertoires images
if ( scalar @repertoires_images == 0 ) {
	print "Merci de mentionner au moins un répertoire d'images\n\n$USAGE";
	exit;
}
 
foreach my $repertoire ( @repertoires_images ) {
	if ( ! -e $repertoire ) {
		print "$repertoire n'existe pas\n";
		exit;
	}
}
 
# Vérification temps d'affichage et de transition.
if ( not defined $duree_affichage) {
	$duree_affichage = 60;
}
 
if ( not defined $duree_transition ) {
	$duree_transition = 2;
}
$duree_affichage  = sprintf '%.1f', $duree_affichage;
$duree_transition = sprintf '%.1f', $duree_transition;
my $diaporama_xml = 'diaporama-gnome.xml';
 
# Liste des images à mettre dans le diaporama après un parcours récursif des répertoire d'images
my $regex_extension = join '|', @extensions;
my @fichiers_images;
foreach ( @repertoires_images ) {
	push @fichiers_images, grep { /$regex_extension$/i } lister_fichiers($_, 1);
}
 
# Création du fichier XML du diaporama
open my $fh, '>:encoding(UTF-8)', $diaporama_xml or die "Impossible de créer le fichier $diaporama_xml\n";
 
print {$fh} <<'ENTETE';
<?xml version="1.0" encoding="UTF-8"?>
<background>
  <starttime>
    <year>2012</year>
    <month>08</month>
    <day>19</day>
    <hour>00</hour>
    <minute>00</minute>
    <second>00</second>
  </starttime>
	<!-- Debut du diaporama -->
ENTETE
 
my $last = scalar @fichiers_images - 1;
for my $index ( 0..$last) {
	my $suivant = ( $index == $last ) ? 0 : $index +1;
 
	# Static et transition
	print {$fh} <<"DIAPO";
  <static>
    <duration>$duree_affichage</duration> <!-- temps pendant lequel cette image est affichee -->
    <file>$fichiers_images[$index]</file> <!-- chemin absolu vers l'image en cours-->
  </static>
  <transition>
    <duration>$duree_transition</duration> <!-- duree de l'effet de transition -->
    <from>$fichiers_images[$index]</from> <!-- chemin absolu vers l'image en cours -->
    <to>$fichiers_images[$suivant]</to> <!-- chemin absolu vers l'image suivante -->
  </transition>
DIAPO
}
 
print {$fh} '</background>';
close $fh; 
 
print "Fichier $diaporama_xml OK\n";
 
 
#======================================================
# Nombre d'arguments : 1 ou 2
# Argument(s)        : un répertoire et valeur 0 ou 1
# Retourne           : Tableau de fichier (@fichiers)
#======================================================
sub lister_fichiers {
  my ( $repertoire, $recursivite ) = @_;
 
  my $cwd = getcwd();
 
  # Recherche dans les sous répertoire ou non
  if ( ( not defined $recursivite ) || ( $recursivite != 1 ) ) { $recursivite = 0; }
 
  # Verification répertoire
  if ( not defined $repertoire ) { die "Aucun repertoire de specifie\n"; }
 
  # Ouverture d'un répertoire
  opendir my $fh_rep, $repertoire or die "impossible d'ouvrir le répertoire $repertoire\n";
 
  # Liste fichiers et répertoire sauf (. et ..)
  my @fic_rep = grep { !/^\.\.?$/ } readdir $fh_rep;
 
  # Fermeture du répertoire
  closedir $fh_rep or die "Impossible de fermer le répertoire $repertoire\n";
 
  chdir $repertoire;
  $repertoire= getcwd();
 
  # On récupère tous les fichiers
  my @fichiers;
  foreach my $nom (@fic_rep) {
    my $notre_ficrephier = File::Spec->catfile( $repertoire, $nom );
 
    if ( -f $notre_ficrephier ) {
      push( @fichiers, $notre_ficrephier );
    }
    elsif ( -d $notre_ficrephier and $recursivite == 1 ) {
      push( @fichiers, lister_fichiers($notre_ficrephier, $recursivite) );    # recursivité
    }
  }
 
  chdir $cwd;
 
  return @fichiers;
}

Renommez ce programme creation-xml-diaporama.pl par exemple. Puis
Code :
1
2
3
4
5
perl creation-xml-diaporama.pl  -r '/path1/to/image' -r '/path2/to/image' -t XXX -d YYY 
    -r : permet de spécifier un répertoire d'images pour le diaporama. On peut faire appel plusieurs 
         fois pour mentionner plusieurs répertoire.
    -t : donnez la durée de transition entre chaque image en secondes (ex : XXX = 1 pour 1 seconde). Par défaut 2.
    -d : donnez la durée d'affichage de chaque image en secondes (ex : YYY = 60 pour 60 secondes). Par défaut 60.
Le programme créera un fichier diaporama-gnome.xml.
Ensuite, faites un clic-droit sur votre fond d'écran -> changer l'arrière-plan du bureau. Ensuite cliquez sur le bouton "ajouter". Puis sélectionnez le fichier XML (pour pouvoir choisir le xml, mettez tous les fichiers).

Voilà, c'est tout !

N.B. Les extensions des images lues seront les suivantes : jpeg, jpg, jpe, bmp, svg, gif et png.

Qu'en pensez-vous ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 19/08/2012, 15h44   #2
Khaled.Noordin
Membre éprouvé
 
Avatar de Khaled.Noordin
 
Homme Khaled Noordin Abou Imran
Inscription : janvier 2005
Messages : 341
Détails du profil
Informations personnelles :
Nom : Homme Khaled Noordin Abou Imran
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2005
Messages : 341
Points : 468
Points : 468
Merci pour le partage :pouce-up:
__________________
Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément. Nicolas Boileau

Si c'est résolu, cliquez, cliquez, cliquez!!!!
Khaled.Noordin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2012, 16h03   #3
Rachel
Expert Confirmé
 
Avatar de Rachel
 
Femme yannick inizan
Padawan
Inscription : février 2011
Messages : 443
Détails du profil
Informations personnelles :
Nom : Femme yannick inizan
Âge : 26
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Padawan
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 443
Points : 3 629
Points : 3 629
Envoyer un message via MSN à Rachel Envoyer un message via Skype™ à Rachel
je me permets un complément
pour Ubuntu, il faut créer un xml sur le modèle de ceux présents dans
Code :
/usr/share/gnome-background-properties
en ajoutant le xml généré. voici un modèle :
Code :
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
  <wallpaper deleted="false">
<name>My Wallpapers</name>
    <filename>/home/rotrevrep/Documents/diaporama-gnome.xml</filename>
    <options>zoom</options>
	</wallpaper>
</wallpapers>
puis l'enregistrer dans ce dossier
__________________
(marquer un post résolu si vous êtes satisfait de la réponse )
mon dépôt (mono, monodevelop, ...) : deb(-src) http://breizhodrome.free.fr raring main
ma page github : https://github.com/inizan-yannick
Rachel est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/08/2012, 16h11   #4
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 484
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 484
Points : 31 587
Points : 31 587
Pourtant sous ma Debian squeeze, je n'ai pas besoin de ce complément, mais cela peut toujours aider certaines personnes.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2012, 16h39   #5
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 381
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 381
Points : 39 579
Points : 39 579
Pour les utilisateurs de XFCE : http://wiki.debian-facile.org/manuel...cran_dynamique

Même si ceux ci peuvent le configurer avec le panneau de configuration (Clique Droit sur le bureau) et que le truc est directement implémenté de base.

Expliqué ici : http://docs.xfce.org/xfce/xfdesktop/preferences
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h09.


 
 
 
 
Partenaires

Hébergement Web