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?
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à.
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
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
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.
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 ^^
Essayer
gsettings set org.gnome.desktop.background picture-uri file:///your/picture/location.jpg
Le file://
est requis.