Ich bin ein völliger Neuling in der Linux-Welt und möchte daher um Verzeihung für alle dummen oder zu einfachen Dinge bitten, die ich jetzt frage.
Ich habe Elementary OS erst gestern von deren Website installiert. Ich wollte mein Hintergrundbild automatisch mit dem Hintergrundbild von Bing ändern, also habe ich bei Google ein Skript gefunden, das das Bild von den Servern von Bing herunterlädt ... Das ist gut, es funktioniert (ich sehe die heruntergeladenen Bilder im Ordner).
Das Problem ist, dass das Hintergrundbild nicht immer geändert wird. Manchmal ja, manchmal nicht. Ich verstehe nicht wirklich, wann und warum. Es scheint, dass es passiert, wenn das heruntergeladene Bild nicht neu ist. Entschuldigen Sie mein schlechtes Englisch, was ich meine, ist, dass ich dieses Skript beim Booten mit dem mit Elementary OS mitgelieferten Tool starte und wenn ich meinen PC >1 Mal pro Tag einschalte (und Bings Bild einmal pro Tag wechselt), bekomme ich die anderen Male einfach alles schwarz als Hintergrundbild. Hier ist der Teil des Codes, der das Hintergrundbild ändert, vielleicht liegt dort das Problem:
#!/bin/bash
# $bing is needed to form the fully qualified URL for
# the Bing pic of the day
bing="www.bing.com"
# $xmlURL is needed to get the xml data from which
# the relative URL for the Bing pic of the day is extracted
#
# The mkt parameter determines which Bing market you would like to
# obtain your images from.
# Valid values are: en-US, zh-CN, ja-JP, en-AU, en-UK, de-DE, en-NZ, en-CA.
#
# The idx parameter determines where to start from. 0 is the current day,
# 1 the previous day, etc.
xmlURL="http://www.bing.com/HPImageArchive.aspx?format=xml&idx=1&n=1&mkt=en-US"
# $saveDir is used to set the location where Bing pics of the day
# are stored. $HOME holds the path of the current user's home directory
saveDir=$HOME'/Pictures/BingDesktopImages/'
# Create saveDir if it does not already exist
mkdir -p $saveDir
# Set picture options
# Valid options are: none,wallpaper,centered,scaled,stretched,zoom,spanned
picOpts="zoom"
# The desired Bing picture resolution to download
# Valid options: "_1024x768" "_1280x720" "_1366x768" "_1920x1200"
desiredPicRes="_1366x768"
# The file extension for the Bing pic
picExt=".jpg"
# Extract the relative URL of the Bing pic of the day from
# the XML data retrieved from xmlURL, form the fully qualified
# URL for the pic of the day, and store it in $picURL
# Form the URL for the desired pic resolution
desiredPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<urlBase>(.*)</urlBase>" | cut -d ">" -f 2 | cut -d "<" -f 1)$desiredPicRes$picExt
# Form the URL for the default pic resolution
defaultPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<url>(.*)</url>" | cut -d ">" -f 2 | cut -d "<" -f 1)
# $picName contains the filename of the Bing pic of the day
# Attempt to download the desired image resolution. If it doesn't
# exist then download the default image resolution
if wget --quiet --spider "$desiredPicURL"
then
# Set picName to the desired picName
picName=${desiredPicURL##*/}
# Download the Bing pic of the day at desired resolution
curl -s -o $saveDir$picName $desiredPicURL
else
# Set picName to the default picName
picName=${defaultPicURL##*/}
# Download the Bing pic of the day at default resolution
curl -s -o $saveDir$picName $defaultPicURL
fi
# Set the GNOME3 wallpaper
DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '"file://'$saveDir$picName'"'
# Set the GNOME 3 wallpaper picture options
DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-options $picOpts
# Remove pictures older than 30 days
find $saveDir -atime 30 -delete
# Exit the script
exit
Antwort1
Anstatt damit herumzuspielen, dconf
können Sie feh --bg-max
das Hintergrundbild ziemlich einfach mithilfe von einstellen.
$ feh --bg-max <image>
Ich verwende diese Art von Skript, um das Hintergrundbild beispielsweise alle 15 Minuten zu wechseln:
while true; do
find ~/.wallpaper -type f \( -name '*.jpg' -o -name '*.png' \) -print0 |
shuf -n1 -z | xargs -0 feh --bg-max
sleep 15m
done
Das Obige nutzt auch den wenig genutzten, aber praktischen shuf
Befehl zum zufälligen Anordnen einer Dateiliste.