Comando para alterar o papel de parede no XUbuntu

15

Fazer uma pesquisa no google revela o comando

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

A primeira vez que executo esse comando, recebi uma mensagem informando que a propriedade / backdrop / screen0 / monitor0 / image-path não existe no canal xfce4-desktop.

Então, eu criei esta propriedade:

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

Mas ainda assim o fundo não mudou.

Alterei o plano de fundo de space-03.jpg para space-04.jpg normalmente, no aplicativo Desktop Settings do XUbuntu. Então eu 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 você pode ver, a propriedade /backdrop/screen0/monitorLVDS1/workspace0/last-imagemudou (!).

Se eu alterar essa propriedade, ela funcionará muito bem, mas a coisa é que preciso encontrar uma maneira geral para implementá-la no meu programa (Wallch).

Mesmo Variety(que é um programa muito bom, por sinal) não funciona corretamente na minha máquina e escolhe alterar a propriedade /backdrop/screen0/monitor0/image-pathque não faz nada.

Uma maneira seria criar todas as propriedades possíveis e alterá-las quando necessário, simultaneamente. Não gosto desta solução por dois motivos:

  1. Várias chamadas de sistema que serão necessárias
  2. Em um ponto, precisarei seguir o caminho da imagem atual (para abrir a pasta, copiar o caminho, excluí-lo e algumas outras funções que o programa fornece). Eu não saberia qual propriedade contém o caminho da imagem realmente definida para disponibilizá-la ao programa.

Também não entendo por que o XFCE fez isso tão complexo. Por que uma propriedade não seria suficiente como em gsettings?

hytromo
fonte
apenas tentei, xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg funciona para mim .... nunca mudou minha imagem de plano de fundo antes - tome cuidado sem privilégios de root, pois as configurações são específicas do usuário.
10114 Wolfgang
1
@ hakermania - talvez algo como este script no # 9 aqui - isso fornece algumas idéias sobre como proceder (ou pelo menos identificar o monitor correto)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom veja a resposta que dei na resposta abaixo.
Hytromo

Respostas:

4

Eu acho que deveria fazer o trabalho

Use o código a seguir para obter os dispositivos conectados e conte-os:

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)

você precisará manipular sobre eles e escolher se deseja definir o valor para o caminho da imagem ou a última imagem

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

Suponha que 1.jpeg seja qualquer arquivo necessário apenas para criar a string por padrão. E 2.png é a imagem desejada a ser definida. Eu adicionei a primeira linha apenas para garantir que o xfce4-desktop exista.

Este script foi testado na minha máquina e está funcionando bem.

Espero que ajude meu amigo

EDIT: Uma lista de nomes de portas foi encontrada aqui da seguinte forma:

Nomes da porta de saída

Driver Intel - UMS

VGA - Saída VGA analógica

LVDS - Painel para laptop

DP1 - Saída DisplayPort

TV - Saída de TV integrada

TMDS-1 - Primeira saída DVI SDVO

TMDS-2 - Segunda saída DVI SDVO

As saídas SDVO e DVO TV não são suportadas pelo driver no momento.

Driver Intel - KMS

LVDS1 - Painel para laptop

VGA1 - Saída VGA analógica

DVI1 - Saída de vídeo digital

motorista radeon

VGA-0 - Saída VGA analógica

LVDS - Painel para laptop

S-video - Saída de TV integrada

DVI-0 - Saída DVI

Para mais informações consulte aqui

kamil
fonte
Por que isso deveria funcionar?
Seth
@Seth Porque estou percorrendo todos os monitores disponíveis e definirei o valor apropriado para o monitor encontrado. last-image ou image-path
kamil 13/02/14
Em um sistema XFCE recém-instalado, os valores nem existem. Eles estão sendo criados quando você altera uma vez o plano de fundo da área de trabalho manualmente. Portanto, esta não é uma boa solução na minha opinião. Eu incluo esta resposta na minha pergunta. Eu digo claramente que eu poderia tentar todos eles (criar e alterá-los sempre), mas isso está longe de ser uma boa solução para o problema.
Hytromo
você pode criar propriedades como você fez
kamil
@hakermania verificar a editar
kamil