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
    Beans
    4

    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 'some-file.sh' somewhere in your home directory. Then be sure to run a
    Code:
    chmod +x some-file.sh
    to make it executable and
    Code:
    crontab -e
    to create a crontab to run the script once a day.

    *This script requires that curl be installed:
    Code:
    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.

    Code:
    #!/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=0&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="_1920x1200"
    
    # 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
    
    # Exit the script
    exit
    [/SIZE]
    Last edited by SeanKD; July 12th, 2013 at 03:44 PM. Reason: Updated code

Bookmarks

Posting Permissions

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