KALU

NAME
SYNOPSIS
OPTIONS
DESCRIPTION
DATA LOCATION & FORMAT
PREFERENCES
CONFIGURATION TWEAKS
SYSTEM UPGRADE
NOTES
BUGS
REPOSITORY
AUTHORS
ARTWORK

NAME

kalu − Keeping Arch Linux Up−to−date

SYNOPSIS

kalu [ OPTION ...]

OPTIONS

−a, −−auto−checks

Run automatic checks (no GUI , see NOTES below)

−m, −−manual−checks

Run manual checks (no GUI , see NOTES below)

−d, −−debug

Enable debug mode. Debugging messages will then be sent to kalu’s stdout, prefixed with a timestamp.

−V, −−version

Show version information and exit

−h, −−help

Show a little help text and exit

DESCRIPTION

kalu is (yet another) upgrade notifier for Arch Linux. Once started, it will add an icon into your systray, and regularly check if any upgrade is available, and if so show a notification to inform you about it.

You can know whether anything was found during kalu’s last check or not by its icon: if gray nothing was found. If blue, you can mouse over it to see (in the tooltip) what was found.

If the icon happens to blink from gray to blue, it means kalu is currently busy.

kalu can also be paused, meaning automatic checks will not be ran anymore until automatic checks are resumed, either through manual action, or automatically when then "paused period" ends (see PREFERENCES below).

kalu can check for a few things, each one resulting in a separate notification (if something is found) :
* Upgrades

kalu will check for upgrades of any of the installed packages, similarly to what a ‘pacman −Syu‘ would do. To do so, kalu does not requires root privileges to do its checking. In order to determine whether or not upgrades are available, it will create a temporary copy of your sync databases and synchronize those copies, and of course remove them once done.

That way not only can all this be done as user, but it avoids putting you in a situation where you’d risk messing up your system, as you might otherwise unknowingly end up basically doing a ‘pacman −Sy foobar‘ (which is pretty generally understood to be a bad idea).

(Because if your databases were synchronized and upgrades were available, yet you did not upgrade right away − e.g. because you didn’t see the notification or were busy on something − then your next −S operation would really be a −Sy even though you might not even realize it.)

* Watched packages

kalu will check for upgrades of packages that aren’t currently installed. This is done by simply maintaining a list of packages (name & version) and checking it against the online repos (after synchronization).

When upgrades are available, you will be able to easily "mark them" − i.e. kalu can auto-update the list with the latest version number. You will of course be able to select which of the packages to update, if any.

If so, and a newer version is available, you will be notified. If you have foreign packages which you know are not in the AUR (and therefore checking for them is useless), you can put them on an ignore list, see PREFERENCES below.

* AUR packages

kalu will compile the list of foreign packages on the system (i.e. not found in any repo, or what you’d have from running ‘pacman −Qm‘) and check to see if they are available in the AUR . If so, it will check whether the AUR version is more recent than the one installed.

* Watched AUR packages

Just as with "official" packages, you can maintain a list of non-installed packages that kalu should check the AUR for.

* Arch Linux News

