Comando per cambiare lo sfondo in XUbuntu


15

Fare una ricerca su Google rivela il comando

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

La prima volta che eseguo questo comando ho ricevuto un messaggio che diceva che la proprietà / sfondo / screen0 / monitor0 / percorso-immagine non esiste nel canale xfce4-desktop.

Quindi, ho creato questa proprietà:

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

Ma lo sfondo non è cambiato.

Ho quindi cambiato lo sfondo da space-03.jpg a space-04.jpg normalmente, dall'applicazione Impostazioni desktop di XUbuntu. Quindi 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

Come puoi vedere, la proprietà /backdrop/screen0/monitorLVDS1/workspace0/last-imageè cambiata (!).

Se cambio questa proprietà, allora funziona perfettamente, ma il fatto è che devo trovare un modo generale per implementarlo nel mio programma (Wallch).

Anche Variety(che è un programma molto carino, a proposito) non funziona correttamente sulla mia macchina e sceglie di cambiare la proprietà /backdrop/screen0/monitor0/image-pathche non fa nulla.

Un modo sarebbe quello di creare tutte le proprietà possibili e cambiarle tutte quando necessario, contemporaneamente. Non mi piace questa soluzione per 2 motivi:

  1. Diverse chiamate di sistema che saranno necessarie
  2. A un certo punto dovrò prendere il percorso dell'immagine corrente (per aprirne la cartella, copiarne il percorso, eliminarlo e alcune altre funzioni fornite dal programma). Non saprei quale proprietà trattiene il percorso dell'immagine realmente impostata per renderla disponibile al programma.

Inoltre non capisco perché XFCE lo abbia reso così complesso. Perché una proprietà non sarebbe sufficiente come in gsettings?



appena provato, xfconf-query -c xfce4-desktop -p / contesto / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg funziona per me .... non è mai cambiato la mia immagine di sfondo prima - assicurati di farlo senza i privilegi di root perché le impostazioni sono specifiche dell'utente.
Wolfgang,

1
@hakermania - forse qualcosa come questo script in # 9 qui - ti dà alcune idee su come procedere (o almeno identificare il monitor corretto)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom


@fossfreedom vedi la risposta che ho dato nella risposta qui sotto.
hytromo,

Risposte:


4

Penso che dovrebbe fare il lavoro

Utilizzare il seguente codice per ottenere i dispositivi collegati e contarli:

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)

quindi devi manipolarli e scegliere se impostare il valore per il percorso immagine o l'ultima immagine

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

Supponiamo che 1.jpeg sia qualsiasi file necessario per creare la stringa di default. E 2.png è l'immagine desiderata da impostare. Ho aggiunto la prima riga solo per assicurarmi che xfce4-desktop esista.

Questo script è stato testato sulla mia macchina e funziona bene.

Spero che aiuti il ​​mio amico

EDIT: un elenco di nomi di porte è stato trovato qui in questo modo:

Nomi delle porte di output

Driver Intel - UMS

VGA - Uscita VGA analogica

LVDS - Pannello per laptop

DP1 - Uscita DisplayPort

TV - Uscita TV integrata

TMDS-1 - Prima uscita DVI SDVO

TMDS-2 - Seconda uscita DVI SDVO

Le uscite TV SDVO e DVO non sono attualmente supportate dal driver.

Driver Intel - KMS

LVDS1 - Pannello per laptop

VGA1 - Uscita VGA analogica

DVI1 - Uscita video digitale

pilota radeon

VGA-0 - Uscita analogica VGA

LVDS - Pannello per laptop

S-video - Uscita TV integrata

DVI-0 - Uscita DVI

Per ulteriori informazioni consultare qui


Perché dovrebbe funzionare?
Seth,

@Seth Perché sto eseguendo il ciclo tra tutti i monitor disponibili e imposterò il valore appropriato per il monitor trovato. o last-image o image-path
kamil,

In un sistema XFCE appena installato i valori non esistono nemmeno. Vengono creati quando si cambia una volta manualmente lo sfondo del desktop. Quindi, questa non è una buona soluzione secondo me. Includo questa risposta nella mia domanda. Dico chiaramente che potrei provarli tutti (crearli e cambiarli ogni volta), ma questa è lungi dall'essere una buona soluzione al problema.
hytromo,

puoi creare proprietà come hai fatto tu
kamil

@hakermania controlla la modifica
kamil
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.