gsettings set org.gnome.desktop.background não funciona

gsettings set org.gnome.desktop.background não funciona

Estou tentando baixar uma imagem diária e defini-la como 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 é baixada conforme esperado, mas o plano de fundo não está realmente definido. Estranhamente, funciona se eu modificar o URI para incluir mais ou menos barras, mas isso ocorre apenas uma vez. Acabo tendo que modificar o script de uma maneira que deveria ser sem sentido todas as vezes para fazer esta seção funcionar.

O que poderia estar causando isso?

Responder1

tente desta forma:

#!/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}"

Responder2

Você pode citar a URIvariável completa como cmks mostrou ou garantir que file://e wall.jpgsejam citados, assim:

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

Aqui está uma pequena melhoria no 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. AWK é usado para melhorar a análise e diminuir a tubulação. wgetgrava 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}"

Responder3

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 postulei que é o fato de o nome do arquivo não mudar todas as vezes; O Linux tem algum tipo de recurso de economia de custos que não vou atualizar porque é a mesma 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}"

informação relacionada