# Module Notification

    module Notification: sig .. end

Popup notifications

For complete details about notifications, look at the the official specifications

    val app_name : string Pervasives.ref

Application name used for notification. The default value is taken from `Sys.argv.(0)`

    val desktop_entry : string option Pervasives.ref

If the application has a desktop entry, it can be specified here

###### Operations on notifications

    type 'a t

Type of an opened notifications

    val result : 'a t -> 'a Lwt.t

Waits for a notification to be closed then returns:

- ``Closed` if the user clicked on the cross, timeout was reached or the notification daemon exited

- ``Default` if the default action was invoked, i.e. the user clicked on the notification, but not on a buttons

- the corresponding action if the user clicked on a button other than the cross

    val close : 'a t -> unit Lwt.t

Close the notification now

###### Opening notifications

    type urgency = [ `Critical | `Low | `Normal ]

Urgency level of popups

    type image = {

`` | `img_width : `int`;`
`` | `img_height : `int`;`
`` | `img_rowstride : `int`;`
`` | `img_has_alpha : `bool`;`
`` | `img_bits_per_sample : `int`;`
`` | `img_channels : `int`;`
`` | `img_data : `string`;`

}
An image description

    val notify : ?app_name:string ->
           ?desktop_entry:string ->
           ?replace:'b t ->
           ?icon:string ->
           ?image:image ->
           summary:string ->
           ?body:string ->
           ?actions:(string * ([> `Closed | `Default ] as 'a)) list ->
           ?urgency:urgency ->
           ?category:string ->
           ?sound_file:string ->
           ?suppress_sound:bool ->
           ?pos:int * int ->
           ?hints:(string * OBus_value.V.single) list ->
           ?timeout:int -> unit -> 'a t Lwt.t

Open a notification.

- `app_name` and `desktop_entry` can override default values taken from references
- `replace` is a popup id this notification replace
- `icon` is the notification icon. It is either as a URI (file://...) or a name in a freedesktop.org-compliant icon theme (not a GTK+ stock ID)
- `image` is an image, it is used if `icon` is not present
- `summary` is a single line overview of the notification
- `body` is a multi-line body of text. Each line is a paragraph, server implementations are free to word wrap them as they see fit. The body may contain simple markup as specified in Markup. It must be encoded using UTF-8. If the body is omitted, just the summary is displayed.
- `action` is a list of (text, key) pair, `text` is the text displayed to the user and `key` is the value which will be returned when the action is invoked
- `category` is a string representing the category of the notification, for example: "device.added", "email.arrived" (more category can be found in the specifications)
- `sound_file` is a sound file to play while displaying the notification
- `suppress_sound` tell the daemon to suppress sounds
- `pos` is a screen position
- `hints` is a list of additionnal hints
- `timeout` is a timeout in millisecond

###### Informations

    type server_info = {

`` | `server_name : `string`;`
`` | `server_vendor : `string`;`
`` | `server_version : `string`;`
`` | `server_spec_version : `string`;`

}
Server informations

    val get_server_information : unit -> server_info Lwt.t

Retreive server informations

    val get_capabilities : unit -> string list Lwt.t

Retreive server capabilities, see specification for details