[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Run prelink and other stuff not in cron but when screensaver is active.



On Wed, Oct 29, 2003 at 08:26:55PM +0100, Jaap A. Haitsma wrote:
> I 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




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]