kalu will check the news from the Arch Linux website (<http://www.archlinux.org>) and show a notification whenever something new has been posted.

The notification can only feature titles, but using the button "Show news" will show the complete news. Note that this is done through kalu’s own rendering (i.e. there is no HTML engine used) and as such the rendering might differ. For example, images are not supported.

Links are opened using the command-line specified in PREFERENCES , by default using xdg−open(1) to be opened them in your default browser.

In case your notification daemon doesn’t support action buttons on notifications, you can still easilly mark news read using the menu "Show unread Arch Linux News" from right-clickig on kalu’s systray icon.

DATA LOCATION & FORMAT

Every setting/data kalu stores will be done in folder ~/.config/kalu/, all files following a simple format of Key = Value

The following files are used :
kalu.conf : your preferences

This files uses [sections], as common in conf/INI files. The main section [options] defines the preferences, other sections define the different templates : [template−upgrades], [template−watched], [template−aur], [template−watched−aur] and [template−news]

Each of those support the same keys: Title, Package and Sep

watched.conf : the list of watched packages
watched−aur.conf : the list of watched AUR packages

A simple list of watched ( AUR ) packages, where keys are the packages names, and values the version numbers.

news.conf : information about which news you have already read

The news has a key Last containing the title of the last read news. Every news from this one on is considered read. When there are a mix of read & unread news before, the key Read can be specified as many times as needed to indicate read news (using the news title as value as well).

For example:
Last=News 5
Read=News 1
Read=News 3

Will have "News 2" and "News 4" unread.

PREFERENCES

Preferences are presented under a few tabs. Most of those represent a type of check/notification supported by kalu, and as such include a template definition allowing you to tweak the content of said notifications.

The only required template is Upgrades. All others, or more specifically, each of their fields, are optional.

If a field is not defined, kalu will simply fall back and use the corresponding field from the Upgrades template. One exception: the template Watched AUR will fall back to the AUR template, and only if nothing was defined there will Upgrades be used.

All templates are made of 3 fields: Title, Package (or News item), and Separator. Title will be the title of the notification. Package (News item) is the text corresponding to one package/news item. It will be repeated for each package/news item, separated using Separator, to make the body of the notification.

Each field can have none, one or more variables. They are not the same for all templates, so they’ll be described in each of them below.

In addition to \n for a new line, you can use some markup tags, but only in the body of the notification (i.e. in the fields Package/News item and Separator but not in Title), such as <b> ... </b> for bold, <i> ... </i> for italic or <u> ... </u> for underline.

Note that though support is recommended, whether or not those will actually be applied on the notifications depends on your notification daemon.

Preferences are presented under the following tabs :

General
Configuration file (pacman.conf)

PacmanConf = path/to/file

This is the configuration file used to initialize the Arch Linux Package Management ( ALPM ) library (whose most famous front end is no other than pacman).

Icon used on notifications
NotificationIcon = KALU|NONE|/path/to/file

Specify the icon to be used on notifications. Can be none, kalu’s icon (small) or selecting a file to load it from.

When loading icon from a file, the icon will be used "full size" so you can use a small or a large one, as you like. E.g. using /usr/share/pixmaps/kalu.png will use kalu’s icon at its full (48x48) size.

If loading the icon fails, kalu will silently fall back to using it own icon (small).

Notifications expire after (seconds)
Timeout = SECONDS

The delay after which the notification should expire/be automatically closed by the daemon. The left-most value will use the default (from the daemon), while the right-most value will set notifications to never expires, i.e. they will stay opened until either you manually close them, or for notifications with an action button until kalu is closed.

Check for upgrades every (minutes)
Interval = MINUTES

How often must kalu run its automatic check. Select from the list, or type in what you want.

Do not check between .. and ..
SkipPeriod = HH:MM−HH:MM

This is e.g. in case you keep your computer on 24/7, yet go to sleep at some point. It would then make sense that you not want kalu to do its checks while you’re sleeping.

When specifying a "paused period" here, kalu will automatically pause its automatic checks at the beginning time, and resume them at end time.

You can obviously "overwrite" the period, e.g. by manually resuming automatic checks during the paused period.

During an automatic check, check for ..
AutoChecks = [ NEWS ] [ UPGRADES ] [ WATCHED ] [ AUR ] [ WATCHED_AUR ]

Select one or more checks that will be performed during every automatic check, i.e. run on start or at the interval specified above.

During a manual check, check for ..
ManualChecks = [ NEWS ] [ UPGRADES ] [ WATCHED ] [ AUR ] [ WATCHED_AUR ]

Select one or more checks that will be performed when you start a manual check, i.e. using menu "Check for Upgrades"

News
Command line to open links

CmdLineLink = cmdline

The command line to be executed when a link (on news) is clicked. Use variable $URL as placeholder for the full URL to be opened.

Notification template

Title

$NB : number of news items

News item

$NEWS : the title of the news

Separator

No variables available.

Upgrades
Check for pacman/kalu conflict

CheckPacmanConflict = 0|1

When showing the notification, kalu will check if there’s an upgrade of pacman likely to prevent the system upgrade due to kalu’s dependency to the current version of pacman (i.e. due to API changes in libalpm).

If so, a button will be featured on the notification, to show a little message about the reason for such a conflict, and how to perform the system upgrade.

Show a button "Upgrade system" on notifications (and on kalu’s menu)
UpgradeAction = KALU|CMDLINE|NONE

Whether or not notifications should feature a button "Upgrade system" and kalu’s menu (right-click on its systray icon) feature an item "System upgrade"

When clicking the button
(see UpgradeAction above)

Clicking the button can either start kalu’s own updater (see PREFERENCES below), or simply run the program of your choice.

Command-line
CmdLine = cmdline

The command line to start when pressing the button "Upgrade system" from the notification.

After completing a system upgrade, ask whether to start the following
PostSysUpgrade = cmdline

When using kalu’s updater, you can define one or more processes to be ran after a system upgrade was completed. Specify their command-line in the list, and they’ll be started after a successful system upgrade.

You can use $PACKAGES in the command line, which will be replaced by the list of all packages involved in the sysupgrade (i.e. packages upgraded, as well as those added or removed, for instance when a package is replaced by another one).

Ask confirmation before starting anything
ConfirmPostSysUpgrade = 0|1

If enabled, a confirmation will be asked before any process is started after the sysupgrade. In case you specify more than one, the full list will be featured and you will be able to determine which (if any) to start each time.

Notification template

Title

$NB : the number of packages
$DL
: the total download size
$INS
: the total installed size
$NET
: the total net (post-install difference) size

Package

$PKG : the name of the package
$DESC
: the description of the package
$OLD
: the version number of the currently installed version
$NET
: the version number of the version available in the repo
$DL
: the download size
$INS
: the installed size
$NET
: the net (post-install difference) size

Separator

No variables available.

Watched
Manage watched packages

Does the same as the menu by the same name, that is open the window to manage (add, edit, remove) the list of watched packages. This list is independent from the preferences, its data are saved in a different file, and saving the list will not have an effect on preferences, and vice versa.

Notification template

Title

$NB : the number of packages
$DL
: the total download size
$INS
: the total installed size
$NET
: the total net (post-install difference) size

Package

$PKG : the name of the package
$DESC
: the description of the package
$OLD
: the version number from the list of watched packages
$NET
: the version number of the version available in the repo
$DL
: the download size
$INS
: the installed size
$NET
: the net (post-install difference) size

Separator

No variables available.

AUR
Show a button "Update AUR packages" on notifications

If enabled, notifications for AUR packages will feature a button "Update AUR packages" which will start the specified command-line. If not, no button will be featured.

When clicking the button, run the following
CmdLineAur = cmdline

The command line to start when pressing the button "Update AUR packages" from the notification.

You can use $PACKAGES in the command line, which will be replaced by the list of all packages for which an upgrade is available in the AUR .

Do not check the AUR for the following packages
AurIgnore = PACKAGE ...

By default kalu determines the list of all foreign packages (i.e. not found in any repo, or what you’d have from running ‘pacman −Qm‘) and check to see if they are available in the AUR .

If you have packages which you know are not there (or simply for which you do not want to be notified), simply add their names to this list.

Notification template

Title

$NB : the number of packages

Package

$PKG : the name of the package
$DESC
: the description of the package
$OLD
: the version number of the currently installed version
$NET
: the version number of the version available in the AUR

Separator

No variables available.

Watched AUR
Manage watched AUR packages

Does the same as the menu by the same name, that is open the window to manage (add, edit, remove) the list of watched AUR packages. This list is independent from the preferences, its data are saved in a different file, and saving the list will not have an effect on preferences, and vice versa.

Notification template

Title

$NB : the number of packages

Package

$PKG : the name of the package
$DESC
: the description of the package
$OLD
: the version number from the list of watched AUR
packages
$NET
: the version number of the version available in the AUR

Separator

No variables available.

Misc
Show if databases can be synchronized in tooltip

SyncDbsInTooltip = 0|1

An indication of how many databases can by synchronized (i.e. are not up-to-date) will be featured on the tooltip, regardless of whether upgrades are available or not.

When (double/middle) clicking the systray icon
OnSglClick = ACTION
OnDblClick = ACTION
OnMdlClick = ACTION
OnSglClickPaused = ACTION
OnDblClickPaused = ACTION
OnMdlClickPaused = ACTION

Defines the action to be done when you single/double/middle click on kalu’s systray icon.

You can define actions to be taken when kalu is active (i.e. not paused), and a different set of actions when it is paused.
* Same as when active/not paused
( SAME_AS_ACTIVE )

[Only when kalu is paused] Do the same as when kalu is active (defined above).

* Do nothing ( NOTHING )

Does exactly that

* Check for Upgrades ( CHECK )

Start a manual check

* System Upgrade ( SYSUPGRADE )

Start a system upgrade. This will do the same as using menu "System Upgrade" or the button "Upgrade system" on notification; i.e. the specified action done depends on your settings under Upgrades

Note that if no button "Upgrade system" is shown on notification, this option will have the same effect as Do nothing

* Hide/show opened windows (except kalu’s updater) ( TOGGLE_WINDOWS
)

Will hide all opened windows (except for kalu’s updater). If at least one window is hidden, an indication will be featured on the tooltip (" +" next to "kalu") and triggering the action again will then show all hidden windows.

* Re-show last notifications... ( LAST_NOTIFS )

Will re-show all notifications resulting from the last time checks were ran (automatic or manual).

* Toggle pause/resume automatic checks ( TOGGLE_PAUSE )

Will toggle kalu’s paused state, pausing or resuming automatic checks.

* Exit kalu ( EXIT )

Will exit kalu.

CONFIGURATION TWEAKS

A few configuration options do not have GUI (i.e. cannot be set from the Preferences window), but can be set manually. They will, of course, be preserved when saving preferences.

The following tweaks are supported, and can be used in kalu.conf (under the [options] section) :
UseIP = 4|6

This will force kalu to use IPv4 or IPv6. This only applies for connections done via kalu, i.e. news & AUR , but doesn’t apply to ALPM .

This could be usefull e.g. if you’re having issue with the AUR timing out when resolving using IPv6.

AutoNotifs = 0

This can be used to disable showing notifications for automatic checks. They can still be shown on demand, using "re-show last notifications".

Notifications will still be shown for manual checks.

NotifButtons = 0

This can be used to not add any buttons to notifications. Can be useful if your notification daemon decides to show notifications with action-buttons as non-expiring windows instead (e.g. notify-osd).

SYSTEM UPGRADE

An item "System Upgrade" on kalu’s menu, as well as a button "Upgrade system" on notifications for available upgrades, can be featured. This button can start a process of your choice, or kalu’s own system upgrader. (See PREFERENCES above.)

The later will first synchronize your databases, then upgrade all packages that are out of date. In other words, it does what a ‘pacman −Syu‘ would do, only in a GTK GUI .

In order to synchronize databases and upgrades packages, root privileges are obviously required. The way this is handled is as follows: kalu itself only contains the GUI , and therefore can work running under your (user) account.

The part that does interact with libalpm (to actually synchronize databases and upgrade packages) is in a secondary library (kalu-dbus), that is the only one to require root privileges.

This binary will be executed automatically, with root privileges, through DBus when needed, and PolicyKit will be used to ensure that you are authorized to upgrade the system.

When upgrading your system with kalu’s updater, your log file (e.g. pacman.log, as defined in pacman.conf) will be updated. kalu adds an entry for each database synchronized, one when starting the upgrade, one after the upgrade was completed, and one after each package operation (installed, upgraded, removed).

This is all very much like pacman itself, only all those will be prefixed with kalu: so that you can identify them easily. Note however that other log entries added during an upgrade with kalu’s updater might not have such prefix, specifically all those coming from libalpm directly, such as warnings, errors or scriptlet output.

NOTES

Command-line options −−auto−checks and −−manual−checks both work without any need for GUI . This means any and all output will be show on stdout/stderr, and there is no need for a DISPLAY to be available.

In other words, you can run kalu using those options from a tty or through SSH , and it will work fine. You can also use kalu in a script that way.

Note that GTK+ and other dependencies are obviously still required, although there is a configure option available to disable all GUI completely during compilation, in order to produce a CLI version of kalu.

BUGS

They’re probably crawling somewhere in there... if you happen to catch one, (or more) report it and I’ll do my best to squash it.

REPOSITORY

You can find the latest source code of kalu as well as report bugs and/or suggest features on its GitHub repository, available at https://github.com/jjk−jacky/kalu <https://github.com/jjk-jacky/kalu>

AUTHORS

Olivier Brunel <i.am.jack.mail AT gmail DOT com>
Dave Gamble
Pacman Development Team <pacman−dev AT archlinux DOT org>

ARTWORK

Icon by Painless Rob (<https://bbs.archlinux.org/viewtopic.php?id=130839>)