web-dev-qa-db-fra.com

(Xubuntu) Comment définir le fond d'écran à l'aide de la ligne de commande?

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

Je suis un enseignant et j'utilise Xubuntu sur certains ordinateurs d'étudiants. J'ai tout bien verrouillé, mais je ne vois pas comment empêcher les utilisateurs de changer de fond d'écran sans avoir à éteindre toute la machine en mode Kiosque. Peu m'importe qu'ils changent cela au cours de leur session de travail, mais j'aimerais créer une crontab qui réinitialise le fichier .png d'origine au redémarrage.

J'espère une entrée cron simple, mais je suis prêt à entrer dans le monde des scripts Shell si c'est ce que cela prend.

Des idées?

11
John

En terre Xfce, c'est

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

(Substituez le chemin du fichier que vous voulez, bien sûr.)

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

répertorie toutes les propriétés associées, au cas où screen0/monitor0 ne soit pas celui-là.

10
Salt

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 suit:

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 papier peint (image aléatoire d'un dossier sélectionné) une fois par jour, mais j'allume mon PC irrégulièrement. Je l'ai donc résolu en exécutant un script de cron toutes les demi-heures, mais je ne prenais effet qu'une fois. un jour.

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

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

tourner- 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 non anglais, la propriété peut avoir un nom différent. Le meilleur moyen de connaître le nom de la propriété, d’ouvrir une fenêtre de terminal et d’exécuter cette commande:

xfconf-query -c xfce4-desktop -m

Cela activera la surveillance des propriétés de xfce4-desktop. Maintenant changez votre fond manuellement. Vous devriez voir le nom de la proprié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

9
Lucif

La définition de image-path n’a aucun effet sur mon système (XFCE 4.12, Debian buster/sid).

J'utilise les éléments suivants 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
1
scai

N'utilisez pas de 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

ajouter 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 a l'autorisation de lire l'image.

0
kamil

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.

r g b sont des composants RVB décimaux 16 bits.

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

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éfinir le style de remplissage sur solide

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

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 a dit ^^

0
Mila Nautikus

Essayer

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

Le file:// est requis.

0
Chester