tazpkg annotate tazpkg-notify @ rev 876

modules getenv, get, install: provide --quiet option (don't display service messages, show errors only)
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Nov 30 01:45:37 2015 +0200 (2015-11-30)
parents 21ac83abe572
children 54ebb19d4cc6
rev   line source
pankso@451 1 #!/bin/sh
al@840 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
al@840 3 # tazpkg-notify - part of TazPkg
al@840 4 # Notification icon for TazPkg packages
al@840 5
al@840 6 # Recharging pkgs list can be done automatically at boot, so notifies users
al@840 7 # if some updates are available. Also notifies users if the packages list is too
pankso@451 8 # old and out-of-date or if no packages list found. This script should
paul@477 9 # be run by the WM autostart script or ~/.xsession and needs a systray to
paul@477 10 # sit in like in LXpanel or Tint2.
al@840 11
al@840 12 # Copyright (C) 2012-2015 SliTaz - GNU General Public License v3.
al@840 13 # Authors: See the AUTHORS files
al@840 14
pankso@451 15
al@710 16 . /lib/libtaz.sh
al@710 17 . /etc/slitaz/slitaz.conf
al@710 18
pankso@556 19 # I18n
al@633 20 export TEXTDOMAIN='tazpkg'
pankso@451 21
pankso@556 22 fifo=/tmp/$(basename $0).fifo
mojo@577 23 doc="file:///usr/share/doc/tazpkg/tazpkg.html"
al@870 24 tp='http://127.0.0.1:82/user/pkgs.cgi'
al@633 25
al@840 26 installed=$(wc -l < "$PKGS_DB/installed.info")
al@707 27 text="$(_p \
al@707 28 '%s installed package' \
al@840 29 '%s installed packages' "$installed" \
al@707 30 "<b>$installed</b>")"
al@710 31
al@840 32 [ -f "$PKGS_DB/IDs" ] && mtime=$(find "$PKGS_DB/IDs" -mtime +10;)
al@840 33 up=0; [ -f "$PKGS_DB/packages.up" ] && up=$(wc -l < "$PKGS_DB/packages.up")
pankso@451 34
al@707 35
al@870 36 # Standard notification, if available
al@870 37
al@870 38 notify() {
al@870 39 if [ -n "$(which notify-send)" ]; then
al@870 40 case $2 in
al@870 41 info) icon='dialog-information'; urgency='normal';;
al@870 42 *) icon='dialog-warning'; urgency='critical';;
al@870 43 esac
al@870 44 notify-send -i $icon -u $urgency 'TazPkg' "$1" &
al@870 45 fi
al@870 46 }
al@870 47
al@870 48
pankso@556 49 # Notification icon
al@707 50
pankso@556 51 listen() {
pankso@556 52 # Manage the I/O redirection from SHell
al@710 53 rm -f $fifo; mkfifo $fifo
al@710 54
pankso@556 55 # Attach a file descriptor
al@603 56 exec 3<> $fifo
al@710 57
pankso@556 58 # Notification icon
al@870 59 tooltip="$(_ 'Checking packages lists - %s' "$text")"
al@870 60 notify "$tooltip" 'info' &
al@870 61 yad --notification --listen --image='software-update-available' --text="$tooltip" <&3
al@710 62
pankso@556 63 # Clean-up
pankso@556 64 rm -f $fifo
pankso@451 65 }
pankso@451 66
al@707 67
paul@662 68 # Notification menu (right click)
al@707 69
pankso@556 70 menu() {
pankso@556 71 cat << EOT
pankso@556 72 menu:\
al@855 73 $(_n 'My packages' )!tazpanel pkgs#list!package-x-generic|\
al@855 74 $(_n 'Recharge lists' )!tazbox su tazpanel pkgs#recharge!system-software-update|\
al@855 75 $(_n 'Check upgrade' )!tazbox su tazpanel pkgs#up!system-software-install|\
al@710 76 $(_n 'TazPkg SHell' )!terminal -e tazpkg shell!utilities-terminal|\
al@840 77 $(_n 'TazPkg manual' )!tazweb --notoolbar $doc!slitaz-doc|\
al@710 78 $(_n 'Close notification')!quit!gtk-close
pankso@556 79 EOT
pankso@451 80 }
pankso@451 81
al@707 82
pankso@451 83 case $1 in
pankso@556 84 usage|help|*-h)
al@710 85 _n "Usage:"; echo " $(basename $0)"
al@707 86 ;;
pankso@451 87 *)
pankso@556 88 # Sleep before displaying the notification icon and
pankso@556 89 # sleep to let user read the tooltips.
pankso@556 90 sleep 4
pankso@556 91 listen &
pankso@556 92 sleep 2
pankso@556 93 menu > $fifo
pankso@556 94 sleep 6
al@710 95
pankso@556 96 # Missing packages list
al@840 97 if [ ! -f "$PKGS_DB/packages.info" ]; then
al@710 98 tooltip="$(_ 'No packages list found - %s' "$text")"
al@870 99 notify "$tooltip\n<a href=\"$tp?recharge\">$(_n 'Recharge lists')</a>" &
al@840 100 (echo "action:tazbox su tazpanel pkgs#recharge"
al@710 101 echo "tooltip:$tooltip"
al@855 102 echo "icon:software-update-urgent") > $fifo
al@707 103 exit 0
pankso@556 104 fi
al@710 105
pankso@556 106 # Too old packages list
al@840 107 if [ -n "$mtime" ]; then
al@707 108 tooltip="$(_ 'Your packages list is older than 10 days')"
al@870 109 notify "$tooltip\n<a href=\"$tp?recharge\">$(_n 'Recharge lists')</a>" &
al@840 110 (echo "action:tazbox su tazpanel pkgs#recharge"
al@840 111 echo "action:quit"
al@710 112 echo "tooltip:$tooltip"
al@855 113 echo "icon:software-update-urgent") > $fifo
al@707 114 exit 0
pankso@556 115 fi
al@710 116
paul@579 117 # Available upgrades
pankso@556 118 if [ "$up" -gt 0 ]; then
al@707 119 tooltip="$(_p \
al@707 120 'There is %s upgradeable package' \
al@840 121 'There are %s upgradeable packages' "$up" \
al@707 122 "<b>$up</b>")"
al@870 123 notify "$tooltip\n<a href=\"$tp?up\">$(_n 'Check upgrade')</a>" &
al@840 124 (echo "action:tazbox su tazpanel pkgs#up"
al@710 125 echo "tooltip:$tooltip"
al@855 126 echo "icon:software-update-urgent") > $fifo
al@707 127 exit 0
pankso@556 128 fi
al@710 129
pankso@556 130 # Nothing to do, close notification
al@710 131 tooltip="$(_ 'System is up to date - %s' "$text")"
al@870 132 notify "$tooltip" 'info' &
pankso@556 133 echo "tooltip:$tooltip" > $fifo
pankso@471 134 sleep 10
al@707 135 echo "quit" > $fifo
al@707 136 ;;
pankso@451 137 esac
pankso@556 138 exit 0