Fixed little bug...
[clearscm.git] / bin / setbg
index a6490fd..a09e5f0 100755 (executable)
--- a/bin/setbg
+++ b/bin/setbg
@@ -35,14 +35,15 @@ $Date: 2012/11/09 15:31:30 $
  
  Where:
 
- -u|sage:     Displays this usage
- -h|elp:      Display full help
- -ve|rbose:   Be verbose
- -d|ebug:     Output debug messages
+ -u|sage:      Displays this usage
+ -h|elp:       Display full help
+ -ve|rbose:    Be verbose
+ -d|ebug:      Output debug messages
 
- -s|leep:     Number of minutes to sleep between setting the background
-             (Default: 1 hour)
- -b|gdirs:    Directories to scan for images
+ -s|leep:      Number of minutes to sleep between setting the background
+               (Default: 1 hour)
+ -l|ockscreen: Change lockscreen backround (Default: False)
+ -b|gdirs:     Directories to scan for images
 
 =head1 DESCRIPTION
 
@@ -88,16 +89,17 @@ use Display;
 use Logger;
 use Utils;
 
-my $VERSION  = '$Revision: 1.11 $';
+my $VERSION  = '$Revision: 1.12 $';
   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
 
 my $processes = Proc::ProcessTable->new;
 my %opts = (
-  sleep   => 60,
-  usage   => sub { pod2usage },
-  help    => sub { pod2usage (-verbose => 2)},
-  verbose => sub { set_verbose },
-  debug   => sub { set_debug },
+  sleep      => 60,
+  lockscreen => 0,
+  usage      => sub { pod2usage },
+  help       => sub { pod2usage (-verbose => 2)},
+  verbose    => sub { set_verbose },
+  debug      => sub { set_debug },
 );
 
 my %totals;
@@ -143,17 +145,18 @@ sub fillPictures () {
   return @images;
 } # fillPictures
 
-sub updateSetBG ($) {
-  my ($image) = @_;
+sub updateSetBG ($$) {
+  my ($bgimage, $lockimage) = @_;
 
   open my $setbg, '>', "$ENV{HOME}/.$FindBin::Script"
     or error "Unable to open $ENV{HOME}/.$FindBin::Script for writing - $!", 1;
 
-  display $image, $setbg;
+  display $bgimage, $setbg;
 
   close $setbg;
 
-  my $msg = localtime() . ":$image";
+  my $msg  = localtime() . ":$bgimage";
+     $msg .= " lock:$lockimage" if $opts{lockscreen};
 
   open my $hist, '>>', "$ENV{HOME}/.$FindBin::Script.hist"
     or error "Unable to open $ENV{HOME}/.$FindBin::Script.hist for append - $!", 1;
@@ -186,6 +189,7 @@ GetOptions (
   'verbose',
   'debug',
   'sleep=i',
+  'lockscreen',
   'bgdirs=s@',
 ) || Usage;
 
@@ -207,8 +211,9 @@ for (my $i = 0; $i < scalar @{$opts{bgdirs}}; $i++) {
 } # for
 
 # Using gsettings
-my $setbg     = "gsettings";
-my $setbgOpts= "set org.gnome.desktop.background picture-uri \"file://";
+my $setbg       = "gsettings";
+my $setbgOpts   = "set org.gnome.desktop.background picture-uri \"file://";
+my $setLockOpts = "set org.gnome.desktop.screensaver picture-uri \"file://";
 
 my @images = fillPictures;
 
@@ -225,9 +230,10 @@ truncate "$ENV{HOME}/.$FindBin::Script.hist", 0;
 EnterDaemonMode unless defined $DB::OUT;
 
 while () {
-  my $image = escapeHTML ($images[int (rand $#images)]);
+  my $bgimage   = escapeHTML ($images[int (rand $#images)]);
+  my $lockimage = escapeHTML ($images[int (rand $#images)]);
 
-  my $cmd = "$setbg $setbgOpts$image\" 2> /dev/null";
+  my $cmd = "$setbg $setbgOpts$bgimage\" 2> /dev/null";
 
   my @output = `$cmd`;
 
@@ -237,10 +243,24 @@ while () {
     $totals{errors}++;
   } else {
     $totals{'Images displayed'}++;
+  } # if
+
+  if ($opts{lockscreen}) {
+    $cmd = "$setbg $setLockOpts$lockimage\" 2> /dev/null";
 
-    updateSetBG $image;
+    @output = `$cmd`;
+
+    if ($? != 0) {
+      error "Trying to set lock screen - command used \"$cmd\"\n\nOutput\n\n" .
+        join "\n", @output;
+      $totals{errors}++;
+    } else {
+      $totals{'Lock screens displayed'}++;
+    } # if
   } # if
 
+  updateSetBG $bgimage, $lockimage;
+
   displayStats;
 
   $today = YMD;