X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=bin%2Fsetbg;h=a1f71d190b4bf200c919a9176073674aa20f8db5;hb=290e8df6876439cd18325d55b6dc8e2e5e1fc8f2;hp=e36a1a7ca2d7c32b23b9ba4579e3eb4903bb623a;hpb=e0126eea04c6d0de501af304c30d0276d78799bb;p=clearscm.git diff --git a/bin/setbg b/bin/setbg index e36a1a7..a1f71d1 100755 --- a/bin/setbg +++ b/bin/setbg @@ -32,7 +32,7 @@ $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 @@ -63,16 +63,17 @@ contents of the bgdirs incase it has changed and display a new image". This is useful for script to be able to alert setbg that something has changed. For example, a script named rmbg might look at ~/.setbg to get the name of the current background image file and remove it then signal setbg with SIGUSR1 to -have it re-evaluate the state of bgdirs. +have it re-evaluate the state of bgdirs. Finally setbg will perform the this re-evaluation at midnight everyday. This is -useful because we point setbg to look at -bgdirs from Dropbox where Camera +useful because we point setbg to look at -bgdirs from Dropbox where Camera Uploads is included and new pictures can arrive everyday. =cut use strict; use warnings; +use experimental qw(signatures); use FindBin; use Getopt::Long; @@ -130,12 +131,14 @@ sub fillPictures () { $totals{bgdirs} = 0; for (@{$opts{bgdirs}}) { - my ($status, @pics) = Execute "find \"$_\" -type f"; + my ($status, @pics) = Execute "find \"$_/\" -type f"; chomp @pics; push @images, grep(/jpg$|png$|gif$/i, @pics); + @pics = grep(/jpg$|png$|gif$/i, @pics); + push @{$opts{bgdircnt}}, scalar @pics; $totals{bgdirs}++; @@ -143,30 +146,34 @@ sub fillPictures () { $totals{images} = scalar @images; + displayStats; + return @images; } # fillPictures -sub writeHistory($) { - my ($msg) = @_; +sub writeHistory($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; + print $hist $msg; close $hist; } # writeHistory -sub updateSetBG($$) { - my ($bgimage, $lockimage) = @_; +sub writeSetBG ($filename, $image) { + open my $file, '>', $filename + or error "Unable to open $filename for writing - $!", 1; - open my $setbg, '>', "$ENV{HOME}/.$FindBin::Script" - or error "Unable to open $ENV{HOME}/.$FindBin::Script for writing - $!", 1; + print $file "$image\n"; - display $bgimage, $setbg; + close $file; +} # writeSetBG - close $setbg; +sub updateSetBG($bgimage, $lockimage) { + writeSetBG "$ENV{HOME}/.$FindBin::Script", $bgimage; + writeSetBG "$ENV{HOME}/.$FindBin::Script.lock", $lockimage; my $msg = ":$bgimage"; $msg .= " lock:$lockimage" if $opts{lockscreen}; @@ -199,6 +206,7 @@ GetOptions ( 'sleep=i', 'lockscreen', 'bgdirs=s@', + 'mate', ) || Usage; local $0 = "$FindBin::Script " . join ' ', @argvCopy; @@ -220,8 +228,16 @@ for (my $i = 0; $i < scalar @{$opts{bgdirs}}; $i++) { # Using gsettings my $setbg = "gsettings"; -my $setbgOpts = "set org.gnome.desktop.background picture-uri \"file://"; -my $setLockOpts = "set org.gnome.desktop.screensaver picture-uri \"file://"; + +my ($setbgOpts, $setLockOpts); + +if ($opts{mate}) { + $setbgOpts = 'set org.mate.background picture-filename '; + $setLockOpts = 'set org.mate.screensaver picture-filename '; +} else { + $setbgOpts = "set org.gnome.desktop.background picture-uri \"file://"; + $setLockOpts = "set org.gnome.desktop.screensaver picture-uri \"file://"; +} # if my @images = fillPictures; @@ -238,10 +254,9 @@ truncate "$ENV{HOME}/.$FindBin::Script.hist", 0; EnterDaemonMode unless defined $DB::OUT; my $pickNewImages = 1; +my ($bgimage, $lockimage); while () { - my ($bgimage, $lockimage); - if ($pickNewImages) { $bgimage = escapeHTML ($images[int (rand $#images)]); $lockimage = escapeHTML ($images[int (rand $#images)]); @@ -258,7 +273,8 @@ while () { } else { $pickNewImages = 1; - my $cmd = "$setbg $setbgOpts$bgimage\" 2> /dev/null"; + my $cmd = $opts{mate} ? "$setbg $setbgOpts\"$bgimage\" 2> /dev/null" + : "$setbg $setbgOpts$bgimage\" 2> /dev/null"; ($status, @output) = Execute $cmd; @@ -271,7 +287,8 @@ while () { } # if if ($opts{lockscreen}) { - $cmd = "$setbg $setLockOpts$lockimage\" 2> /dev/null"; + $cmd = $opts{mate} ? "$setbg $setLockOpts\"$lockimage\" 2> /dev/null" + : "$setbg $setLockOpts$lockimage\" 2> /dev/null"; ($status, @output) = Execute $cmd; @@ -285,10 +302,10 @@ while () { } # if updateSetBG $bgimage, $lockimage; - - displayStats; } # if + displayStats; + $today = YMD; sleep $opts{sleep} * 60;