Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Can anyone help me out with how to make Bing Picture to my Desktop Wallpaper?

  • So it works by downloading the highest quality of todays picture.
  • Then storing it ex in the Picture folder of your account.
  • After that automatically changing the picture itself.
  • It should continue the same everyday without hassle in the background.
  • Probably something I have to add in the Startup Applications.
  • Any differences between Ubuntu versions?

-Do I have to write a script? This would be appreciated by many others too! Thank You in Advance :)

share|improve this question
even i would love to use this,but I believe its not possible.. –  Sushantp606 Nov 19 '13 at 14:44
thejandroman.github.io/bing-wallpaper does this solve? I personally didn't use this. –  hatter Nov 19 '13 at 14:47
I have tried the above link previously with its instructions, from github, @nitish. But it did not work, so i am trying to find other solutions. I got an error about connection failure to GitHubs server(s). The instructions where not easy to follow earther. OMGUbuntu have also an HowTo, but even that one also failed... –  Amir Shahab Nov 19 '13 at 15:12

3 Answers 3

up vote 1 down vote accepted

Probably the easiest thing to do would be to install variety. It is a wall-paper manager that really does an excellent job to change your wallpaper at the frequency you want.

Here are some of its settings:

  • the frequency of the download
  • the frequency of changing the image (once a day, at every reboot, every minute,...)
  • where you want to download your images from
  • where you want to store them on your computer
  • quotes (either automatically or from a source)
  • a nice clock.

There is also a setting to run it at login. If you enable that and then add your bing image of the day url (http://www.bing.com/images/search?q=picture+of+the+day&qpvt=picture+of+the+day&FORM=IGRE?), you are all set.

It can be found in the software center and it has a 5* rating!

Here are some screenshots:

enter image description here enter image description here enter image description here

share|improve this answer
Variety does not exist on 14.04. –  Agoston Horvath Sep 4 '14 at 11:03

Some time ago I found the following script (I don't remember exactly where in this moment, but when I will find, I will add the source also) which one I changed a little and which is working great for what you asked if is set as a cron job (see here how to do this):


# export DBUS_SESSION_BUS_ADDRESS environment variable useful when the script is set as a cron job
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

# $bing is needed to form the fully qualified URL for
# the Bing pic of the day

# $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.

# $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

# Create saveDir if it does not already exist
mkdir -p $saveDir

# Set picture options
# Valid options are: none,wallpaper,centered,scaled,stretched,zoom,spanned

# The desired Bing picture resolution to download
# Valid options: "_1024x768" "_1280x720" "_1366x768" "_1920x1200"

# The file extension for the Bing pic

# 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"

    # Set picName to the desired picName
    # Download the Bing pic of the day at desired resolution
    curl -s -o $saveDir$picName $desiredPicURL
    # Set picName to the default picName
    # Download the Bing pic of the day at default resolution
    curl -s -o $saveDir$picName $defaultPicURL

# Set the GNOME3 wallpaper
gsettings set org.gnome.desktop.background picture-uri "file://$saveDir$picName"

# Set the GNOME 3 wallpaper picture options
gsettings set org.gnome.desktop.background picture-options $picOpts

# Remove pictures older than 30 days
#find $saveDir -atime 30 -delete

# Exit the script
share|improve this answer
where to add that link of the picture of the day? –  speedox Aug 23 '14 at 11:46
@speedox I can't understand your question... –  Radu Rădeanu Aug 23 '14 at 11:53

I checked this for a while and seems to be working.

rm ./dodo.html
wget --no-proxy --output-document=dodo.html http://www.bing.com
rm ./dwallpaper.jpg
wget --no-proxy --output-document=dwallpaper `sed -n "s/^.*g_img *= *{ *url:'\([^']*\)'.*$/\1/p" < dodo.html | sed 's/^&quot;\(.*\)&quot;$/\1/' | sed 's/^\/\(.*\)/http:\/\/www.bing.com\/\1/'`
rm ./dodo.html
gsettings set org.gnome.desktop.background picture-uri 'file:///home/YourName/dwallpaper'

If you work under proxy, remove --no-proxy from line 4 and 6, and in place of YourName, put the name of your home folder.

Save this as some some script, make it executable and then execute it whenever you want the wallpaper to be updated.

I don't know how to execute this safely at startup. Adding this to rc.local is not safe as I understand from this.

Please comment if anything goes wrong.

share|improve this answer
If the script is working (not tested), you can execute it once a day (or whenever you want) using a cron job. Look for example at askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job –  Rmano Dec 7 '13 at 7:08
I think it would be unnecessary to execute it more than once a day. Further, in a day, it is to be executed only once when an internet connection is established. Can cron jobs do that? Can we know when a connection is made? –  hatter Dec 7 '13 at 13:49
all the works of checking internet connection, downloading the image, setting the desktop background and creating a log to indicate whether the job for the day is pending or complete should be handled by your script; while cron will handle calling the script as per your need.. –  precise Jan 6 '14 at 17:43
For better portability replace last line (gsettings set org.gnome.desktop.background picture-uri 'file:///home/YourName/dwallpaper') with gsettings set org.gnome.desktop.background picture-uri ` echo "'file:///home/$USER/dwallpaper'" ` –  totti Jan 8 '14 at 8:56

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.