X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=bin%2Fsetbg;h=17bdc0815c5025da4b381903c81baf9afe41dea1;hb=f3e0cdceb40c69dc13b1edf6d9d2af3bd38798c1;hp=86a647acaf177e9129f7c490ca4c430d8e8025fa;hpb=042a9df59dc4f33c79ea8e253f13e76efeba4e73;p=clearscm.git diff --git a/bin/setbg b/bin/setbg index 86a647a..17bdc08 100755 --- a/bin/setbg +++ b/bin/setbg @@ -32,17 +32,18 @@ $Date: 2012/11/09 15:31:30 $ Usage: setbg [-u|sage] [-h|elp] [-ve|rbose] [-d|ebug] [-s|leep ] [-bgdirs -bgdirs ...] - + 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; @@ -128,11 +130,14 @@ sub fillPictures () { $totals{bgdirs} = 0; for (@{$opts{bgdirs}}) { - my @pics = `find "$_" -type f -name "*.jpg"`; + my ($status, @pics) = Execute "find \"$_/\" -type f"; chomp @pics; - push @images, @pics; + push @images, grep(/jpg$|png$|gif$/i, @pics); + + @pics = grep(/jpg$|png$|gif$/i, @pics); + push @{$opts{bgdircnt}}, scalar @pics; $totals{bgdirs}++; @@ -140,27 +145,38 @@ sub fillPictures () { $totals{images} = scalar @images; + displayStats; + return @images; } # fillPictures -sub updateSetBG ($$) { +sub writeHistory($) { + my ($msg) = @_; + + open my $hist, '>>', "$ENV{HOME}/.$FindBin::Script.hist" + or error "Unable to open $ENV{HOME}/.$FindBin::Script.hist for append - $!", 1; + + $msg = localtime() . $msg; + + display $msg, $hist; + + close $hist; +} # writeHistory + +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 $bgimage, $setbg; + display $bgimage, $setbg; close $setbg; - my $msg = localtime() . ":$bgimage lock:$lockimage"; - - open my $hist, '>>', "$ENV{HOME}/.$FindBin::Script.hist" - or error "Unable to open $ENV{HOME}/.$FindBin::Script.hist for append - $!", 1; - - display $msg, $hist; + my $msg = ":$bgimage"; + $msg .= " lock:$lockimage" if $opts{lockscreen}; - close $hist; + writeHistory $msg; return; } # updateSetBG @@ -186,6 +202,7 @@ GetOptions ( 'verbose', 'debug', 'sleep=i', + 'lockscreen', 'bgdirs=s@', ) || Usage; @@ -225,35 +242,54 @@ truncate "$ENV{HOME}/.$FindBin::Script.hist", 0; EnterDaemonMode unless defined $DB::OUT; +my $pickNewImages = 1; +my ($bgimage, $lockimage); + while () { - my $bgimage = escapeHTML ($images[int (rand $#images)]); - my $lockimage = escapeHTML ($images[int (rand $#images)]); + if ($pickNewImages) { + $bgimage = escapeHTML ($images[int (rand $#images)]); + $lockimage = escapeHTML ($images[int (rand $#images)]); + } # if + + my $monitorIsOn; - my $cmd = "$setbg $setbgOpts$bgimage\" 2> /dev/null"; + my ($status, @output) = Execute("xset q | grep Monitor | awk '{print \$3}'"); - my @output = `$cmd`; + if ($status or $output[0] eq 'Off') { + writeHistory ":Monitor off, not setting background to $bgimage - will keep trying"; - if ($? != 0) { - error "Trying to set background - command used \"$cmd\"\n\nOutput\n\n" . - join "\n", @output; - $totals{errors}++; + $pickNewImages = 0; } else { - $totals{'Images displayed'}++; - } # if + $pickNewImages = 1; - $cmd = "$setbg $setLockOpts$lockimage\" 2> /dev/null"; + my $cmd = "$setbg $setbgOpts$bgimage\" 2> /dev/null"; - @output = `$cmd`; + ($status, @output) = Execute $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 ($status) { + error "Trying to set background - command used \"$cmd\"\n\nOutput\n\n" . + join "\n", @output; + $totals{errors}++; + } else { + $totals{'Images displayed'}++; + } # if + + if ($opts{lockscreen}) { + $cmd = "$setbg $setLockOpts$lockimage\" 2> /dev/null"; - updateSetBG $bgimage, $lockimage; + ($status, @output) = Execute $cmd; + + if ($status != 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; + } # if displayStats;