Simple
NAME
Desktop::Notify::Simple - A simpler interface to libnotify
SYNOPSIS
use Desktop::Notify::Simple;
my $n = Desktop::Notify::Simple.new(
:app-name('testone'),
:summary('Attention!'),
:body('What just happened?'),
:icon('stop')
).show;
sleep 2;
$n.update(:summary('Oh well!'), :body('Not quite a disaster!'), :icon('stop')).show;
DESCRIPTION
Desktop::Notify::Simple is a set of very simple bindings to libnotify using NativeCall.
new(Str :$app-name!, Str :$summary!, Str :$body!, Str :$icon!, Int :$timeout?, Str :$category?, NotifyUrgency :$urgency?)
Constructs a new Desktop::Notify::Simple object. It takes four mandatory arguments:
$app-name the name of the app that will be registered with the notify dæmon.
$summary appears in bold on the top side of the notification
$body notification body
$icon icon name
and three optional arguments:
$timeout expressed in seconds (while Desktop::Notify uses milliseconds)
$category can be used by the notification server to filter or display the data in a certain way
$urgency urgency level of this notification
An enum NotifyUrgency <NotifyUrgencyLow NotifyUrgencyNormal NotifyUrgencyCritical> is available.
show(GError $err?)
Shows the notification on screen. It takes one optional argument, the GError object. (The default Desktop::Notify error handling is not thread safe. See Threading safety for more info)
update(Str :$summary, Str :$body, Str :$icon)
Modifies the messages of a notification which is already on screen.
close(GError $err?)
Closes the notification. It takes one optional argument, the GError object. (The default Desktop::Notify error handling is not thread safe. See Threading safety for more info) Note that usually there's no need to explicitly 'close' a notification, since the default is to automatically expire after a while.
Threading safety
Desktop::Notify offers a simple interface which provides an error class member, which is automatically used by the functions which need it. Since 'error' is a shared class member, if a program makes use of threading, its value might be written by another thread before it's been read. In this case one can declare their own GError variables:
my $err = Desktop::Notify::Raw::GError.new;
and pass it as an optional argument to the .show() and .close() methods; it will be used instead of the object-wide one.
Prerequisites
This module requires the libnotify library to be installed. Please follow the instructions below based on your platform:
Debian Linux
sudo apt-get install libnotify4
Installation
$ zef install Desktop::Notify
Testing
To run the tests:
$ prove -e "perl6 -Ilib"
Author
Fernando Santagata
License
The Artistic License 2.0