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