Update Notifier Applet

UN-Applet provides a simple applet for the system tray that informs the user about available software updates on Debian linux based systems, as Ubuntu, Linux Mint and of course Debian.
The main goal of un-applet is to provide an easy way to help users to keep their system up to date without getting in the user's way while keeping software dependencies at a minimum.
It should work with any panel-like application that conforms to the freedesktop.org system tray specifications; it has been tested with IceWm, Lxde, xfce4, KDE and Gnome, most likely other desktop environment's panels should be fine, too.
KDE or Gnome libraries are not required to run un-applet.


Please download the latest version from the download site.
To install the applet, simply install the .deb package with
    # dpkg -i un-applet_<version>_all.deb
or the graphical package installer of your choice. If you want to have a look at the files the package contains first, you can download the .tar.bz2 archive instead of the .deb package, extract its contents and view the files within the source tree. You may then build your own package from the sources with
    $ fakeroot dpkg -b un-applet_<version>_all
If you would like to be notified about new releases of un-applet you can add its debian repository to your package sources (un-applet is the only package in the repository, so there is no reason to worry about conflicts with other packages from the official package sources).
To do so, all you have to do is to add my gpg-key to your keyring by running (as root):
# wget -O - http://download.tuxfamily.org/unapplet/debian/key/deb.gpg.key | apt-key add -
resp. on systems without root login:
$ sudo wget -O - http://download.tuxfamily.org/unapplet/debian/key/deb.gpg.key | apt-key add -
Then add the following line to /etc/apt/sources.list (or use your favourite package management application to add the repository):
deb http://download.tuxfamily.org/unapplet/debian debian main
After the next update of the package database un-applet's repository will be active.
The repository currently only supports i386 and amd64 archtectures; if you miss your architecture please send me a note. Since it is the same package for any architecture anyway, it would be easy to add if I know that someone actually needs it.


un-applet requires the following packages to be installed:


un-applet is licensed under the terms of the Gnu General Public License.
The package includes several portions of third party code, please consult the file /usr/share/doc/un-applet/README.3rdParty for details and copyright notices.


Once the debian package is installed, you should find a main menu entry "Update Notifier Applet" under either "System" or "System" -> "Package Management", depending on the desktop environment in use. Of course you can also start the applet simply by calling
    $ un-applet


Oct. 12 2016: un-applet-1.3 released

This release fixes two smaller bugs:
1.If gksu (or any other login program in use) was configured to be called with additional options (for example if gksu -w was used to force gksu to use "su-mode") the applet did not handle this correctly, so that gksu would never actually be called. Now command line options are handled properly.
2.The user should not be able to start multiple background processes (package database update, software upgrade or system settings dialog) simultaneously to avoid unpredictable side-effects. The mechanism to ensure this was broken and has now been fixed.

Oct. 09 2016: un-applet-1.2 released

There was a silly bug in the un-applet-verify-mirrors script that, when run in --verbose mode, in some situations could produce a wrong exit code, resulting in an unwanted update of the package database while one or more mirror servers were not reachable. This has been fixed.

Oct. 08 2016: un-applet-1.1 released

This version comes with a large number of improvements. It brings a number of major feature enhancements and fixes several bugs affecting the search for upgrading candidates:

June 14 2016: un-applet permanently moved

Due to sourceforge's recent changes that break the usability of debian repos hosted on sf I decided that un-applet had to move to another hosting service.
Fortunately the friendly folks from TuxFamily accepted to host the project, so now here we are!
The files on sourceforge are still there, but the project's sf site is of course is no longer maintained, so please update your bookmarks.

June 13 2016: un-applet 1.0 released!

