#! /usr/bin/env python
#
# packground.py (directory = ./) (display time = 305.0) (transition time = 5.0)
#
# Create rotating wallpaper for GNOME 3.

import os
import sys
import datetime
import random

currentdate=datetime.datetime.now()

filedir=""

try:
        filedir = sys.argv[1]
except IndexError:
        filedir = os.getcwd()
try:
        os.chdir(filedir)
except:
        os.chdir(os.getcwd())
try:
        delay = sys.argv[2]
        delay = float(delay)
except:
        delay = 305.0
try:
        transition = sys.argv[3]
        transition = float(transition)
except:
        transition = 5.0

# Create a list of all the files in the directory, then shuffle them.
types = ["jpg", "peg", "JPG", "PEG", "png", "PNG", "bmp", "BMP"]
filelist = []
for extension in types:
        filelist.extend([os.path.join(filedir,item) for item in os.listdir(filedir) if extension in item[-3:]])
random.shuffle(filelist)


#
header = "<background>\n<starttime>\n<year>%s</year><month>%s</month></day>%s</day><hour>00</hour><minute>00</minute><second>00</second>\n</starttime>\n" % (currentdate.year,currentdate.month,currentdate.day)
staticopen = '''<static>\n\t<duration>%.1f</duration>\n\t<file>''' % delay
staticclose = '''</file>\n</static>\n'''
transitionopen ='''<transition>\n\t<duration>%.1f</duration>\n<from>\t''' % transition
transitionmid='''</from>\n\t<to>'''
transitionclose='''</to>\n</transition>\n'''
footer = "</background>"


newback = open('background.xml', 'w')
newback.write(header)
first = staticopen + filelist[0] + staticclose + transitionopen + filelist[0] + transitionmid
newback.write(first)
for item in filelist[1:]:
        temp = item + transitionclose + staticopen + item + staticclose + transitionopen + item + transitionmid
        newback.write(temp)
last = filelist[0] + transitionclose + footer
newback.write(last)
newback.close()

call = 'gsettings set org.gnome.desktop.background picture-uri "'
setting = "file://"+filedir+"/background.xml"
os.system(call+setting+'"')