#!/usr/bin/env python from xml.dom import minidom import gconf import os import random client = gconf.client_get_default() def decodeWP(node): results = {} for value in node.childNodes: if value.nodeType==1: ndata = '' for val in value.childNodes: if val.nodeType==3: # TEXT_NODE ndata = ndata + val.data results[value.tagName] = ndata return results; settings = os.path.expanduser('~') + '/.gnome2/backgrounds.xml' xmldoc = minidom.parse(settings) wallpapers = []; for child in xmldoc.childNodes: if child.nodeType==1: if child.tagName=='wallpapers': for wp in child.childNodes: if wp.nodeType==1: if wp.tagName=='wallpaper': wallpapers.append(decodeWP(wp)) random.seed() index = random.randint(0, len(wallpapers)-1) changeSet = gconf.ChangeSet() wp = wallpapers[index] gs = '/desktop/gnome/background/' print 'Setting background to: ' + wp['name'] changeSet.set_string(gs + 'picture_filename', wp['filename']) changeSet.set_string(gs + 'picture_options', wp['options']) changeSet.set_string(gs + 'primary_color', wp['pcolor']) changeSet.set_string(gs + 'secondary_color', wp['scolor']) changeSet.set_string(gs + 'color_shading_type', wp['shade_type']) client.commit_change_set(changeSet, True)