I am glad to finally announce the stable version 1.0 of un-applet!
This version features a number of major improvements plus a (presumably unpleasant) change affecting the supported terminal emulator programs:
IceWM problems
There is a bug in older versions of IceWM (i.e. for example the version 1.3.8-2 from Debian Jessie, as well as the "official" 1.3.8 from IceWM's sourceforge page) that causes uncontrollable "zombie" windows to appear on the screen if any application that requests the system tray is launched too early during window manager startup. To work around this, earlier versions of un-applet had a hard-coded two second time-out before the applet actually started. This time-out can now be increased from the preferences dialog, if necessary (for users of other desktop environments it should be safe to set this to 0).
This bug has apparently been fixed in the latest versions of IceWM (currently 1.3.8+githubmod+20150914+fa3fdef-2), however unfortunately for the worse, because a new bug was introduced that stops TkTray icons from being displayed properly in the IceWm system tray (please note: this has been fixed with un-applet-1.1)
A bug report on this issue has been acknowledged as valid by debian's IceWM maintainers, so there may be hope that this will be resolved in subsequent releases (see here for details).

Aug. 25 2015:

A nasty bug in the KDE terminal application konsole has been reported to render un-applet virtually unusable when konsole is used as terminal emulator program, which will probably be the case for the majority of KDE users.
Please see for example this forum thread for a more detailed description of the bug.
Apparently the problem lies deep in the internals of KDE's underlying Qt-library.
At least on Ubuntu Trusty with KDE-4.13 the bug is still present.
Unfortunately the only solution for un-applet I can offer is to use a different terminal emulator program.
In case you have no other terminal programs installed you might want to try one of several light-weight alternatives as for example xvt or, in case you need utf-8 support, rxvt-unicode
I am currently trying to figure out how to best work around this issue, which might very well result in hard-coding the use of one or other terminal program.

Aug. 05 2015: un-applet_0.4

This release fixes a bug that could have caused false negative results when the package database was locked by another process while the cron script tried to check for available updates. Now the script tests if /var/lib/dpkg/status is locked before actually updating the package database. If it is, the call to apt-get update will be silently postponed until the script is called the next time.

July 19 2015: un-applet_0.3

Initial release.

How it works:

The core functionality is in fact not provided by the applet itself, but by a simple script that is installed into /etc/cron.hourly and thus executed once an hour with root privilege.
This script (by default) first tries to determine if an applet process is actually active, if not it does nothing.
In the next step it checks if the pre-defined interval between updates of the package database (default three hrs.) is expired, if not, again it stops and does nothing.
Finally, if the above conditions are met, it calls a helper script un-applet-update-pkgdatabase in order to obtain information about pending updates.
This script (by default) first runs the un-applet-verify-mirrors script to check if all of the software mirrors defined in /etc/apt/sources.list and (if present) /etc/apt/sources.list.d/*.list can be reached. This is done to work around a bug in apt-get that has been observed when apt-pinning is used (which may well be the case if you never consciously decided to do so, for example if a debian-backports mirror is in use), that may lead to a considerable amount of packages accidentally selected for upgrade if one or more mirrors can not be accessed.
Next thing, it checks if the package database is locked by another process, and if yes, stops and does nothing, in order to avoid false negative results.
If everything is ok, it calls
    apt-get update
and creates a list of pending updates, if any.
Finally the script writes the number of available upgrades, the names of the upgradable packages and the time of its last execution into three files in /var/lib/un-applet.

The applet itself simply periodically checks the contents of these files and changes its color accordingly: If updates are available, you can click on the icon and will be prompted with a yes/no dialog box that asks you if you want to perform the upgrade now. If you choose yes, a gksu prompt will show up, which starts up a terminal emulator that runs the un-applet-dist-upgrade script which basically calls
    apt-get (dist-)upgrade
to install the upgrades.
The icon has also a context menu which allows you to manually start the update of the package database or lets you open a list with information about pending updates (if any).


The behavior of the cron script and its helpers can be customized by editing the file /etc/un-applet/un-applet.conf .
Since un-applet-1.1 there is also a gui dialog available in the applet's context menu (under "System-wide settings...") to edit these options.

As far as the applet itself is concerned, you can configure a few things through the applet's Preferences... dialog:



Any comments, bug reports and suggestions are highly welcome.
Please mailto:
Michael Lange <klappnase (at) tuxfamily (dot) org>

Thanks for hosting to: