fdo-notify-0.3.1: Desktop Notifications client
Safe HaskellSafe-Inferred
LanguageHaskell98

DBus.Notify

Description

A library for issuing notifications using FreeDesktop.org Desktop Notifications protocol. This protocol is used to communicate with services such as Ubuntu's NotifyOSD.

This library does not yet support receiving events relating to notifications, or images in notifications: if you need that functionality please contact the maintainer.

Synopsis

Usage

A DBUS Client is needed to display notifications, so the first step is to create one. The notification service will usually run on the session bus (the DBUS instance responsible for messages within a desktop session) so you can use sessionConnect to create the client.

To display a notification, first construct a Note. This can be done in pure code. Notifications can have actions, categories, etc. associated to them but we will just show a simple example (these features are not supported by all notification services anyway).

Use the function notify to display a Note. This returns a handle which can be passed to replace to replace a notification.

import DBus.Notify

main = do
         client <- sessionConnect
         let startNote = appNote { summary="Starting"
                                 , body=(Just $ Text "Calculating fib(33).") }
         notification <- notify client startNote
         let endNote = appNote { summary="Finished"
                               , body=(Just . Text . show $ fib33) }
         fib33 `seq` replace client notification endNote
     where
         appNote = blankNote { appName="Fibonacci Demonstration" }
         fib 0 = 0
         fib 1 = 1
         fib n = fib (n-1) + fib (n-2)
         fib33 = fib 33
 

Displaying notifications

notify :: Client -> Note -> IO Notification Source #

Display a notification. Return a handle which can be used to replace the notification.

replace :: Client -> Notification -> Note -> IO Notification Source #

Replace an existing notification. If the notification has already been closed, a new one will be created.

data Notification Source #

A handle on a displayed notification The notification may not have reached the screen yet, and may already have been closed.

mkSessionClient :: IO Client Source #

Deprecated: Use DBus.Client.connectSession

data Client #

Instances

Instances details
IsValue a => AutoMethod (DBusR (Either Reply a)) 
Instance details

Defined in DBus.Client

Methods

funTypes :: DBusR (Either Reply a) -> ([Type], [Type])

apply :: DBusR (Either Reply a) -> [Variant] -> DBusR Reply

IsValue a => AutoMethod (DBusR a) 
Instance details

Defined in DBus.Client

Methods

funTypes :: DBusR a -> ([Type], [Type])

apply :: DBusR a -> [Variant] -> DBusR Reply

Constructing notifications

blankNote :: Note Source #

A Note with default values. All fields are blank except for expiry, which is Dependent.

data Note Source #

Contents of a notification

Constructors

Note 

Fields

Instances

Instances details
Show Note Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Note -> ShowS

show :: Note -> String

showList :: [Note] -> ShowS

Eq Note Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Note -> Note -> Bool

(/=) :: Note -> Note -> Bool

data Body Source #

Message bodies may contain simple markup. NotifyOSD doesn't support any markup.

Constructors

Text String 
Bold Body 
Italic Body 
Underline Body 
Hyperlink URL Body 
Img URL String 
Concat Body Body 

Instances

Instances details
Show Body Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Body -> ShowS

show :: Body -> String

showList :: [Body] -> ShowS

Eq Body Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Body -> Body -> Bool

(/=) :: Body -> Body -> Bool

type URL = String Source #

data Timeout Source #

Length of time to display notifications. NotifyOSD seems to ignore these.

Constructors

Never

Wait to be dismissed by user

Dependent

Let the notification service decide

Milliseconds Int32

Show notification for a fixed duration (must be positive)

Instances

Instances details
Show Timeout Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Timeout -> ShowS

show :: Timeout -> String

showList :: [Timeout] -> ShowS

Eq Timeout Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Timeout -> Timeout -> Bool

(/=) :: Timeout -> Timeout -> Bool

newtype Action Source #

Constructors

Action 

Fields

Instances

Instances details
Show Action Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Action -> ShowS

show :: Action -> String

showList :: [Action] -> ShowS

Eq Action Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Action -> Action -> Bool

(/=) :: Action -> Action -> Bool

data Image Source #

Images are not yet supported

Instances

Instances details
Show Image Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Image -> ShowS

show :: Image -> String

showList :: [Image] -> ShowS

Eq Image Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Image -> Image -> Bool

(/=) :: Image -> Image -> Bool

data Icon Source #

An Icon is either a path to an image, or a name in an icon theme

Constructors

File FilePath 
Icon String 

Instances

Instances details
Show Icon Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Icon -> ShowS

show :: Icon -> String

showList :: [Icon] -> ShowS

Eq Icon Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Icon -> Icon -> Bool

(/=) :: Icon -> Icon -> Bool

data Category Source #

Categorisation of (some) notifications

Instances

Instances details
Show Category Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Category -> ShowS

show :: Category -> String

showList :: [Category] -> ShowS

Eq Category Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Category -> Category -> Bool

(/=) :: Category -> Category -> Bool

data UrgencyLevel Source #

Urgency of the notification. Notifications may be prioritised by urgency.

Constructors

Low 
Normal 
Critical

Critical notifications require user attention

data Hint Source #

Various hints about how the notification should be displayed

Constructors

Urgency UrgencyLevel 
Category Category 
ImageData Image 
ImagePath Icon 
SoundFile FilePath 
SuppressSound Bool 
X Int32 
Y Int32 

Instances

Instances details
Show Hint Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Hint -> ShowS

show :: Hint -> String

showList :: [Hint] -> ShowS

Eq Hint Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Hint -> Hint -> Bool

(/=) :: Hint -> Hint -> Bool

Capabilities

getCapabilities :: Client -> IO [Capability] Source #

Determine the server's capabilities

data Capability Source #

Instances

Instances details
Read Capability Source # 
Instance details

Defined in DBus.Notify

Methods

readsPrec :: Int -> ReadS Capability

readList :: ReadS [Capability]

readPrec :: ReadPrec Capability

readListPrec :: ReadPrec [Capability]

Show Capability Source # 
Instance details

Defined in DBus.Notify

Methods

showsPrec :: Int -> Capability -> ShowS

show :: Capability -> String

showList :: [Capability] -> ShowS

Eq Capability Source # 
Instance details

Defined in DBus.Notify

Methods

(==) :: Capability -> Capability -> Bool

(/=) :: Capability -> Capability -> Bool