Rhythmlet sensor interface
========================================================================
<sensor id="rhythmlet" module="Rhythmlet" />


VARIABLES:
------------------------------------------------------------------------
    * rhythmlet:artist
        - artist of current track

    * rhythmlet:album
        - album of current track

    * rhythmlet:playCount
        - play count of current track

    * rhythmlet:duration
        - duration of current track (00:00 format)

    * rhythmlet:elapsedTime
        - elapsed time of current track (00:00 format)

    * rhythmlet:genre
        - genre of current track

    * rhythmlet:filePath
        - file path of current track

    * rhythmlet:rating
        - rating of current track (X/5 format)

    * rhythmlet:filesize
        - filesize of current track

    * rhythmlet:title
        - title of current track

    * rhythmlet:trackNumber
        - track number of current track

    * rhythmlet:dispString
	- the configurable display string, possibly spanning multiple
	  lines

    * rhythmlet:coverSizeX
    * rhythmlet:coverSizeY
	- size of the cover
	- use as:
	  watch="height=rhythmlet:coverSizeY, width=rhythmlet:coverSizeX"

    * rhythmlet:backgroundColour
	- background color
	- use as: watch="bg-color=rhythmlet:backgroundColour"

    * rhythmlet:showCover
	- true or false; whether to display the cover or not

    * rhythmlet:rating1
    * rhythmlet:rating2
    * rhythmlet:rating3
    * rhythmlet:rating4
    * rhythmlet:rating5
	- either "gfx/rhythmbox-set-star.png" or 
	  "gfx/rhythmbox-unset-star.png" depending on the
	  rating

    * rhythmlet:progress
	- percentage complete of current song

    * rhythmlet:imgPlayPause
	- either "gfx/rhythmbox-play.png" or
	  "gfx/rhythmbox-pause.png" depending on the
	  current state of Rhythmbox

    * rhythmlet:imgRepeat
	- if repeat is true: "gfx/repeat-on.png"; if
          false: "gfx/repeat-off.png"

    * rhythmlet:imgShuffle
	- if shuffle is true: "gfx/shuffle-on.png"; if
          false: "gfx/shuffle-off.png"

    * rhythmlet:cover
	- path to cover image; use as: watch="uri=rhythmlet:cover"


ACTIONS:
------------------------------------------------------------------------
    * rhythmlet:back()
	- tells Rhythmbox to play the previous track
	- use as: on-click="rhythmbox:back()"

    * rhythmlet:next()
	- tells Rhythmbox to advance to the next track
	- use as: on-click="rhythmbox:next()"

    * rhythmlet:playPause()
	- if playing, tells Rhythmbox to pause;
	  if paused, tells Rhythmbox to play
	- use as: on-click="rhythmbox:playPause()"

    * rhythmlet:handleFile()
	- takes a list of files as an argument and tells Rhythmbox to
	  handle them
	- if an image is dropped over handleCover() it will be copied to
	  the file path. Handles file:// and {http,ftp}:// URIs
	- can be used to handle drag-n-drop as such:
	    <display ... on-file-drop="rhythmlet:handleFile()">

    * rhythmlet:setSeekScroll()
	- allows Rhythmlet to fast-forward/rewird the seek bar based on
	  mouse scroll
	- number of seconds can be set in the configurator
	- use as:
	    <display ... on-scroll="rhythmlet:setSeekScroll()">

    * rhythmlet:setSeek()
    * rhythmlet:setSeekPos()
	- together, these allow clicking on the seekbar to jump to that point
	- use as:
	    <gauge id="gagProgress" watch="fill=rhythmlet:progress"
	           on-motion="rhythmlet:setSeekPos()"
		   on-click="rhythmlet:setSeek()">

    * rhythmlet:rateTo1()
    * rhythmlet:rateTo2()
    * rhythmlet:rateTo3()
    * rhythmlet:rateTo4()
    * rhythmlet:rateTo5()
	- sets the rating of the current playing song to 1-5
	- use as: on-click="rhythmlet:rateToX()"

    * rhythmlet:toggleShuffle()
	- toggles the status of shuffle in Rhythmbox

    * rhythmlet:toggleRepeat()
	- toggles the status of repeat in Rhythmbox

    * rhythmlet:launchBrowser
        - N.B.: use "launchBrowser", not "launchBrowser()"
	- opens the default browser to either the album page on
	  Amazon.com (if found), or allmusic.com if not.


See rhythmlet.display for further examples.
