Comando para cambiar el fondo de pantalla en XUbuntu

15

Hacer una búsqueda en Google revela el comando

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>

La primera vez que ejecuto este comando recibí un mensaje que decía que la propiedad / backdrop / screen0 / monitor0 / image-path no existe en el canal xfce4-desktop.

Entonces, creé esta propiedad:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>

Pero aún así el fondo no cambió.

Luego cambié el fondo de space-03.jpg a space-04.jpg normalmente, desde la aplicación Configuración de escritorio de XUbuntu. Entonces corro:

$ xfconf-query -c xfce4-desktop -p /backdrop -lv
/backdrop/screen0/image-path                           /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-show                  true
/backdrop/screen0/monitor1/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor1/image-show                  true
/backdrop/screen0/monitorLVDS1/workspace0/color-style  0
/backdrop/screen0/monitorLVDS1/workspace0/image-style  5
/backdrop/screen0/monitorLVDS1/workspace0/last-image   /usr/share/backgrounds/space-04.jpg

Como puede ver, la propiedad /backdrop/screen0/monitorLVDS1/workspace0/last-imageha cambiado (!).

Si cambio esta propiedad, funciona bien, pero es que necesito encontrar una forma general para implementarla en mi programa (Wallch).

Incluso Variety(que es un programa muy bueno, por cierto) no funciona correctamente en mi máquina y elige cambiar la propiedad /backdrop/screen0/monitor0/image-pathque no hace nada.

Una forma sería crear todas las propiedades posibles y cambiarlas todas cuando sea necesario, simultáneamente. No me gusta esta solución por 2 razones:

  1. Se necesitarán varias llamadas al sistema
  2. En un momento tendré que tomar la ruta de la imagen actual (para abrir su carpeta, copiarla, eliminarla y algunas otras funciones que proporciona el programa). No sabría qué propiedad mantiene el camino de la imagen realmente establecida para que esté disponible para el programa.

Tampoco entiendo por qué XFCE lo ha hecho tan complejo. ¿Por qué una propiedad no sería suficiente como en gsettings?

hytromo
fuente
solo lo probé, xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg funciona para mí ... nunca había cambiado mi imagen de fondo antes: tenga cuidado de hacerlo sin privilegios de root porque la configuración es específica del usuario.
Wolfgang
1
@hakermania, tal vez algo así como este script en el n. ° 9, ¿le da algunas ideas sobre cómo proceder (o al menos identificar el monitor correcto)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom ve la respuesta que di en la respuesta a continuación.
hytromo

Respuestas:

4

Creo que eso debería hacer el trabajo

Use el siguiente código para obtener los dispositivos conectados y contarlos:

connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") 
connected=$(echo $connectedOutputs | wc -w)

entonces tiene que manipular sobre ellos y elegir si establecer el valor para ruta de imagen o última imagen

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s  ~/Pictures/1.jpeg
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s  ~/Pictures/1.jpeg

for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
    xfconf-query -c xfce4-desktop -p $i -n -t string -s ~/Pictures/2.png  
    xfconf-query -c xfce4-desktop -p $i -s ~/Pictures/2.png

done

Suponga que 1.jpeg es cualquier archivo que solo se necesita para crear la cadena de forma predeterminada. Y 2.png es la imagen deseada que se establecerá. Agregué la primera línea solo para asegurarme de que xfce4-desktop existe.

Este script fue probado en mi máquina y está funcionando bien.

Espero que ayude a mi amigo

EDITAR: Aquí se encontró una lista de nombres de puertos de esta manera:

Nombres de puerto de salida

Controlador Intel - UMS

VGA - Salida analógica VGA

LVDS - Panel portátil

DP1 - Salida DisplayPort

TV: salida de TV integrada

TMDS-1 - Primera salida DVI SDVO

TMDS-2 - Segunda salida DVI SDVO

Las salidas de TV SDVO y DVO no son compatibles con el controlador en este momento.

Controlador Intel - KMS

LVDS1 - Panel portátil

VGA1 - Salida analógica VGA

DVI1 - Salida de video digital

conductor de radeon

VGA-0 - Salida analógica VGA

LVDS - Panel portátil

S-video - Salida de TV integrada

DVI-0 - Salida DVI

Para más información consultar aquí

kamil
fuente
¿Por qué debería hacer eso el trabajo?
Seth
@Seth Porque estoy recorriendo todos los monitores disponibles y estableceré el valor apropiado para el monitor encontrado. ya sea last-image o image-path
kamil
En un sistema XFCE recién instalado, los valores ni siquiera existen. Se crean cuando cambia una vez el fondo de su escritorio manualmente. Entonces, esta no es una buena solución en mi opinión. Incluyo esta respuesta en mi pregunta. Digo claramente que podría probarlos todos (crearlos y cambiarlos cada vez), pero esto está lejos de ser una buena solución al problema.
hytromo
puedes crear propiedades como lo hiciste
kamil
@hakermania revisa la edición
kamil