web-dev-qa-db-fra.com

gsettings set org.gnome.desktop.background ne fonctionne pas

J'essaie de télécharger une image quotidienne et de la définir comme image d'arrière-plan avec:

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

L'image se télécharge comme prévu, mais l'arrière-plan n'est pas défini. Bizarrement, cela fonctionne si je modifie l'URI pour inclure plus ou moins de barres obliques, mais cela ne se produit qu'une fois. Je finis par devoir modifier le script de manière à ce que chaque section soit dénuée de sens pour que cette section fonctionne.

Qu'est-ce qui peut causer cela?

3
Pavel Komarov

Je pense avoir trouvé le problème: même si je vais dans le fichier, faites un clic droit et dites "Définir comme fond d'écran ...", rien ne se passe. J'ai donc postulé que c'est le fait que le nom du fichier ne change pas à chaque fois; Linux offre une sorte de fonction de réduction des coûts qui ne me permet pas vraiment d'actualiser parce que c'est la même image. Pour forcer le système à reconnaître qu'il s'agit d'une nouvelle image à chaque fois, modifiez le nom du fichier de la manière suivante:

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

Vous pouvez soit citer la variable URI complète comme le montre cmks, soit vous assurer que file:// et wall.jpg sont cités, comme suit:

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

Voici une petite amélioration de votre script. Les variables sont utilisées pour raccourcir la ligne de commande. Le fichier est enregistré dans /tmp, qui est supprimé à chaque redémarrage du système. Vous n'avez donc pas à effacer manuellement le cache. AWK est utilisé pour améliorer l'analyse et réduire la tuyauterie. wget écrit directement sur AWK pour éviter de sauvegarder des fichiers supplémentaires

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

essayez-le de cette façon:

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