gsettings set org.gnome.desktop.background não está funcionando

3

Estou tentando fazer o download de uma foto diária e defini-la como minha imagem de fundo com:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"

rm -f ${PICS}/wall.jpg
rm -f ${PICS}/photo-of-the-day

# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day

# parse the url out from the file
url='cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2'

# download the photo
wget http:$url -O ${PICS}/wall.jpg

# set the desktop background
URI=file:///${PICS}/wall.jpg
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri ${URI}

A imagem é transferida da forma esperada, mas o fundo não está realmente definido. Estranhamente, funciona se eu modificar o URI para incluir mais ou menos barras, mas isso acontece apenas uma vez. Eu acabo tendo que modificar o script no que deveria ser uma maneira sem sentido toda vez para fazer esta seção funcionar.

O que poderia estar causando isso?

    
por pvlkmrv 12.03.2016 / 18:20

3 respostas

1

Acho que encontrei o problema: mesmo que eu vá até o arquivo, clique com o botão direito e diga "Definir como papel de parede ...", nada acontece. Então eu postulei que é o fato de o nome do arquivo não estar mudando a cada vez; O Linux tem algum tipo de economia de custo que eu não estou realmente atualizando, porque é o mesmo recurso de imagem. Para forçar o sistema a reconhecer que é uma nova imagem a cada vez, varie o nome do arquivo assim:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
RAND=$RANDOM

rm -f ${PICS}/*.jpg
rm -f ${PICS}/photo-of-the-day

# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day

# parse the url out from the file
url='cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2'

# download the photo
wget http:$url -O ${PICS}/wall${RAND}.jpg

# set the desktop background
URI="file://${PICS}/wall${RAND}.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
    
por pvlkmrv 18.03.2016 / 17:40
1

tente assim:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"

rm -f "${PICS}/wall.jpg"
rm -f "${PICS}/photo-of-the-day"

# download photo-of-the-day page
wget "http://photography.nationalgeographic.com/photography/photo-of-the-day" -O "${PICS}/photo-of-the-day"

# parse the url out from the file
url="'cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '\"' -f 2'"

# download the photo
wget "http:$url" -O "${PICS}/wall.jpg"

# set the desktop background
# only two slashes here, because the PICS var already has a leading slash
URI="file://${PICS}/wall.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
    
por cmks 12.03.2016 / 18:34
1

Você pode citar a variável URI completa, como os cmks mostraram, ou garantir que file:// e wall.jpg sejam citados, assim:

URI="file:///"${PICS}"/wall.jpg"

Aqui está uma pequena melhoria do seu script. Variáveis são usadas para encurtar a linha de comando. O arquivo é salvo em /tmp , que é excluído sempre que o sistema é reiniciado, para que você não precise limpar o cache manualmente. O AWK é usado para melhorar a análise e diminuir a tubulação. wget grava diretamente no AWK para evitar salvar arquivos extras

#!/bin/bash

# set variables to shorten lines
FILE="/tmp/photo_of_the_day"
PAGE="http://photography.nationalgeographic.com/photography/photo-of-the-day"
SEARCH="images.nationalgeographic.com.*cache.*990x742.jpg"

# get image URI directly
IMAGE=$(wget "$PAGE" -O - -o /dev/null  | awk -F'"' -v regex="$SEARCH" '$0~ regex {print $2}')

# download the photo
wget http:$IMAGE -O "$FILE"

# set the desktop background
URI="file:///$FILE"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
    
por Sergiy Kolodyazhnyy 12.03.2016 / 23:02