1#!/usr/bin/env perl
2use strict;
3
4if (`ps x | grep ' xscreensaver ' | grep -v grep`) {
5	print "XScreenSaver seems to be running. Exit it before running this script.\n";
6	exit;
7}
8
9my $screensavers = { };
10
11$screensavers->{'cyclone'} 	= '  GL:                "Cyclone"  cyclone --root                              \\n\\';
12$screensavers->{'euphoria'}	= '  GL:               "Euphoria"  euphoria --root                             \\n\\';
13$screensavers->{'fieldlines'} 	= '  GL:             "Fieldlines"  fieldlines --root                           \\n\\';
14$screensavers->{'flocks'} 	= '  GL:                 "Flocks"  flocks --root                               \\n\\';
15$screensavers->{'flux'} 	= '  GL:                   "Flux"  flux --root                                 \\n\\';
16$screensavers->{'helios'} 	= '  GL:                 "Helios"  helios --root                               \\n\\';
17$screensavers->{'hyperspace'} 	= '  GL:             "Hyperspace"  hyperspace --root                           \\n\\';
18$screensavers->{'lattice'} 	= '  GL:                "Lattice"  lattice --root                              \\n\\';
19$screensavers->{'plasma'} 	= '  GL:                 "Plasma"  plasma --root                               \\n\\';
20$screensavers->{'skyrocket'} 	= '  GL:              "Skyrocket"  skyrocket --root                            \\n\\';
21$screensavers->{'solarwinds'} 	= '  GL:             "Solarwinds"  solarwinds --root                           \\n\\';
22$screensavers->{'colorfire'} 	= '  GL:              "Colorfire"  colorfire --root                            \\n\\';
23$screensavers->{'hufo_smoke'} 	= '  GL:           "Hufo\'s Smoke"  hufo_smoke --root                           \\n\\';
24$screensavers->{'hufo_tunnel'} 	= '  GL:          "Hufo\'s Tunnel"  hufo_tunnel --root                          \\n\\';
25$screensavers->{'sundancer2'} 	= '  GL:             "Sundancer2"  sundancer2 --root                           \\n\\';
26$screensavers->{'biof'} 	= '  GL:                   "BioF"  biof --root                                 \\n\\';
27$screensavers->{'busyspheres'} 	= '  GL:            "BusySpheres"  busyspheres --root                          \\n\\';
28$screensavers->{'spirographx'} 	= '  GL:            "SpirographX"  spirographx --root                          \\n\\';
29$screensavers->{'matrixview'} 	= '  GL:             "MatrixView"  matrixview --root                           \\n\\';
30$screensavers->{'lorenz'}	= '  GL:                 "Lorenz"  lorenz --root                               \\n\\';
31$screensavers->{'drempels'}	= '  GL:               "Drempels"  drempels --root                             \\n\\';
32$screensavers->{'feedback'}	= '  GL:               "Feedback"  feedback --root                             \\n\\';
33$screensavers->{'pixelcity'}	= '  GL:             "Pixel City"  pixelcity --root                            \\n\\';
34
35open XSCREENSAVER, "$ENV{'HOME'}/.xscreensaver";
36my @xscreensaver_config_file = <XSCREENSAVER>;
37close XSCREENSAVER;
38
39open XSCREENSAVER, ">$ENV{'HOME'}/.xscreensaver";
40
41my $programs_section_flag = 0;
42foreach my $line (@xscreensaver_config_file) {
43	if ($line =~ /^programs:/) {
44		$programs_section_flag = 1;
45	} elsif ($programs_section_flag) {
46		if ($line =~ /\\\s+/) {
47			foreach my $screensaver (keys %{$screensavers}) {
48				if ($line =~ /\s$screensaver\s/) {
49					delete $screensavers->{$screensaver};
50				}
51			}
52		} else {
53			foreach my $screensaver (keys %{$screensavers}) {
54				print XSCREENSAVER "$screensavers->{$screensaver}\n";
55			}
56
57			$programs_section_flag = 0;
58		}
59	}
60	print XSCREENSAVER "$line";
61}
62
63close XSCREENSAVER;
64