Well, the prize goes to Wes--adding <sudo -u household> before the wnctrl
-k commands worked.  Now when the script is launched by anacron the zenity
test command minimizes all open windows and presents its dialog window.
When that window closes, either due to a user response or time out for that
window, the windows are restored.  Great.  This means that a notification
to the user that something went wrong or that  some action is required will
not be hidden behind open windows.  Now that I am assured that the zenity
notification method works, I can get rid of the zenity test command at line
14.

In summary, I have a script which anacron runs every day.  That script
checks whether it is time to run a weekly backup.  If so, it instructs the
user to click "yes" and turn on the backup drive.   If "no" or timeout is
reached the script closes to be run the next day.  If "yes" the backup
script is launched.  If backup is successful the date file is updated and a
notification to turn off the drive is launched. If the backup is not
successful for any reason, various error notification windows are launched.

If I had put  the backup script among the weekly anacron scripts, there
would be no way to postpone the backup for one day.  Not running the backup
would postpone the backup for a full week.

Thanks to all who responded with ideas and suggestions.

-Denis

On Tue, Feb 6, 2018 at 1:27 PM, Denis Heidtmann <[email protected]>
wrote:

> I have a script which runs daily via anacron.  I want the script to launch
> a zenity window to notify the user, so I issue the command wmctrl -k on
> before zenity and wmctrl - off after.  This  is supposed to minimize all
> open windows to ensure that the zenity window will be visible.  I  have a
> test script to show that it works.  Both scripts are owned by root, but
> editable by me.  I  have run the test script from a command  line login
> using sudo, as well as from a Gnome terminal.  The test script behaves as
> intended--the desktop is cleared of all open windows.   I inserted a test
> zenity window at the beginning of the real script to verity that when
> launched by anacron it would behave the same way.  It does not!  It does
> not minimize open windows, but the zenity window does appear on top of the
> open windows.
>
> What is different about the anacron launch?  I have been monkeying with
> this thing for quite a while.  I tried wmctrl -R but that did not behave as
> I had hoped.  wmctrl -k does what I want except when anacron is doing the
> launching.
>
> Ideas?
>
> -Denis
>
> Test script:
>
> #!/bin/bash
> # test to get zenity to work when script is not called from an X window
> # change to a non-X login (^ alt F2), call this w/sudo, then go back to X
> (^ alt F7)
> # to see if a zenity window shows up.
> # feb 5 2018 the above worked--all open windows minimized.
>
>
> Notification () {
> # pass title, text of notice, and timeout as 3 parameters
> TITLE=$1; MSG=$2; TIMOUT=$3
> wmctrl -k on
> sudo -u household zenity --question --title="$TITLE" --text="$MSG"
> --timeout="$TIMOUT"
> RETRNCODE=$?
> wmctrl -k off
> return $RETRNCODE  # return codes: 0 = YES, 1 = cancel, 5 = timeout
> }
>
> sleep 30
>
> export DISPLAY=:0
> # test of launch of zenity
> Notification "Test of zenity (backup_checksh)" "This should minimize all
> open windows." 20
> # remove when satisfied that launch works.
>
> Top of real script:
>
> #!/bin/bash
>
> Notification () {
> # pass title, text of notice, and timeout as 3 parameters
> TITLE=$1; MSG=$2; TIMOUT=$3
> wmctrl -k on
> sudo -u household zenity --question --title="$TITLE" --text="$MSG"
> --timeout="$TIMOUT"
> RETRNCODE=$?
> wmctrl -k off
> return $RETRNCODE  # return codes: 0 = YES, 1 = cancel, 5 = timeout
> }
> export DISPLAY=:0
> # test of launch of zenity
> Notification "Test of zenity (backup_checksh)" "This should minimize all
> open windows." 5
> # remove when satisfied that launch works.
> MAX_TIME=$((7 * 24 * 3600))
>
>
_______________________________________________
PLUG mailing list
[email protected]
http://lists.pdxlinux.org/mailman/listinfo/plug

Reply via email to