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

Desktop::Notify v1.0.1

A simple interface to libnotify

Authors

  • Fernando Santagata

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Desktop::Notify
  • Desktop::Notify::Raw
  • Desktop::Notify::Simple

Documentation

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.