#!/usr/bin/perl -w # This little program sets my background image # randomly in blackbox (and now openbox). # It's called when I startx. $isxrunning = `ps -C startx | grep "startx"`; if ($isxrunning =~ "startx") { changebackdrop(); } else { exit; } sub changebackdrop { if (!defined $ARGV[0]) { $backdrop_directory = "/home/willyyam/misc/bmps/"; # Set this to your backdrop files directory. opendir(BD, "$backdrop_directory") or die; # Normally we'd report errors, but since we will be # running this via script and discarding the STDOUT # that it generates, that would be a waste of time. @backdrops = readdir(BD); # Grab the contents of the backdrop directory. @spordkcab = reverse(@backdrops); pop(@spordkcab); pop(@spordkcab); # The first two entries readdir() finds are # . and .. We don't want to hand these # entries to bsetbg, so I reverse the array # and do away with them. There is a smooth, # tidy way to do this. I don't care :-) $randpic = $spordkcab[ rand @spordkcab]; $randpic = $backdrop_directory . $randpic; `/usr/bin/Esetroot -display :0.0 $randpic`; #`/usr/bin/X11/xli -display :0.0 -onroot $randpic > /dev/null &`; exit; } else { # If backdrop is called with an argument, use the argument # as the backdrop. `/usr/bin/Esetroot -display :0.0 $ARGV[0]`; #`/usr/bin/X11/xli -display :0.0 -onroot $ARGV[0] > /dev/null &`; exit; } } # William O'Higgins yam@nerd.cx
code
Randomized Backdrops
#!/usr/bin/perl -w # This little program sets my background image # randomly in blackbox (and now openbox). # It's called when I startx. $backdrop_directory = "/home/willyyam/crap/backdrop/"; # Set this to your backdrop files directory. opendir(BD, "$backdrop_directory") or die; # Normally we'd report errors, but since we will be # running this via script and discarding the STDOUT # that it generates, that would be a waste of time. @backdrops = readdir(BD); # Grab the contents of the backdrop directory. @spordkcab = reverse(@backdrops); pop(@spordkcab); pop(@spordkcab); # The first two entries readdir() finds are # . and .. We don't want to hand these # entries to bsetbg, so I reverse the array # and do away with them. There is a smooth, # tidy way to do this. I don't care :-) $pic_o_the_moment = $spordkcab[ rand @spordkcab]; $pic_o_the_moment = $backdrop_directory . $pic_o_the_moment; `/home/willyyam/bin/bsetbg $pic_o_the_moment &`; # This the program call to bbsetbg, written by # tmk@lordzork.com, is what does all the work -- # I just call it. exit; # William O'Higgins yam@nerd.cx
picindex.pl
#!/usr/bin/perl -w # This little program takes a directory as its argument and # builds an html frame page with all of the image names in one # frame and a target frame for image viewing. It leaves the # three html pages in the argument directory. print "Enter the directory with the images -- n make sure it is an absolute path (include a trailing slash):n"; $target_dir = <STDIN>; chomp $target_dir; @jpgs = glob("$target_dir*.jpg"); @gifs = glob("$target_dir*.gif"); @both = (@jpgs,@gifs); @pics = sort(@both); foreach $pic_name (@pics) { $pic_name =~ s/^$target_dir//; } open(MAIN, ">$target_dir"."index.html") or die "Can\'t create index.html: $!n"; open(LEFT, ">$target_dir"."left.html") or die "Can\'t create left.html: $!n"; open(RIGHT, ">$target_dir"."rght.html") or die "Can\'t create rght.html: $!n"; $index_html = "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN""DTD/xhtml1-frameset.dtd">n<html xmlns="http://www.w3.org/1999/xhtml">n<head>n<title>Image Index</title>n</head>n<frameset cols="20%,80%" frameborder="1" border="1">n<frame src="left.html" name="left">n<frame src="rght.html" name="right">n</frameset>n</html>n"; $right_html = "<!DOCTYPE html public "-//W3C//dtD XHTML 1.0 Transitional//EN""DTD/xhtml1-transitional.dtd">n<html xmlns="http://www.w3.org/1999/xhtml">n<head>n<title>Right</title>n</head>n<body></body>n</html>n"; $left_top = "<!DOCTYPE html public "-//W3C//dtD XHTML 1.0 Transitional//EN""DTD/xhtml1-transitional.dtd">n<html xmlns="http://www.w3.org/1999/xhtml">n<head>n<title>Left</title>n</head>n<body>n<dl>nn"; foreach $pic_name (@pics) { $pic_name = "<dt><a href = "$pic_name" target = "right">" . $pic_name . "</a></dt>n"; } $list = "@pics"; $left_bottom = "nn</dl>n</head>n<body>n"; $left_html = $left_top . $list . $left_bottom; print MAIN $index_html; print RIGHT $right_html; print LEFT $left_html; close(MAIN) or die "Can\'t close index.html: $!n"; close(LEFT) or die "Can\'t close left.html: $!n"; close(RIGHT) or die "Can\'t close rght.html: $!n";