#!/usr/bin/perl

use XML::Simple;

# update $HOME with your home directory
my $HOME   = "/home/mala";

my $BGFILE = "$HOME/.gnome2/backgrounds.xml";	# this is the file which contains BG config
my $PREFIX = "/desktop/gnome/background";	# this is the prefix of all the keys

my %mappings;
$mappings{'filename'} 	= 'picture_filename';	# mappings between cfg file and keys
$mappings{'options'} 	= 'picture_options';
$mappings{'shade_type'}	= 'color_shading_type';
$mappings{'pcolor'}	= 'primary_color';
$mappings{'scolor'}	= 'secondary_color';

# parse config file and extract wallpaper list
my $config = XMLin($BGFILE);
my $wp = $$config{'wallpaper'};

# extract a random background from the cfg file
my @bg = keys %$wp;
my $randombg;
do{
	$randombg = $$wp{@bg[int(rand(@bg))]};
}while ($$randombg{'filename'} eq '(none)' || $$randombg{'deleted'} eq 'true');
# (NOTE: this ignores deleted backgrounds and the ones without a wallpaper)

# apply changes
for (keys(%mappings)){
	my $cmd = "gconftool -t str -s $PREFIX/$mappings{$_} \"$$randombg{$_}\"";
	system($cmd);
}