#! /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+'"')