#!/usr/bin/env perl use strict; if (`ps x | grep ' xscreensaver ' | grep -v grep`) { print "XScreenSaver seems to be running. Exit it before running this script.\n"; exit; } my $screensavers = { }; $screensavers->{'cyclone'} = ' GL: "Cyclone" cyclone --root \\n\\'; $screensavers->{'euphoria'} = ' GL: "Euphoria" euphoria --root \\n\\'; $screensavers->{'fieldlines'} = ' GL: "Fieldlines" fieldlines --root \\n\\'; $screensavers->{'flocks'} = ' GL: "Flocks" flocks --root \\n\\'; $screensavers->{'flux'} = ' GL: "Flux" flux --root \\n\\'; $screensavers->{'helios'} = ' GL: "Helios" helios --root \\n\\'; $screensavers->{'hyperspace'} = ' GL: "Hyperspace" hyperspace --root \\n\\'; $screensavers->{'lattice'} = ' GL: "Lattice" lattice --root \\n\\'; $screensavers->{'plasma'} = ' GL: "Plasma" plasma --root \\n\\'; $screensavers->{'skyrocket'} = ' GL: "Skyrocket" skyrocket --root \\n\\'; $screensavers->{'solarwinds'} = ' GL: "Solarwinds" solarwinds --root \\n\\'; $screensavers->{'colorfire'} = ' GL: "Colorfire" colorfire --root \\n\\'; $screensavers->{'hufo_smoke'} = ' GL: "Hufo\'s Smoke" hufo_smoke --root \\n\\'; $screensavers->{'hufo_tunnel'} = ' GL: "Hufo\'s Tunnel" hufo_tunnel --root \\n\\'; $screensavers->{'sundancer2'} = ' GL: "Sundancer2" sundancer2 --root \\n\\'; $screensavers->{'biof'} = ' GL: "BioF" biof --root \\n\\'; $screensavers->{'busyspheres'} = ' GL: "BusySpheres" busyspheres --root \\n\\'; $screensavers->{'spirographx'} = ' GL: "SpirographX" spirographx --root \\n\\'; $screensavers->{'matrixview'} = ' GL: "MatrixView" matrixview --root \\n\\'; open XSCREENSAVER, "$ENV{'HOME'}/.xscreensaver"; my @xscreensaver_config_file = ; close XSCREENSAVER; open XSCREENSAVER, ">$ENV{'HOME'}/.xscreensaver"; my $programs_section_flag = 0; foreach my $line (@xscreensaver_config_file) { if ($line =~ /^programs:/) { $programs_section_flag = 1; } elsif ($programs_section_flag) { if ($line =~ /\\\s+/) { foreach my $screensaver (keys %{$screensavers}) { if ($line =~ /\s$screensaver\s/) { delete $screensavers->{$screensaver}; } } } else { foreach my $screensaver (keys %{$screensavers}) { print XSCREENSAVER "$screensavers->{$screensaver}\n"; } $programs_section_flag = 0; } } print XSCREENSAVER "$line"; } close XSCREENSAVER;