(Xubuntu) ¿Cómo configurar el fondo de pantalla usando la línea de comando?

11

He buscado mucho en Google pero no he podido encontrar una solución a mi problema.

Soy profesor y estoy usando Xubuntu en algunas computadoras de los estudiantes. Tengo todo bloqueado bastante bien, pero no puedo encontrar la manera de restringir a los usuarios para que no cambien el fondo de pantalla sin tener que sacar toda la máquina en modo Quiosco. No me importa si lo cambian durante su sesión de trabajo, pero me gustaría crear un crontab que se restablezca al .png original al reiniciar.

Espero una entrada cron simple, pero estoy dispuesto a facilitar el mundo de los scripts de shell si eso es lo que se necesita.

¿Algunas ideas?

John
fuente

Respuestas:

10

En tierra Xfce, eso es

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

(Sustituya la ruta del archivo que desee, por supuesto).

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

enumera todas las propiedades relacionadas, en caso de que screen0 / monitor0 no sea el indicado.

sal
fuente
Cuando ejecuto eso en la línea de comando, funciona de maravilla. Sin embargo, cuando intento agregarlo a cron, no hace nada. ¿Algunas ideas? `
John
¿Qué hay de encerrar todo en un script de shell y ejecutar el script de shell en su cronlugar?
Chester
Creó el script de shell y lo hizo ejecutable. Se ejecuta cuando se hace doble clic y puedo ejecutarlo en la línea de comando. Intenté agregarlo a cron con @reboot como el momento, pero no parece estar funcionando. ¿Necesito agregar algo a cron que no sea solo la ruta al script?
John
@ John No funciona en cron porque cron funciona con privilegios de root y este es un fondo específico del usuario. intente cambiar el comando para que se ejecute como su usuario
kamil
1
Para mí, --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagehizo el truco.
Ilmari Karonen
9

Para xfce4 en Xubuntu 14.04, use property / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image en lugar de / backdrop / screen0 / monitor0 / image-path

También debe establecer la variable de entorno DBUS_SESSION_BUS_ADDRESS de esta manera:

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

En mi caso, quería rotar el fondo de pantalla (imagen aleatoria de una carpeta seleccionada) una vez al día, pero enciendo mi PC de manera irregular, así que lo resolví ejecutando un script de cron cada media hora, pero solo surte efecto una vez un día.

entrada en crontab (agregarlo a través del 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: -Si está utilizando una configuración regional del sistema que no está en inglés, la propiedad puede tener un nombre diferente. La mejor manera de averiguar el nombre de la propiedad, abrir una ventana de terminal y ejecutar este comando:

xfconf-query -c xfce4-desktop -m

Esto activará la supervisión de las propiedades de xfce4-desktop. Ahora cambie su fondo manualmente. Debería ver el nombre de la propiedad que se vio afectado por este cambio en la ventana del terminal. Utilice este nombre de propiedad si es diferente de / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image

Lucif
fuente
2

La configuración image-pathno tiene ningún efecto en mi sistema (XFCE 4.12, Debian buster / sid).

Utilizo lo siguiente para configurar la imagen de fondo de todos los espacios de trabajo:

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

Tratar

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

El file://es requerido.

Chester
fuente
Lo intenté sin suerte. Ya que estoy ejecutando XFCE, ¿tengo incluso gsettings? La sintaxis del comando tiene sentido para mí, pero no sé cómo hacer que se aplique a Xubuntu.
John
0

No uses cron. En su lugar, use el script de inicio. Aunque puede usar cron, no lo prefiero en esta situación porque es específico del usuario.

Hacerlo de esta forma:

sudo vi /etc/rc.local

agregue lo siguiente al final del archivo

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

y asegúrese de reemplazar YOURUSERNAME con su usuario actual. Y reemplace /usr/share/backgrounds/xfce/xfce-blue.jpg por la ruta real de la nueva imagen de fondo y asegúrese de que su usuario tenga permiso para leer la imagen

kamil
fuente
1
¿Por qué se rechazó esto? El OP solicitó una forma que tenga efecto al reiniciar. Quizás el OP necesitaba aplicarlo a varios usuarios, pero no lo ha declarado explícitamente. Esta respuesta parece estar bien (sin embargo, no la he probado). Entonces, ¿por qué el voto negativo?
Stéphane Gourichon
0

para configurar el color de fondo xfce en el 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

colores:

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

etc.

rgb son componentes RGB decimales de 16 bits.

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

para convertir desde un código de color hexadecimal de 8 bits a componentes RGB decimales de 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 el color de fondo no cambia, configure el estilo de imagen en ninguno

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

.... y establezca el estilo de relleno en sólido

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

para establecer un color diferente para cada espacio de trabajo:

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 dijo ^^

Mila Nautikus
fuente