Post by Jaap A. HaitsmaI sometime get a bit frustrated that a cron job starts while I'm
working. Wouldn't it be nicer that this stuff would run when I'm not
doing any work. I.e. when the screensaver is active. Maybe as a minor
enhancement when the screensaver is active and there is not a process
asking for cpu power /disk access. Sometimes I'm running compiling jobs
which take quite a while.
Several things.
1. anacron(8)
2. batch(1)
3. nice(1) and renice(8)
4. xscreensaver-command(1)
With some combination of these, it is not too difficult to roll
a (sub-optimal) solution using nothing more than scripting.
xscreensaver-command(1):
-watch Prints a line each time the screensaver changes state: when the
screen blanks, locks, unblanks, or when the running hack is
changed. This option never returns; it is intended for use by
shell scripts that want to react to the screensaver in some
way. An example of its output would be:
BLANK Fri Nov 5 01:57:22 1999
RUN 34
RUN 79
RUN 16
LOCK Fri Nov 5 01:57:22 1999
RUN 76
RUN 12
UNBLANK Fri Nov 5 02:05:59 1999
The above shows the screensaver activating, running three dif-
ferent hacks, then locking (perhaps because the lock-timeout
went off) then unblanking (because the user became active, and
typed the correct password.) The hack numbers are their index
in the â list (starting with 1, not 0, as for the
-select command.)
For example, suppose you want to run a program that turns down
the volume on your machine when the screen blanks, and turns it
back up when the screen un-blanks. You could do that by run-
ning a Perl program like the following in the background. The
following program tracks the output of the -watch command and
reacts accordingly:
#!/usr/bin/perl
my $blanked = 0;
open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
if (!$blanked) {
system "sound-off";
$blanked = 1;
}
} elsif (m/^UNBLANK/) {
system "sound-on";
$blanked = 0;
}
}
Note that LOCK might come either with or without a preceeding
BLANK (depending on whether the lock-timeout is non-zero), so
the above program keeps track of both of them.
Regards,
Bill Rugolsky