(Xubuntu) Comment définir le fond d'écran en utilisant la ligne de commande?

11

J'ai fait beaucoup de recherches sur Google, mais je n'ai pas pu trouver de solution à mon problème.

Je suis enseignant et j'utilise Xubuntu sur certains ordinateurs d'élèves. J'ai tout bien verrouillé, mais je ne peux pas comprendre comment empêcher les utilisateurs de changer le fond d'écran sans avoir à éteindre toute la machine en mode Kiosk. Peu m'importe s'ils le changent pendant leur session de travail, mais je voudrais créer une crontab qui réinitialise le fichier .png d'origine au redémarrage.

J'espère une simple entrée cron mais je suis prêt à entrer dans le monde des scripts shell si c'est ce qu'il faut.

Des idées?

John
la source

Réponses:

10

En terre Xfce, c'est

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

(Remplacez le chemin de fichier que vous voulez, bien sûr.)

xfconf-query --channel xfce4-desktop --list

répertorie toutes les propriétés connexes, au cas où screen0 / monitor0 n'est pas celui-là.

Sel
la source
Lorsque je lance cela dans la ligne de commande, cela fonctionne comme un charme. Quand j'essaye de l'ajouter à cron, cela ne fait rien. Des idées? `
John
Que diriez-vous de placer le tout dans un script shell et d'exécuter le script shell à la cronplace?
Chester
A créé le script shell et l'a rendu exécutable. Il s'exécute lorsque vous double-cliquez dessus et je peux l'exécuter dans la ligne de commande. J'ai essayé de l'ajouter à cron avec @reboot comme heure, mais cela ne semble pas fonctionner. Dois-je ajouter quelque chose à cron autre que le chemin du script?
John
@John Cela ne fonctionne pas dans cron car cron fonctionne sous le privilège root et c'est un arrière-plan spécifique à l'utilisateur. essayez de changer la commande pour qu'elle s'exécute en tant qu'utilisateur
kamil
1
Pour moi, a --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagefait l'affaire.
Ilmari Karonen
9

Pour xfce4 dans Xubuntu 14.04, utilisez la propriété / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image au lieu de / backdrop / screen0 / monitor0 / image-path

Vous devez également définir la variable d'environnement DBUS_SESSION_BUS_ADDRESS comme ceci:

PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

Dans mon cas, je voulais faire pivoter le fond d'écran (image aléatoire d'un dossier sélectionné) une fois par jour, mais j'allume mon PC de manière irrégulière, je l'ai donc résolu en exécutant un script à partir de cron toutes les demi-heures, mais ne prend effet qu'une fois un jour.

entrée dans crontab (ajoutez-la via la crontab -ecommande):

0,30 * * * * /home/lucifer/scripts/rotate-wallpaper.sh

rotation-wallpaper.sh:

#!/bin/bash
wallpaperdir="/home/lucifer/Pictures/wallpapers"
datefile="/home/lucifer/.wallsw"
thisday=$( date +%j )
wallfiles=($wallpaperdir/*)
randompic=`printf "%s\n" "${wallfiles[RANDOM % ${#wallfiles[@]}]}"`
PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

if [ -f "$datefile" ]
then
    lastday=$( cat "$datefile" )
    if [ "$lastday" != "$thisday" ]
    then    
        date +%j > "$datefile"
        xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic 
    fi
else
    date +%j > "$datefile"
    xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic
fi

Remarque: -Si vous utilisez des paramètres régionaux du système non anglais, la propriété peut avoir un nom différent. La meilleure façon de connaître le nom de la propriété, ouvrez une fenêtre de terminal et exécutez cette commande:

xfconf-query -c xfce4-desktop -m

Cela activera la surveillance des propriétés du bureau xfce4. Modifiez maintenant votre arrière-plan manuellement. Vous devriez voir le nom de la propriété qui a été affecté par cette modification dans la fenêtre du terminal. Utilisez ce nom de propriété s'il est différent de / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image

Lucif
la source
2

Le réglage image-pathn'a aucun effet sur mon système (XFCE 4.12, Debian buster / sid).

J'utilise ce qui suit pour définir l'image d'arrière-plan de tous les espaces de travail:

xfconf-query --channel xfce4-desktop --list | grep last-image | while read path; do
    xfconf-query --channel xfce4-desktop --property $path --set <path>
done
scai
la source
0

Essayer

gsettings set org.gnome.desktop.background picture-uri file:///your/picture/location.jpg

Le file://est obligatoire.

Chester
la source
Je l'ai essayé sans aucune chance. Depuis que je lance XFCE, ai-je même des paramètres? La syntaxe de la commande est logique pour moi, mais je ne sais pas comment l'appliquer à Xubuntu.
John
0

N'utilisez pas cron. Utilisez plutôt le script de démarrage. Bien que vous puissiez utiliser cron mais je ne le préfère pas dans cette situation car il est spécifique à l'utilisateur.

Faites-le de cette façon:

sudo vi /etc/rc.local

ajoutez ce qui suit à la fin du fichier

sudo -u YOURUSERNAME -g $( id -g YOURUSERNAME ) xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

et assurez-vous de remplacer YOURUSERNAME par votre utilisateur actuel. Et remplacez /usr/share/backgrounds/xfce/xfce-blue.jpg par le chemin réel de la nouvelle image d'arrière-plan et assurez-vous que votre utilisateur est autorisé à lire l'image

kamil
la source
1
Pourquoi cela a-t-il été rejeté? L'OP a demandé un moyen qui affecte au redémarrage. Peut-être que l'OP devait l'appliquer à plusieurs utilisateurs, mais ne l'a pas explicitement indiqué. Cette réponse semble correcte (cependant, je ne l'ai pas testée). Alors, pourquoi le downvote?
Stéphane Gourichon
0

pour définir la couleur d'arrière-plan xfce dans le script bash:

d=0; r=$d; g=$d; b=$d; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color1 \
-s $r -s $g -s $b -s 65535

couleurs:

black: d=0;
white: d=65535;
red:   r=65535; g=0; b=0;

etc.

rgb sont des composants RVB décimaux 16 bits.

65535 = 255 * 257. 255 = 0xFF en hex.

pour convertir du code couleur hexadécimal 8 bits en composants RVB décimaux 16 bits:

x='C31717' # dark red
r=$((16#${x:0:2} * 257))
g=$((16#${x:2:2} * 257))
b=$((16#${x:4:2} * 257))

si la couleur d'arrière-plan ne change pas, définissez le style d'image sur aucun

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/image-style \
-s 0

.... et définissez le style de remplissage sur solide

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color-style \
-s 0

pour définir une couleur différente pour chaque espace de travail:

xfconf-query -c xfce4-desktop \
-p /backdrop/single-workspace-mode \
-s false

i=1; # workspace id
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/image-style \
-s 0
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color-style \
-s 0
x=0; r=$x; g=$x; b=$x; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color1 \
-s $r -s $g -s $b -s 65535

nuff said ^^

Mila Nautikus
la source