Results 1 to 10 of 11

Thread: Bash Script to Set GNOME 3 Wallpaper to Bing Pic of the Day

Threaded View

  1. #1
    Join Date
    Oct 2012

    Bash Script to Set GNOME 3 Wallpaper to Bing Pic of the Day

    I don't know about anyone else, but I think it's a shame that Microsoft has made it so that only Windows 7 & 8 users can have their wallpaper automatically set to a high resolution version of the daily Bing wallpaper. So, I spent the better part of 24 hours putting together a bash script that determines the URL for the daily Bing wallpaper, downloads it to a folder of the user's choice, and then sets the GNOME 3 wallpaper to the daily Bing wallpaper.

    Just open your favorite text editor, copy and paste the code, and save it as '' somewhere in your home directory. Then be sure to run a
    chmod +x
    to make it executable and
    crontab -e
    to create a crontab to run the script once a day.

    *This script requires that curl be installed:
    sudo apt-get install curl
    I have only had the opportunity to test this script on Ubuntu 12.10 32-bit.

    I hope you enjoy using this script as much as I enjoyed making it.

    ** I am very new to bash scripting and I'm sure my code is less than elegant - to put it politely. If anyone has any suggestions on how to improve and tighten the code I would appreciate hearing from you.

    **NOTE** If the script code has changed since you were last here, it is because I have been working on improving and tightening the code. Just open your version of the file in your favorite text editor and replace everything with the code listed here.

    **Code last updated 11-Jul-2013 Minor improvements based upon suggestions from other forum members, including falling back to the default resolution if the desired resolution is not available for download.

    # $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
    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
    # Exit the script
    Last edited by SeanKD; July 12th, 2013 at 03:44 PM. Reason: Updated code


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts