[Gnome] Pb changement de fond d'ecran via script depuis 3.8

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Avatar de l’utilisateur
zoidberg
Hankyu
Messages : 19
Inscription : jeu. 18 août 2011, 12:53
Localisation : Aix en Provence

[Gnome] Pb changement de fond d'ecran via script depuis 3.8

Message par zoidberg »

Hello,
J'ai un petit souci (enfin c'est pas le seul mais bon...) depuis le passage à Gnome Shell 3.8 et j'aimerai savoir si vous avez le même comportement avant d’éventuellement soumettre un bug.
En fait sous 3.6 je m’étais fait un script pour le changement automatique de fond d’écran, je disais a GS quelle image utiliser pour le fond:

Code : Tout sélectionner

gsettings set org.gnome.desktop.background picture-uri "file://$imgdest"
ensuite mon script copiait aléatoirement une image d'un répertoire vers ce fichier $imgdest... GS détectait que le fichier avait changé, le relisait puis il modifiait le fond en conséquence.
Depuis la 3.8 ça ne marche plus, quand je fais la copie le fond semble changer (il y a un effet de fondu donc il voit bien que le fichier a été modifié) puis il revient sur la même image.
Du coup j'ai été obligé de bidouiller en alternant la copie puis la commande précédente vers deux fichiers distincts, mais je trouve pas ça terrible, de ce que j'ai lu un peu partout sur le web ça devrait normalement toujours fonctionner de la même manière avec détection auto de modification du fichier.
J'ai bien sur testé avec un autre compte fraichement initialisé et ca fait pareil.
Étonnamment, après avoir copié le fichier si je vais dans paramètres/arrière plan, l'image qu'il affiche dans la fenêtre est bien la bonne:
Image

En passant le script pour ceux que ça pourrait intéresser (ne prenez pas peur je débute en perl ;) ):

Code : Tout sélectionner

#!/usr/bin/perl -w
use strict;
use warnings;
use File::Copy;

#verification qu'une seule instance du script est executee
my $instances=`ps -fu \`whoami\` | grep -v grep | grep -w perl | grep -c \`basename $0\``;
if( $instances != 1 ) { die "Une instance tourne deja\n"; }

my $waitinit=60;                                            #delai en seconde entre le lancement du script et le premier changement
my $waitswitch=1800;                                        #delai en seconde entre deux changements
my $imgdest="/home/zoidberg/Images/Gnome-Background.jpg";   #le fichier ou sera copié l'image (en local si possible)
my $imgdir="/mnt/NAS/Photos/WallPapers/1920x1200";          #le repertoire contenant les images de fond

#verification des droits d'acces au repertoire
unless ( -d $imgdir && -x $imgdir && -r $imgdir ) { die "mauvais droits d'acces au repertoire $imgdir\n"; }

#recuperation de la liste des fichiers
my @files=<$imgdir/*jpg>;

#on verifie qu'on a bien des fichiers
my $nbfiles=scalar(@files);
if( $nbfiles < 2 ) { die "pas (beaucoup) de fichier dans le repertoire $imgdir, c'est louche!\n"; }

sleep ($waitinit);

my $img;
while( 1 ) {
        #on recupere une entree au pif
        $img=$files[rand(scalar @files)];
        copy ("$img","$imgdest.1") or die("erreur de copie de $img vers $imgdest.1\n");
        sleep (1); #sans ca l'image clignote pendant le changement
        `gsettings set org.gnome.desktop.background picture-uri "file://$imgdest.1"`; 
        sleep ($waitswitch);
        #on recupere une entree au pif bis
        $img=$files[rand(scalar @files)];
        copy ("$img","$imgdest.2") or die("erreur de copie de $img vers $imgdest.2\n");
        sleep (1); #sans ca l'image clignote pendant le changement
        `gsettings set org.gnome.desktop.background picture-uri "file://$imgdest.2"`;
        sleep ($waitswitch); }
la boucle while était auparavant plus simple:

Code : Tout sélectionner

`gsettings set org.gnome.desktop.background picture-uri "file://$imgdest"`;
while( 1 ) {
        #on recupere une entree au pif
        $img=$files[rand(scalar @files)];
        copy ("$img","$imgdest") or die("erreur de copie de $img vers $imgdest\n");
        sleep ($waitswitch); }
Avez vous le même comportement? est-ce normal selon vous?
Merci pour votre aide.
Répondre