gsettings set org.gnome.desktop.background funktioniert nicht

gsettings set org.gnome.desktop.background funktioniert nicht

Ich versuche, ein Tagesbild herunterzuladen und es mit folgendem als Hintergrundbild festzulegen:

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

Das Bild wird wie erwartet heruntergeladen, aber der Hintergrund ist nicht wirklich festgelegt. Seltsamerweise funktioniert es, wenn ich URI ändere, um mehr oder weniger Schrägstriche einzuschließen, aber das passiert nur einmal. Ich muss das Skript jedes Mal auf eine Weise ändern, die eigentlich sinnlos wäre, damit dieser Abschnitt funktioniert.

Was könnte die Ursache dafür sein?

Antwort1

Versuchen Sie es folgendermaßen:

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

Antwort2

Sie können entweder die vollständige URIVariable in Anführungszeichen setzen, wie cmks gezeigt hat, oder sicherstellen, dass file://und wall.jpgin Anführungszeichen gesetzt werden, wie folgt:

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

Hier ist eine kleine Verbesserung Ihres Skripts. Variablen werden verwendet, um die Befehlszeile zu verkürzen. Die Datei wird in gespeichert /tmp, das bei jedem Neustart des Systems gelöscht wird, sodass Sie den Cache nicht manuell leeren müssen. AWK wird verwendet, um das Parsen zu verbessern und die Pipe-Aufgabe zu verringern. wgetschreibt direkt in AWK, um das Speichern zusätzlicher Dateien zu vermeiden

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

Antwort3

Ich glaube, ich habe das Problem gefunden: Selbst wenn ich zur Datei gehe, mit der rechten Maustaste klicke und „Als Hintergrundbild festlegen ...“ sage, passiert nichts. Ich habe also angenommen, dass es daran liegt, dass sich der Dateiname nicht jedes Mal ändert; Linux hat eine Art kostensparende Funktion, die ich eigentlich nicht aktualisieren muss, weil es dasselbe Bild ist. Um das System zu zwingen, jedes Mal zu erkennen, dass es sich um ein neues Bild handelt, variieren Sie den Dateinamen wie folgt:

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

verwandte Informationen