(Xubuntu) Come impostare lo sfondo usando la riga di comando?


11

Ho fatto molti googling ma non sono stato in grado di trovare una soluzione al mio problema.

Sono un insegnante e sto usando Xubuntu su alcuni computer degli studenti. Ho bloccato tutto abbastanza bene, ma non riesco a capire come impedire agli utenti di cambiare lo sfondo senza dover estrarre l'intera macchina in modalità Kiosk. Non mi importa se lo cambiano durante la sessione di lavoro, ma vorrei creare un crontab che reimposti al .png originale al riavvio.

Spero in una semplice voce cron ma sono disposto a entrare nel mondo degli script di shell se è quello che serve.

Qualche idea?

Risposte:


10

Nella terra di Xfce, ecco

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

(Sostituisci il percorso del file che desideri, ovviamente.)

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

elenca tutte le proprietà correlate, nel caso in cui screen0 / monitor0 non sia quello.


Quando lo eseguo nella riga di comando, funziona come un incantesimo. Quando provo ad aggiungerlo a cron, però, non fa nulla. Qualche idea? `
Giovanni

Che ne dici di racchiudere il tutto in uno script di shell ed eseguire invece lo script di shell usando cron?
Chester,

Creato lo script della shell e reso eseguibile. Funziona quando si fa doppio clic e posso eseguirlo dalla riga di comando. Ho provato ad aggiungerlo a cron con @reboot come il tempo, ma non sembra funzionare. Devo aggiungere qualcosa a cron diverso dal semplice percorso dello script?
Giovanni

@John Non funziona in cron perché cron funziona con il privilegio di root e questo è uno sfondo specifico dell'utente. prova a modificare il comando per eseguirlo come utente
kamil

1
Per me, ha --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagefatto il trucco.
Ilmari Karonen,

9

Per xfce4 in Xubuntu 14.04, usa la proprietà / sfondo / schermo0 / monitorDisplayPort-1 / area di lavoro0 / ultima immagine anziché / sfondo / schermo0 / monitor0 / percorso-immagine

È inoltre necessario impostare la variabile di ambiente DBUS_SESSION_BUS_ADDRESS in questo modo:

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

Nel mio caso volevo ruotare lo sfondo (immagine casuale da una cartella selezionata) una volta al giorno, ma accendo il mio PC in modo irregolare, quindi l'ho risolto eseguendo uno script da cron ogni mezz'ora, ma ho effetto solo una volta un giorno.

voce in crontab (aggiungerlo tramite crontab -ecomando):

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

rotate-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

Nota: -Se si utilizza impostazioni internazionali di sistema non inglesi, la proprietà può avere un nome diverso. Il modo migliore per scoprire il nome della proprietà, aprire una finestra del terminale ed eseguire questo comando:

xfconf-query -c xfce4-desktop -m

Questo attiverà il monitoraggio delle proprietà di xfce4-desktop. Ora cambia lo sfondo manualmente. Dovresti vedere il nome della proprietà che è stato interessato da questa modifica nella finestra del terminale. Usa questo nome di proprietà se è diverso da / background / screen0 / monitorDisplayPort-1 / workspace0 / last-image


2

L'impostazione image-pathnon ha alcun effetto sul mio sistema (XFCE 4.12, Debian buster / sid).

Uso quanto segue per impostare l'immagine di sfondo di tutte le aree di lavoro:

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

0

Provare

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

Il file://è richiesto.


L'ho provato senza fortuna. Dal momento che eseguo XFCE, ho anche gsettings? La sintassi del comando ha senso per me, ma non so come applicarlo a Xubuntu.
Giovanni

0

Non usare cron. Usa invece lo script di avvio. Anche se puoi usare cron ma non lo preferisco in questa situazione perché è specifico dell'utente.

Fallo in questo modo:

sudo vi /etc/rc.local

aggiungere quanto segue alla fine del file

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

e assicurati di sostituire YOURUSERNAME con il tuo attuale utente. E sostituisci /usr/share/backgrounds/xfce/xfce-blue.jpg con il percorso reale della nuova immagine di sfondo e assicurati che il tuo utente abbia il permesso di leggere l'immagine


1
Perché questo è stato downvoted? L'OP ha richiesto un modo che abbia effetto al riavvio. Forse il PO doveva applicarlo a più utenti, ma non lo ha esplicitamente dichiarato. Questa risposta sembra ok (non l'ho ancora provata). Quindi, perché il downvote?
Stéphane Gourichon,

0

per impostare il colore di sfondo di xfce nello 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

colori:

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

eccetera.

rgb sono componenti RGB decimali a 16 bit.

65535 = 255 * 257. 255 = 0xFF in esadecimale.

per convertire da codice colore esadecimale 8 bit, a componenti RGB decimali 16 bit:

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

se il colore di sfondo non cambia, impostare lo stile dell'immagine su nessuno

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

.... e imposta lo stile di riempimento su solido

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

per impostare un colore diverso per ogni spazio di lavoro:

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 ha detto ^^

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.