diff --git a/GI/Notify.hs b/GI/Notify.hs
--- a/GI/Notify.hs
+++ b/GI/Notify.hs
@@ -1,1001 +1,34 @@
--- Generated code.
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
-{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
-    TypeFamilies, MultiParamTypeClasses, KindSignatures,
-    FlexibleInstances, UndecidableInstances, DataKinds,
-    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
-
-module GI.Notify where
-
-import Prelude ()
-import Data.GI.Base.ShortPrelude
-import Data.Char
-import Data.Int
-import Data.Word
-import qualified Data.ByteString.Char8 as B
-import Data.ByteString.Char8 (ByteString)
-import qualified Data.Map as Map
-import Foreign.C
-import Foreign.Ptr
-import Foreign.ForeignPtr
-import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
-import Foreign.Storable (peek, poke, sizeOf)
-import Control.Applicative ((<$>))
-import Control.Exception (onException)
-import Control.Monad.IO.Class
-import qualified Data.Text as T
-
-import Data.GI.Base.Attributes hiding (get, set)
-import Data.GI.Base.BasicTypes
-import Data.GI.Base.BasicConversions
-import Data.GI.Base.Closure
-import Data.GI.Base.GError
-import Data.GI.Base.GHashTable
-import Data.GI.Base.GParamSpec
-import Data.GI.Base.GVariant
-import Data.GI.Base.GValue
-import Data.GI.Base.ManagedPtr
-import Data.GI.Base.Overloading
-import Data.GI.Base.Properties hiding (new)
-import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
-import Data.GI.Base.Utils
-
-import qualified GI.GLib as GLib
-import qualified GI.GLibAttributes as GLibA
-import qualified GI.GObject as GObject
-import qualified GI.GObjectAttributes as GObjectA
-import qualified GI.GdkPixbuf as GdkPixbuf
-import qualified GI.GdkPixbufAttributes as GdkPixbufA
-
--- callback ActionCallback
-actionCallbackClosure :: ActionCallback -> IO Closure
-actionCallbackClosure cb = newCClosure =<< mkActionCallback wrapped
-    where wrapped = actionCallbackWrapper Nothing cb
-
-type ActionCallbackC =
-    Ptr Notification ->
-    CString ->
-    Ptr () ->
-    IO ()
-
-foreign import ccall "wrapper"
-    mkActionCallback :: ActionCallbackC -> IO (FunPtr ActionCallbackC)
-
-type ActionCallback =
-    Notification ->
-    T.Text ->
-    IO ()
-
-noActionCallback :: Maybe ActionCallback
-noActionCallback = Nothing
-
-actionCallbackWrapper ::
-    Maybe (Ptr (FunPtr (ActionCallbackC))) ->
-    ActionCallback ->
-    Ptr Notification ->
-    CString ->
-    Ptr () ->
-    IO ()
-actionCallbackWrapper funptrptr _cb notification action _ = do
-    notification' <- (newObject Notification) notification
-    action' <- cstringToText action
-    _cb  notification' action'
-    maybeReleaseFunPtr funptrptr
-
--- object Notification 
-newtype Notification = Notification (ForeignPtr Notification)
-noNotification :: Maybe Notification
-noNotification = Nothing
-
-foreign import ccall "notify_notification_get_type"
-    c_notify_notification_get_type :: IO GType
-
-type instance ParentTypes Notification = '[GObject.Object]
-
-instance GObject Notification where
-    gobjectIsInitiallyUnowned _ = False
-    gobjectType _ = c_notify_notification_get_type
-    
-
-class GObject o => NotificationK o
-instance (GObject o, IsDescendantOf Notification o) => NotificationK o
-
-toNotification :: NotificationK o => o -> IO Notification
-toNotification = unsafeCastTo Notification
-
--- method Notification::new
--- method type : Constructor
--- Args : [Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Notify" "Notification"
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_new" notify_notification_new :: 
-    CString ->                              -- summary : TBasicType TUTF8
-    CString ->                              -- body : TBasicType TUTF8
-    CString ->                              -- icon : TBasicType TUTF8
-    IO (Ptr Notification)
-
-
-notificationNew ::
-    (MonadIO m) =>
-    T.Text ->                               -- summary
-    Maybe (T.Text) ->                       -- body
-    Maybe (T.Text) ->                       -- icon
-    m Notification
-notificationNew summary body icon = liftIO $ do
-    summary' <- textToCString summary
-    maybeBody <- case body of
-        Nothing -> return nullPtr
-        Just jBody -> do
-            jBody' <- textToCString jBody
-            return jBody'
-    maybeIcon <- case icon of
-        Nothing -> return nullPtr
-        Just jIcon -> do
-            jIcon' <- textToCString jIcon
-            return jIcon'
-    result <- notify_notification_new summary' maybeBody maybeIcon
-    checkUnexpectedReturnNULL "notify_notification_new" result
-    result' <- (wrapObject Notification) result
-    freeMem summary'
-    freeMem maybeBody
-    freeMem maybeIcon
-    return result'
-
--- method Notification::add_action
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Notify" "ActionCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 4, argDestroy = 5, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "free_func", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Notify" "ActionCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 4, argDestroy = 5, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_add_action" notify_notification_add_action :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- action : TBasicType TUTF8
-    CString ->                              -- label : TBasicType TUTF8
-    FunPtr ActionCallbackC ->               -- callback : TInterface "Notify" "ActionCallback"
-    Ptr () ->                               -- user_data : TBasicType TVoid
-    FunPtr GLib.DestroyNotifyC ->           -- free_func : TInterface "GLib" "DestroyNotify"
-    IO ()
-
-
-notificationAddAction ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- action
-    T.Text ->                               -- label
-    ActionCallback ->                       -- callback
-    m ()
-notificationAddAction _obj action label callback = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    action' <- textToCString action
-    label' <- textToCString label
-    callback' <- mkActionCallback (actionCallbackWrapper Nothing callback)
-    let user_data = castFunPtrToPtr callback'
-    let free_func = safeFreeFunPtrPtr
-    notify_notification_add_action _obj' action' label' callback' user_data free_func
-    touchManagedPtr _obj
-    freeMem action'
-    freeMem label'
-    return ()
-
--- method Notification::clear_actions
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_clear_actions" notify_notification_clear_actions :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    IO ()
-
-
-notificationClearActions ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    m ()
-notificationClearActions _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    notify_notification_clear_actions _obj'
-    touchManagedPtr _obj
-    return ()
-
--- method Notification::clear_hints
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_clear_hints" notify_notification_clear_hints :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    IO ()
-
-
-notificationClearHints ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    m ()
-notificationClearHints _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    notify_notification_clear_hints _obj'
-    touchManagedPtr _obj
-    return ()
-
--- method Notification::close
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : True
--- Skip return : False
-
-foreign import ccall "notify_notification_close" notify_notification_close :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    Ptr (Ptr GError) ->                     -- error
-    IO CInt
-
-
-notificationClose ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    m ()
-notificationClose _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    onException (do
-        _ <- propagateGError $ notify_notification_close _obj'
-        touchManagedPtr _obj
-        return ()
-     ) (do
-        return ()
-     )
-
--- method Notification::get_closed_reason
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TInt32
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_get_closed_reason" notify_notification_get_closed_reason :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    IO Int32
-
-
-notificationGetClosedReason ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    m Int32
-notificationGetClosedReason _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    result <- notify_notification_get_closed_reason _obj'
-    touchManagedPtr _obj
-    return result
-
--- method Notification::set_app_name
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_app_name" notify_notification_set_app_name :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- app_name : TBasicType TUTF8
-    IO ()
-
-
-notificationSetAppName ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- app_name
-    m ()
-notificationSetAppName _obj app_name = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    app_name' <- textToCString app_name
-    notify_notification_set_app_name _obj' app_name'
-    touchManagedPtr _obj
-    freeMem app_name'
-    return ()
-
--- method Notification::set_category
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_category" notify_notification_set_category :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- category : TBasicType TUTF8
-    IO ()
-
-
-notificationSetCategory ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- category
-    m ()
-notificationSetCategory _obj category = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    category' <- textToCString category
-    notify_notification_set_category _obj' category'
-    touchManagedPtr _obj
-    freeMem category'
-    return ()
-
--- method Notification::set_hint
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint" notify_notification_set_hint :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    Ptr GVariant ->                         -- value : TVariant
-    IO ()
-
-
-notificationSetHint ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Maybe (GVariant) ->                     -- value
-    m ()
-notificationSetHint _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    maybeValue <- case value of
-        Nothing -> return nullPtr
-        Just jValue -> do
-            let jValue' = unsafeManagedPtrGetPtr jValue
-            return jValue'
-    notify_notification_set_hint _obj' key' maybeValue
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_hint_byte
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_byte" notify_notification_set_hint_byte :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    Word8 ->                                -- value : TBasicType TUInt8
-    IO ()
-
-{-# DEPRECATED notificationSetHintByte ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintByte ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Word8 ->                                -- value
-    m ()
-notificationSetHintByte _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    notify_notification_set_hint_byte _obj' key' value
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_hint_byte_array
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_byte_array" notify_notification_set_hint_byte_array :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    Word8 ->                                -- value : TBasicType TUInt8
-    Word64 ->                               -- len : TBasicType TUInt64
-    IO ()
-
-{-# DEPRECATED notificationSetHintByteArray ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintByteArray ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Word8 ->                                -- value
-    Word64 ->                               -- len
-    m ()
-notificationSetHintByteArray _obj key value len = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    notify_notification_set_hint_byte_array _obj' key' value len
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_hint_double
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_double" notify_notification_set_hint_double :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    CDouble ->                              -- value : TBasicType TDouble
-    IO ()
-
-{-# DEPRECATED notificationSetHintDouble ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintDouble ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Double ->                               -- value
-    m ()
-notificationSetHintDouble _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    let value' = realToFrac value
-    notify_notification_set_hint_double _obj' key' value'
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_hint_int32
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_int32" notify_notification_set_hint_int32 :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    Int32 ->                                -- value : TBasicType TInt32
-    IO ()
-
-{-# DEPRECATED notificationSetHintInt32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintInt32 ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Int32 ->                                -- value
-    m ()
-notificationSetHintInt32 _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    notify_notification_set_hint_int32 _obj' key' value
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_hint_string
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_string" notify_notification_set_hint_string :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    CString ->                              -- value : TBasicType TUTF8
-    IO ()
-
-{-# DEPRECATED notificationSetHintString ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintString ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    T.Text ->                               -- value
-    m ()
-notificationSetHintString _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    value' <- textToCString value
-    notify_notification_set_hint_string _obj' key' value'
-    touchManagedPtr _obj
-    freeMem key'
-    freeMem value'
-    return ()
-
--- method Notification::set_hint_uint32
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_hint_uint32" notify_notification_set_hint_uint32 :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- key : TBasicType TUTF8
-    Word32 ->                               -- value : TBasicType TUInt32
-    IO ()
-
-{-# DEPRECATED notificationSetHintUint32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
-notificationSetHintUint32 ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- key
-    Word32 ->                               -- value
-    m ()
-notificationSetHintUint32 _obj key value = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    key' <- textToCString key
-    notify_notification_set_hint_uint32 _obj' key' value
-    touchManagedPtr _obj
-    freeMem key'
-    return ()
-
--- method Notification::set_icon_from_pixbuf
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_icon_from_pixbuf" notify_notification_set_icon_from_pixbuf :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    Ptr GdkPixbuf.Pixbuf ->                 -- icon : TInterface "GdkPixbuf" "Pixbuf"
-    IO ()
-
-{-# DEPRECATED notificationSetIconFromPixbuf ["use notify_notification_set_image_from_pixbuf() instead."]#-}
-notificationSetIconFromPixbuf ::
-    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
-    a ->                                    -- _obj
-    b ->                                    -- icon
-    m ()
-notificationSetIconFromPixbuf _obj icon = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    let icon' = unsafeManagedPtrCastPtr icon
-    notify_notification_set_icon_from_pixbuf _obj' icon'
-    touchManagedPtr _obj
-    touchManagedPtr icon
-    return ()
-
--- method Notification::set_image_from_pixbuf
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_image_from_pixbuf" notify_notification_set_image_from_pixbuf :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
-    IO ()
-
-
-notificationSetImageFromPixbuf ::
-    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
-    a ->                                    -- _obj
-    b ->                                    -- pixbuf
-    m ()
-notificationSetImageFromPixbuf _obj pixbuf = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
-    notify_notification_set_image_from_pixbuf _obj' pixbuf'
-    touchManagedPtr _obj
-    touchManagedPtr pixbuf
-    return ()
-
--- method Notification::set_timeout
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timeout", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timeout", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_timeout" notify_notification_set_timeout :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    Int32 ->                                -- timeout : TBasicType TInt32
-    IO ()
-
-
-notificationSetTimeout ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    Int32 ->                                -- timeout
-    m ()
-notificationSetTimeout _obj timeout = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    notify_notification_set_timeout _obj' timeout
-    touchManagedPtr _obj
-    return ()
-
--- method Notification::set_urgency
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgency", argType = TInterface "Notify" "Urgency", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgency", argType = TInterface "Notify" "Urgency", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_set_urgency" notify_notification_set_urgency :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CUInt ->                                -- urgency : TInterface "Notify" "Urgency"
-    IO ()
-
-
-notificationSetUrgency ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    Urgency ->                              -- urgency
-    m ()
-notificationSetUrgency _obj urgency = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    let urgency' = (fromIntegral . fromEnum) urgency
-    notify_notification_set_urgency _obj' urgency'
-    touchManagedPtr _obj
-    return ()
-
--- method Notification::show
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : True
--- Skip return : False
-
-foreign import ccall "notify_notification_show" notify_notification_show :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    Ptr (Ptr GError) ->                     -- error
-    IO CInt
-
-
-notificationShow ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    m ()
-notificationShow _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    onException (do
-        _ <- propagateGError $ notify_notification_show _obj'
-        touchManagedPtr _obj
-        return ()
-     ) (do
-        return ()
-     )
-
--- method Notification::update
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_notification_update" notify_notification_update :: 
-    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
-    CString ->                              -- summary : TBasicType TUTF8
-    CString ->                              -- body : TBasicType TUTF8
-    CString ->                              -- icon : TBasicType TUTF8
-    IO CInt
-
-
-notificationUpdate ::
-    (MonadIO m, NotificationK a) =>
-    a ->                                    -- _obj
-    T.Text ->                               -- summary
-    Maybe (T.Text) ->                       -- body
-    Maybe (T.Text) ->                       -- icon
-    m Bool
-notificationUpdate _obj summary body icon = liftIO $ do
-    let _obj' = unsafeManagedPtrCastPtr _obj
-    summary' <- textToCString summary
-    maybeBody <- case body of
-        Nothing -> return nullPtr
-        Just jBody -> do
-            jBody' <- textToCString jBody
-            return jBody'
-    maybeIcon <- case icon of
-        Nothing -> return nullPtr
-        Just jIcon -> do
-            jIcon' <- textToCString jIcon
-            return jIcon'
-    result <- notify_notification_update _obj' summary' maybeBody maybeIcon
-    let result' = (/= 0) result
-    touchManagedPtr _obj
-    freeMem summary'
-    freeMem maybeBody
-    freeMem maybeIcon
-    return result'
-
--- signal Notification::closed
-type NotificationClosedCallback =
-    IO ()
-
-noNotificationClosedCallback :: Maybe NotificationClosedCallback
-noNotificationClosedCallback = Nothing
-
-type NotificationClosedCallbackC =
-    Ptr () ->                               -- object
-    Ptr () ->                               -- user_data
-    IO ()
-
-foreign import ccall "wrapper"
-    mkNotificationClosedCallback :: NotificationClosedCallbackC -> IO (FunPtr NotificationClosedCallbackC)
-
-notificationClosedClosure :: NotificationClosedCallback -> IO Closure
-notificationClosedClosure cb = newCClosure =<< mkNotificationClosedCallback wrapped
-    where wrapped = notificationClosedCallbackWrapper cb
-
-notificationClosedCallbackWrapper ::
-    NotificationClosedCallback ->
-    Ptr () ->
-    Ptr () ->
-    IO ()
-notificationClosedCallbackWrapper _cb _ _ = do
-    _cb 
-
-onNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
-onNotificationClosed obj cb = liftIO $ connectNotificationClosed obj cb SignalConnectBefore
-afterNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
-afterNotificationClosed obj cb = connectNotificationClosed obj cb SignalConnectAfter
-
-connectNotificationClosed :: (GObject a, MonadIO m) =>
-                             a -> NotificationClosedCallback -> SignalConnectMode -> m SignalHandlerId
-connectNotificationClosed obj cb after = liftIO $ do
-    cb' <- mkNotificationClosedCallback (notificationClosedCallbackWrapper cb)
-    connectSignalFunPtr obj "closed" cb' after
-
--- Enum Urgency
-
-data Urgency = 
-      UrgencyLow
-    | UrgencyNormal
-    | UrgencyCritical
-    | AnotherUrgency Int
-    deriving (Show, Eq)
-
-instance Enum Urgency where
-    fromEnum UrgencyLow = 0
-    fromEnum UrgencyNormal = 1
-    fromEnum UrgencyCritical = 2
-    fromEnum (AnotherUrgency k) = k
-
-    toEnum 0 = UrgencyLow
-    toEnum 1 = UrgencyNormal
-    toEnum 2 = UrgencyCritical
-    toEnum k = AnotherUrgency k
-
--- constant _EXPIRES_DEFAULT
-
-_EXPIRES_DEFAULT :: Int32
-_EXPIRES_DEFAULT = -1
--- constant _EXPIRES_NEVER
-
-_EXPIRES_NEVER :: Int32
-_EXPIRES_NEVER = 0
--- constant _VERSION_MAJOR
-
-_VERSION_MAJOR :: Int32
-_VERSION_MAJOR = 0
--- constant _VERSION_MICRO
-
-_VERSION_MICRO :: Int32
-_VERSION_MICRO = 6
--- constant _VERSION_MINOR
-
-_VERSION_MINOR :: Int32
-_VERSION_MINOR = 7
--- function notify_get_app_name
--- Args : []
--- Lengths : []
--- hInArgs : []
--- returnType : TBasicType TUTF8
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_get_app_name" notify_get_app_name :: 
-    IO CString
-
-
-getAppName ::
-    (MonadIO m) =>
-    m T.Text
-getAppName  = liftIO $ do
-    result <- notify_get_app_name
-    checkUnexpectedReturnNULL "notify_get_app_name" result
-    result' <- cstringToText result
-    return result'
-
--- function notify_get_server_caps
--- Args : []
--- Lengths : []
--- hInArgs : []
--- returnType : TGList (TBasicType TUTF8)
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_get_server_caps" notify_get_server_caps :: 
-    IO (Ptr (GList CString))
-
-
-getServerCaps ::
-    (MonadIO m) =>
-    m [T.Text]
-getServerCaps  = liftIO $ do
-    result <- notify_get_server_caps
-    checkUnexpectedReturnNULL "notify_get_server_caps" result
-    result' <- unpackGList result
-    result'' <- mapM cstringToText result'
-    mapGList freeMem result
-    g_list_free result
-    return result''
-
--- function notify_get_server_info
--- Args : [Arg {argName = "ret_name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_vendor", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_version", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_spec_version", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
--- Lengths : []
--- hInArgs : []
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_get_server_info" notify_get_server_info :: 
-    Ptr CString ->                          -- ret_name : TBasicType TUTF8
-    Ptr CString ->                          -- ret_vendor : TBasicType TUTF8
-    Ptr CString ->                          -- ret_version : TBasicType TUTF8
-    Ptr CString ->                          -- ret_spec_version : TBasicType TUTF8
-    IO CInt
-
-
-getServerInfo ::
-    (MonadIO m) =>
-    m (Bool,T.Text,T.Text,T.Text,T.Text)
-getServerInfo  = liftIO $ do
-    ret_name <- allocMem :: IO (Ptr CString)
-    ret_vendor <- allocMem :: IO (Ptr CString)
-    ret_version <- allocMem :: IO (Ptr CString)
-    ret_spec_version <- allocMem :: IO (Ptr CString)
-    result <- notify_get_server_info ret_name ret_vendor ret_version ret_spec_version
-    let result' = (/= 0) result
-    ret_name' <- peek ret_name
-    ret_name'' <- cstringToText ret_name'
-    freeMem ret_name'
-    ret_vendor' <- peek ret_vendor
-    ret_vendor'' <- cstringToText ret_vendor'
-    freeMem ret_vendor'
-    ret_version' <- peek ret_version
-    ret_version'' <- cstringToText ret_version'
-    freeMem ret_version'
-    ret_spec_version' <- peek ret_spec_version
-    ret_spec_version'' <- cstringToText ret_spec_version'
-    freeMem ret_spec_version'
-    freeMem ret_name
-    freeMem ret_vendor
-    freeMem ret_version
-    freeMem ret_spec_version
-    return (result', ret_name'', ret_vendor'', ret_version'', ret_spec_version'')
-
--- function notify_init
--- Args : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_init" notify_init :: 
-    CString ->                              -- app_name : TBasicType TUTF8
-    IO CInt
-
-
-init ::
-    (MonadIO m) =>
-    T.Text ->                               -- app_name
-    m Bool
-init app_name = liftIO $ do
-    app_name' <- textToCString app_name
-    result <- notify_init app_name'
-    let result' = (/= 0) result
-    freeMem app_name'
-    return result'
-
--- function notify_is_initted
--- Args : []
--- Lengths : []
--- hInArgs : []
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_is_initted" notify_is_initted :: 
-    IO CInt
-
-
-isInitted ::
-    (MonadIO m) =>
-    m Bool
-isInitted  = liftIO $ do
-    result <- notify_is_initted
-    let result' = (/= 0) result
-    return result'
-
--- function notify_set_app_name
--- Args : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_set_app_name" notify_set_app_name :: 
-    CString ->                              -- app_name : TBasicType TUTF8
-    IO ()
-
-
-setAppName ::
-    (MonadIO m) =>
-    T.Text ->                               -- app_name
-    m ()
-setAppName app_name = liftIO $ do
-    app_name' <- textToCString app_name
-    notify_set_app_name app_name'
-    freeMem app_name'
-    return ()
-
--- function notify_uninit
--- Args : []
--- Lengths : []
--- hInArgs : []
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "notify_uninit" notify_uninit :: 
-    IO ()
-
-
-uninit ::
-    (MonadIO m) =>
-    m ()
-uninit  = liftIO $ do
-    notify_uninit
-    return ()
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify
+    (     module GI.Notify.Callbacks              ,
+    module GI.Notify.Constants              ,
+    module GI.Notify.Enums                  ,
+    module GI.Notify.Functions              ,
+    module GI.Notify.Objects                ,
+
+
+    ) where
+
+import GI.Notify.Callbacks
+import GI.Notify.Constants
+import GI.Notify.Enums
+import GI.Notify.Functions
+import GI.Notify.Objects
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+import GI.Notify.Callbacks
+
 
diff --git a/GI/Notify/Callbacks.hs b/GI/Notify/Callbacks.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Callbacks.hs
@@ -0,0 +1,70 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Callbacks
+    ( 
+
+ -- * Signals
+-- ** ActionCallback
+    ActionCallback                          ,
+    ActionCallbackC                         ,
+    actionCallbackClosure                   ,
+    actionCallbackWrapper                   ,
+    mkActionCallback                        ,
+    noActionCallback                        ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+
+
+-- callback ActionCallback
+actionCallbackClosure :: ActionCallback -> IO Closure
+actionCallbackClosure cb = newCClosure =<< mkActionCallback wrapped
+    where wrapped = actionCallbackWrapper Nothing cb
+
+type ActionCallbackC =
+    Ptr Notification ->
+    CString ->
+    Ptr () ->
+    IO ()
+
+foreign import ccall "wrapper"
+    mkActionCallback :: ActionCallbackC -> IO (FunPtr ActionCallbackC)
+
+type ActionCallback =
+    Notification ->
+    T.Text ->
+    IO ()
+
+noActionCallback :: Maybe ActionCallback
+noActionCallback = Nothing
+
+actionCallbackWrapper ::
+    Maybe (Ptr (FunPtr (ActionCallbackC))) ->
+    ActionCallback ->
+    Ptr Notification ->
+    CString ->
+    Ptr () ->
+    IO ()
+actionCallbackWrapper funptrptr _cb notification action _ = do
+    notification' <- (newObject Notification) notification
+    action' <- cstringToText action
+    _cb  notification' action'
+    maybeReleaseFunPtr funptrptr
+
+
diff --git a/GI/Notify/Constants.hs b/GI/Notify/Constants.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Constants.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, ViewPatterns #-}
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Constants
+    ( 
+    pattern VERSION_MINOR                   ,
+    pattern VERSION_MICRO                   ,
+    pattern VERSION_MAJOR                   ,
+    pattern EXPIRES_NEVER                   ,
+    pattern EXPIRES_DEFAULT                 ,
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+import GI.Notify.Callbacks
+
+
+pattern VERSION_MINOR = 7 :: Int32
+
+
+pattern VERSION_MICRO = 6 :: Int32
+
+
+pattern VERSION_MAJOR = 0 :: Int32
+
+
+pattern EXPIRES_NEVER = 0 :: Int32
+
+
+pattern EXPIRES_DEFAULT = -1 :: Int32
+
+
diff --git a/GI/Notify/Enums.hs b/GI/Notify/Enums.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Enums.hs
@@ -0,0 +1,47 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Enums
+    ( 
+
+-- * Exported types
+    Urgency(..)                             ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+
+
+
+-- Enum Urgency
+
+data Urgency = 
+      UrgencyLow
+    | UrgencyNormal
+    | UrgencyCritical
+    | AnotherUrgency Int
+    deriving (Show, Eq)
+
+instance Enum Urgency where
+    fromEnum UrgencyLow = 0
+    fromEnum UrgencyNormal = 1
+    fromEnum UrgencyCritical = 2
+    fromEnum (AnotherUrgency k) = k
+
+    toEnum 0 = UrgencyLow
+    toEnum 1 = UrgencyNormal
+    toEnum 2 = UrgencyCritical
+    toEnum k = AnotherUrgency k
+
+
diff --git a/GI/Notify/Functions.hs b/GI/Notify/Functions.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Functions.hs
@@ -0,0 +1,236 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Functions
+    ( 
+
+ -- * Methods
+-- ** getAppName
+    getAppName                              ,
+
+
+-- ** getServerCaps
+    getServerCaps                           ,
+
+
+-- ** getServerInfo
+    getServerInfo                           ,
+
+
+-- ** init
+    init                                    ,
+
+
+-- ** isInitted
+    isInitted                               ,
+
+
+-- ** setAppName
+    setAppName                              ,
+
+
+-- ** uninit
+    uninit                                  ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+import GI.Notify.Callbacks
+
+-- function notify_uninit
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_uninit" notify_uninit :: 
+    IO ()
+
+
+uninit ::
+    (MonadIO m) =>
+    m ()
+uninit  = liftIO $ do
+    notify_uninit
+    return ()
+
+
+-- function notify_set_app_name
+-- Args : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_set_app_name" notify_set_app_name :: 
+    CString ->                              -- app_name : TBasicType TUTF8
+    IO ()
+
+
+setAppName ::
+    (MonadIO m) =>
+    T.Text ->                               -- app_name
+    m ()
+setAppName app_name = liftIO $ do
+    app_name' <- textToCString app_name
+    notify_set_app_name app_name'
+    freeMem app_name'
+    return ()
+
+
+-- function notify_is_initted
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_is_initted" notify_is_initted :: 
+    IO CInt
+
+
+isInitted ::
+    (MonadIO m) =>
+    m Bool
+isInitted  = liftIO $ do
+    result <- notify_is_initted
+    let result' = (/= 0) result
+    return result'
+
+
+-- function notify_init
+-- Args : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_init" notify_init :: 
+    CString ->                              -- app_name : TBasicType TUTF8
+    IO CInt
+
+
+init ::
+    (MonadIO m) =>
+    T.Text ->                               -- app_name
+    m Bool
+init app_name = liftIO $ do
+    app_name' <- textToCString app_name
+    result <- notify_init app_name'
+    let result' = (/= 0) result
+    freeMem app_name'
+    return result'
+
+
+-- function notify_get_server_info
+-- Args : [Arg {argName = "ret_name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_vendor", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_version", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "ret_spec_version", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_get_server_info" notify_get_server_info :: 
+    Ptr CString ->                          -- ret_name : TBasicType TUTF8
+    Ptr CString ->                          -- ret_vendor : TBasicType TUTF8
+    Ptr CString ->                          -- ret_version : TBasicType TUTF8
+    Ptr CString ->                          -- ret_spec_version : TBasicType TUTF8
+    IO CInt
+
+
+getServerInfo ::
+    (MonadIO m) =>
+    m (Bool,T.Text,T.Text,T.Text,T.Text)
+getServerInfo  = liftIO $ do
+    ret_name <- allocMem :: IO (Ptr CString)
+    ret_vendor <- allocMem :: IO (Ptr CString)
+    ret_version <- allocMem :: IO (Ptr CString)
+    ret_spec_version <- allocMem :: IO (Ptr CString)
+    result <- notify_get_server_info ret_name ret_vendor ret_version ret_spec_version
+    let result' = (/= 0) result
+    ret_name' <- peek ret_name
+    ret_name'' <- cstringToText ret_name'
+    freeMem ret_name'
+    ret_vendor' <- peek ret_vendor
+    ret_vendor'' <- cstringToText ret_vendor'
+    freeMem ret_vendor'
+    ret_version' <- peek ret_version
+    ret_version'' <- cstringToText ret_version'
+    freeMem ret_version'
+    ret_spec_version' <- peek ret_spec_version
+    ret_spec_version'' <- cstringToText ret_spec_version'
+    freeMem ret_spec_version'
+    freeMem ret_name
+    freeMem ret_vendor
+    freeMem ret_version
+    freeMem ret_spec_version
+    return (result', ret_name'', ret_vendor'', ret_version'', ret_spec_version'')
+
+
+-- function notify_get_server_caps
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TGList (TBasicType TUTF8)
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_get_server_caps" notify_get_server_caps :: 
+    IO (Ptr (GList CString))
+
+
+getServerCaps ::
+    (MonadIO m) =>
+    m [T.Text]
+getServerCaps  = liftIO $ do
+    result <- notify_get_server_caps
+    checkUnexpectedReturnNULL "notify_get_server_caps" result
+    result' <- unpackGList result
+    result'' <- mapM cstringToText result'
+    mapGList freeMem result
+    g_list_free result
+    return result''
+
+
+-- function notify_get_app_name
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_get_app_name" notify_get_app_name :: 
+    IO CString
+
+
+getAppName ::
+    (MonadIO m) =>
+    m T.Text
+getAppName  = liftIO $ do
+    result <- notify_get_app_name
+    checkUnexpectedReturnNULL "notify_get_app_name" result
+    result' <- cstringToText result
+    return result'
+
+
+
diff --git a/GI/Notify/Objects.hs b/GI/Notify/Objects.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Objects.hs
@@ -0,0 +1,26 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Objects
+    (     module GI.Notify.Objects.Notification   ,
+
+
+    ) where
+
+import GI.Notify.Objects.Notification
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+import GI.Notify.Callbacks
+
+
diff --git a/GI/Notify/Objects/Notification.hs b/GI/Notify/Objects/Notification.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Objects/Notification.hs
@@ -0,0 +1,1027 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Notify.Objects.Notification
+    ( 
+
+-- * Exported types
+    Notification(..)                        ,
+    NotificationK                           ,
+    toNotification                          ,
+    noNotification                          ,
+
+
+ -- * Methods
+-- ** notificationAddAction
+    notificationAddAction                   ,
+
+
+-- ** notificationClearActions
+    notificationClearActions                ,
+
+
+-- ** notificationClearHints
+    notificationClearHints                  ,
+
+
+-- ** notificationClose
+    notificationClose                       ,
+
+
+-- ** notificationGetClosedReason
+    notificationGetClosedReason             ,
+
+
+-- ** notificationNew
+    notificationNew                         ,
+
+
+-- ** notificationSetAppName
+    notificationSetAppName                  ,
+
+
+-- ** notificationSetCategory
+    notificationSetCategory                 ,
+
+
+-- ** notificationSetHint
+    notificationSetHint                     ,
+
+
+-- ** notificationSetHintByte
+    notificationSetHintByte                 ,
+
+
+-- ** notificationSetHintByteArray
+    notificationSetHintByteArray            ,
+
+
+-- ** notificationSetHintDouble
+    notificationSetHintDouble               ,
+
+
+-- ** notificationSetHintInt32
+    notificationSetHintInt32                ,
+
+
+-- ** notificationSetHintString
+    notificationSetHintString               ,
+
+
+-- ** notificationSetHintUint32
+    notificationSetHintUint32               ,
+
+
+-- ** notificationSetIconFromPixbuf
+    notificationSetIconFromPixbuf           ,
+
+
+-- ** notificationSetImageFromPixbuf
+    notificationSetImageFromPixbuf          ,
+
+
+-- ** notificationSetTimeout
+    notificationSetTimeout                  ,
+
+
+-- ** notificationSetUrgency
+    notificationSetUrgency                  ,
+
+
+-- ** notificationShow
+    notificationShow                        ,
+
+
+-- ** notificationUpdate
+    notificationUpdate                      ,
+
+
+
+
+ -- * Properties
+-- ** AppName
+    NotificationAppNamePropertyInfo         ,
+    constructNotificationAppName            ,
+    getNotificationAppName                  ,
+    setNotificationAppName                  ,
+
+
+-- ** Body
+    NotificationBodyPropertyInfo            ,
+    constructNotificationBody               ,
+    getNotificationBody                     ,
+    setNotificationBody                     ,
+
+
+-- ** ClosedReason
+    NotificationClosedReasonPropertyInfo    ,
+    getNotificationClosedReason             ,
+
+
+-- ** IconName
+    NotificationIconNamePropertyInfo        ,
+    constructNotificationIconName           ,
+    getNotificationIconName                 ,
+    setNotificationIconName                 ,
+
+
+-- ** Id
+    NotificationIdPropertyInfo              ,
+    constructNotificationId                 ,
+    getNotificationId                       ,
+    setNotificationId                       ,
+
+
+-- ** Summary
+    NotificationSummaryPropertyInfo         ,
+    constructNotificationSummary            ,
+    getNotificationSummary                  ,
+    setNotificationSummary                  ,
+
+
+
+
+ -- * Signals
+-- ** Closed
+    NotificationClosedCallback              ,
+    NotificationClosedCallbackC             ,
+    NotificationClosedSignalInfo            ,
+    afterNotificationClosed                 ,
+    mkNotificationClosedCallback            ,
+    noNotificationClosedCallback            ,
+    notificationClosedCallbackWrapper       ,
+    notificationClosedClosure               ,
+    onNotificationClosed                    ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Notify.Types
+import GI.Notify.Callbacks
+import qualified GI.GLib as GLib
+import qualified GI.GObject as GObject
+import qualified GI.GdkPixbuf as GdkPixbuf
+
+newtype Notification = Notification (ForeignPtr Notification)
+foreign import ccall "notify_notification_get_type"
+    c_notify_notification_get_type :: IO GType
+
+type instance ParentTypes Notification = NotificationParentTypes
+type NotificationParentTypes = '[GObject.Object]
+
+instance GObject Notification where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_notify_notification_get_type
+    
+
+class GObject o => NotificationK o
+instance (GObject o, IsDescendantOf Notification o) => NotificationK o
+
+toNotification :: NotificationK o => o -> IO Notification
+toNotification = unsafeCastTo Notification
+
+noNotification :: Maybe Notification
+noNotification = Nothing
+
+-- signal Notification::closed
+type NotificationClosedCallback =
+    IO ()
+
+noNotificationClosedCallback :: Maybe NotificationClosedCallback
+noNotificationClosedCallback = Nothing
+
+type NotificationClosedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkNotificationClosedCallback :: NotificationClosedCallbackC -> IO (FunPtr NotificationClosedCallbackC)
+
+notificationClosedClosure :: NotificationClosedCallback -> IO Closure
+notificationClosedClosure cb = newCClosure =<< mkNotificationClosedCallback wrapped
+    where wrapped = notificationClosedCallbackWrapper cb
+
+notificationClosedCallbackWrapper ::
+    NotificationClosedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+notificationClosedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
+onNotificationClosed obj cb = liftIO $ connectNotificationClosed obj cb SignalConnectBefore
+afterNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
+afterNotificationClosed obj cb = connectNotificationClosed obj cb SignalConnectAfter
+
+connectNotificationClosed :: (GObject a, MonadIO m) =>
+                             a -> NotificationClosedCallback -> SignalConnectMode -> m SignalHandlerId
+connectNotificationClosed obj cb after = liftIO $ do
+    cb' <- mkNotificationClosedCallback (notificationClosedCallbackWrapper cb)
+    connectSignalFunPtr obj "closed" cb' after
+
+-- VVV Prop "app-name"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getNotificationAppName :: (MonadIO m, NotificationK o) => o -> m T.Text
+getNotificationAppName obj = liftIO $ getObjectPropertyString obj "app-name"
+
+setNotificationAppName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
+setNotificationAppName obj val = liftIO $ setObjectPropertyString obj "app-name" val
+
+constructNotificationAppName :: T.Text -> IO ([Char], GValue)
+constructNotificationAppName val = constructObjectPropertyString "app-name" val
+
+data NotificationAppNamePropertyInfo
+instance AttrInfo NotificationAppNamePropertyInfo where
+    type AttrAllowedOps NotificationAppNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint NotificationAppNamePropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint NotificationAppNamePropertyInfo = NotificationK
+    type AttrGetType NotificationAppNamePropertyInfo = T.Text
+    type AttrLabel NotificationAppNamePropertyInfo = "Notification::app-name"
+    attrGet _ = getNotificationAppName
+    attrSet _ = setNotificationAppName
+    attrConstruct _ = constructNotificationAppName
+
+-- VVV Prop "body"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
+
+getNotificationBody :: (MonadIO m, NotificationK o) => o -> m T.Text
+getNotificationBody obj = liftIO $ getObjectPropertyString obj "body"
+
+setNotificationBody :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
+setNotificationBody obj val = liftIO $ setObjectPropertyString obj "body" val
+
+constructNotificationBody :: T.Text -> IO ([Char], GValue)
+constructNotificationBody val = constructObjectPropertyString "body" val
+
+data NotificationBodyPropertyInfo
+instance AttrInfo NotificationBodyPropertyInfo where
+    type AttrAllowedOps NotificationBodyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint NotificationBodyPropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint NotificationBodyPropertyInfo = NotificationK
+    type AttrGetType NotificationBodyPropertyInfo = T.Text
+    type AttrLabel NotificationBodyPropertyInfo = "Notification::body"
+    attrGet _ = getNotificationBody
+    attrSet _ = setNotificationBody
+    attrConstruct _ = constructNotificationBody
+
+-- VVV Prop "closed-reason"
+   -- Type: TBasicType TInt32
+   -- Flags: [PropertyReadable]
+
+getNotificationClosedReason :: (MonadIO m, NotificationK o) => o -> m Int32
+getNotificationClosedReason obj = liftIO $ getObjectPropertyCInt obj "closed-reason"
+
+data NotificationClosedReasonPropertyInfo
+instance AttrInfo NotificationClosedReasonPropertyInfo where
+    type AttrAllowedOps NotificationClosedReasonPropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint NotificationClosedReasonPropertyInfo = (~) ()
+    type AttrBaseTypeConstraint NotificationClosedReasonPropertyInfo = NotificationK
+    type AttrGetType NotificationClosedReasonPropertyInfo = Int32
+    type AttrLabel NotificationClosedReasonPropertyInfo = "Notification::closed-reason"
+    attrGet _ = getNotificationClosedReason
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "icon-name"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
+
+getNotificationIconName :: (MonadIO m, NotificationK o) => o -> m T.Text
+getNotificationIconName obj = liftIO $ getObjectPropertyString obj "icon-name"
+
+setNotificationIconName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
+setNotificationIconName obj val = liftIO $ setObjectPropertyString obj "icon-name" val
+
+constructNotificationIconName :: T.Text -> IO ([Char], GValue)
+constructNotificationIconName val = constructObjectPropertyString "icon-name" val
+
+data NotificationIconNamePropertyInfo
+instance AttrInfo NotificationIconNamePropertyInfo where
+    type AttrAllowedOps NotificationIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint NotificationIconNamePropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint NotificationIconNamePropertyInfo = NotificationK
+    type AttrGetType NotificationIconNamePropertyInfo = T.Text
+    type AttrLabel NotificationIconNamePropertyInfo = "Notification::icon-name"
+    attrGet _ = getNotificationIconName
+    attrSet _ = setNotificationIconName
+    attrConstruct _ = constructNotificationIconName
+
+-- VVV Prop "id"
+   -- Type: TBasicType TInt32
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
+
+getNotificationId :: (MonadIO m, NotificationK o) => o -> m Int32
+getNotificationId obj = liftIO $ getObjectPropertyCInt obj "id"
+
+setNotificationId :: (MonadIO m, NotificationK o) => o -> Int32 -> m ()
+setNotificationId obj val = liftIO $ setObjectPropertyCInt obj "id" val
+
+constructNotificationId :: Int32 -> IO ([Char], GValue)
+constructNotificationId val = constructObjectPropertyCInt "id" val
+
+data NotificationIdPropertyInfo
+instance AttrInfo NotificationIdPropertyInfo where
+    type AttrAllowedOps NotificationIdPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint NotificationIdPropertyInfo = (~) Int32
+    type AttrBaseTypeConstraint NotificationIdPropertyInfo = NotificationK
+    type AttrGetType NotificationIdPropertyInfo = Int32
+    type AttrLabel NotificationIdPropertyInfo = "Notification::id"
+    attrGet _ = getNotificationId
+    attrSet _ = setNotificationId
+    attrConstruct _ = constructNotificationId
+
+-- VVV Prop "summary"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
+
+getNotificationSummary :: (MonadIO m, NotificationK o) => o -> m T.Text
+getNotificationSummary obj = liftIO $ getObjectPropertyString obj "summary"
+
+setNotificationSummary :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
+setNotificationSummary obj val = liftIO $ setObjectPropertyString obj "summary" val
+
+constructNotificationSummary :: T.Text -> IO ([Char], GValue)
+constructNotificationSummary val = constructObjectPropertyString "summary" val
+
+data NotificationSummaryPropertyInfo
+instance AttrInfo NotificationSummaryPropertyInfo where
+    type AttrAllowedOps NotificationSummaryPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint NotificationSummaryPropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint NotificationSummaryPropertyInfo = NotificationK
+    type AttrGetType NotificationSummaryPropertyInfo = T.Text
+    type AttrLabel NotificationSummaryPropertyInfo = "Notification::summary"
+    attrGet _ = getNotificationSummary
+    attrSet _ = setNotificationSummary
+    attrConstruct _ = constructNotificationSummary
+
+type instance AttributeList Notification = NotificationAttributeList
+type NotificationAttributeList = ('[ '("app-name", NotificationAppNamePropertyInfo), '("body", NotificationBodyPropertyInfo), '("closed-reason", NotificationClosedReasonPropertyInfo), '("icon-name", NotificationIconNamePropertyInfo), '("id", NotificationIdPropertyInfo), '("summary", NotificationSummaryPropertyInfo)] :: [(Symbol, *)])
+
+data NotificationClosedSignalInfo
+instance SignalInfo NotificationClosedSignalInfo where
+    type HaskellCallbackType NotificationClosedSignalInfo = NotificationClosedCallback
+    connectSignal _ = connectNotificationClosed
+
+type instance SignalList Notification = NotificationSignalList
+type NotificationSignalList = ('[ '("closed", NotificationClosedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- method Notification::new
+-- method type : Constructor
+-- Args : [Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Notify" "Notification"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_new" notify_notification_new :: 
+    CString ->                              -- summary : TBasicType TUTF8
+    CString ->                              -- body : TBasicType TUTF8
+    CString ->                              -- icon : TBasicType TUTF8
+    IO (Ptr Notification)
+
+
+notificationNew ::
+    (MonadIO m) =>
+    T.Text ->                               -- summary
+    Maybe (T.Text) ->                       -- body
+    Maybe (T.Text) ->                       -- icon
+    m Notification
+notificationNew summary body icon = liftIO $ do
+    summary' <- textToCString summary
+    maybeBody <- case body of
+        Nothing -> return nullPtr
+        Just jBody -> do
+            jBody' <- textToCString jBody
+            return jBody'
+    maybeIcon <- case icon of
+        Nothing -> return nullPtr
+        Just jIcon -> do
+            jIcon' <- textToCString jIcon
+            return jIcon'
+    result <- notify_notification_new summary' maybeBody maybeIcon
+    checkUnexpectedReturnNULL "notify_notification_new" result
+    result' <- (wrapObject Notification) result
+    freeMem summary'
+    freeMem maybeBody
+    freeMem maybeIcon
+    return result'
+
+-- method Notification::add_action
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Notify" "ActionCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 4, argDestroy = 5, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "free_func", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Notify" "ActionCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 4, argDestroy = 5, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_add_action" notify_notification_add_action :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- action : TBasicType TUTF8
+    CString ->                              -- label : TBasicType TUTF8
+    FunPtr ActionCallbackC ->               -- callback : TInterface "Notify" "ActionCallback"
+    Ptr () ->                               -- user_data : TBasicType TVoid
+    FunPtr GLib.DestroyNotifyC ->           -- free_func : TInterface "GLib" "DestroyNotify"
+    IO ()
+
+
+notificationAddAction ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- action
+    T.Text ->                               -- label
+    ActionCallback ->                       -- callback
+    m ()
+notificationAddAction _obj action label callback = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    action' <- textToCString action
+    label' <- textToCString label
+    callback' <- mkActionCallback (actionCallbackWrapper Nothing callback)
+    let user_data = castFunPtrToPtr callback'
+    let free_func = safeFreeFunPtrPtr
+    notify_notification_add_action _obj' action' label' callback' user_data free_func
+    touchManagedPtr _obj
+    freeMem action'
+    freeMem label'
+    return ()
+
+-- method Notification::clear_actions
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_clear_actions" notify_notification_clear_actions :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    IO ()
+
+
+notificationClearActions ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    m ()
+notificationClearActions _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    notify_notification_clear_actions _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Notification::clear_hints
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_clear_hints" notify_notification_clear_hints :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    IO ()
+
+
+notificationClearHints ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    m ()
+notificationClearHints _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    notify_notification_clear_hints _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Notification::close
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "notify_notification_close" notify_notification_close :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+notificationClose ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    m ()
+notificationClose _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    onException (do
+        _ <- propagateGError $ notify_notification_close _obj'
+        touchManagedPtr _obj
+        return ()
+     ) (do
+        return ()
+     )
+
+-- method Notification::get_closed_reason
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_get_closed_reason" notify_notification_get_closed_reason :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    IO Int32
+
+
+notificationGetClosedReason ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    m Int32
+notificationGetClosedReason _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- notify_notification_get_closed_reason _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Notification::set_app_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_app_name" notify_notification_set_app_name :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- app_name : TBasicType TUTF8
+    IO ()
+
+
+notificationSetAppName ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- app_name
+    m ()
+notificationSetAppName _obj app_name = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    app_name' <- textToCString app_name
+    notify_notification_set_app_name _obj' app_name'
+    touchManagedPtr _obj
+    freeMem app_name'
+    return ()
+
+-- method Notification::set_category
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_category" notify_notification_set_category :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- category : TBasicType TUTF8
+    IO ()
+
+
+notificationSetCategory ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- category
+    m ()
+notificationSetCategory _obj category = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    category' <- textToCString category
+    notify_notification_set_category _obj' category'
+    touchManagedPtr _obj
+    freeMem category'
+    return ()
+
+-- method Notification::set_hint
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint" notify_notification_set_hint :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    Ptr GVariant ->                         -- value : TVariant
+    IO ()
+
+
+notificationSetHint ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Maybe (GVariant) ->                     -- value
+    m ()
+notificationSetHint _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    maybeValue <- case value of
+        Nothing -> return nullPtr
+        Just jValue -> do
+            let jValue' = unsafeManagedPtrGetPtr jValue
+            return jValue'
+    notify_notification_set_hint _obj' key' maybeValue
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_hint_byte
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_byte" notify_notification_set_hint_byte :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    Word8 ->                                -- value : TBasicType TUInt8
+    IO ()
+
+{-# DEPRECATED notificationSetHintByte ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintByte ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Word8 ->                                -- value
+    m ()
+notificationSetHintByte _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    notify_notification_set_hint_byte _obj' key' value
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_hint_byte_array
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_byte_array" notify_notification_set_hint_byte_array :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    Word8 ->                                -- value : TBasicType TUInt8
+    Word64 ->                               -- len : TBasicType TUInt64
+    IO ()
+
+{-# DEPRECATED notificationSetHintByteArray ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintByteArray ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Word8 ->                                -- value
+    Word64 ->                               -- len
+    m ()
+notificationSetHintByteArray _obj key value len = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    notify_notification_set_hint_byte_array _obj' key' value len
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_hint_double
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_double" notify_notification_set_hint_double :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    CDouble ->                              -- value : TBasicType TDouble
+    IO ()
+
+{-# DEPRECATED notificationSetHintDouble ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintDouble ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Double ->                               -- value
+    m ()
+notificationSetHintDouble _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    let value' = realToFrac value
+    notify_notification_set_hint_double _obj' key' value'
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_hint_int32
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_int32" notify_notification_set_hint_int32 :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    Int32 ->                                -- value : TBasicType TInt32
+    IO ()
+
+{-# DEPRECATED notificationSetHintInt32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintInt32 ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Int32 ->                                -- value
+    m ()
+notificationSetHintInt32 _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    notify_notification_set_hint_int32 _obj' key' value
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_hint_string
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_string" notify_notification_set_hint_string :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    CString ->                              -- value : TBasicType TUTF8
+    IO ()
+
+{-# DEPRECATED notificationSetHintString ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintString ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    T.Text ->                               -- value
+    m ()
+notificationSetHintString _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    value' <- textToCString value
+    notify_notification_set_hint_string _obj' key' value'
+    touchManagedPtr _obj
+    freeMem key'
+    freeMem value'
+    return ()
+
+-- method Notification::set_hint_uint32
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_hint_uint32" notify_notification_set_hint_uint32 :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- key : TBasicType TUTF8
+    Word32 ->                               -- value : TBasicType TUInt32
+    IO ()
+
+{-# DEPRECATED notificationSetHintUint32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
+notificationSetHintUint32 ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- key
+    Word32 ->                               -- value
+    m ()
+notificationSetHintUint32 _obj key value = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    key' <- textToCString key
+    notify_notification_set_hint_uint32 _obj' key' value
+    touchManagedPtr _obj
+    freeMem key'
+    return ()
+
+-- method Notification::set_icon_from_pixbuf
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_icon_from_pixbuf" notify_notification_set_icon_from_pixbuf :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    Ptr GdkPixbuf.Pixbuf ->                 -- icon : TInterface "GdkPixbuf" "Pixbuf"
+    IO ()
+
+{-# DEPRECATED notificationSetIconFromPixbuf ["use notify_notification_set_image_from_pixbuf() instead."]#-}
+notificationSetIconFromPixbuf ::
+    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- icon
+    m ()
+notificationSetIconFromPixbuf _obj icon = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let icon' = unsafeManagedPtrCastPtr icon
+    notify_notification_set_icon_from_pixbuf _obj' icon'
+    touchManagedPtr _obj
+    touchManagedPtr icon
+    return ()
+
+-- method Notification::set_image_from_pixbuf
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_image_from_pixbuf" notify_notification_set_image_from_pixbuf :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
+    IO ()
+
+
+notificationSetImageFromPixbuf ::
+    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- pixbuf
+    m ()
+notificationSetImageFromPixbuf _obj pixbuf = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
+    notify_notification_set_image_from_pixbuf _obj' pixbuf'
+    touchManagedPtr _obj
+    touchManagedPtr pixbuf
+    return ()
+
+-- method Notification::set_timeout
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timeout", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timeout", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_timeout" notify_notification_set_timeout :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    Int32 ->                                -- timeout : TBasicType TInt32
+    IO ()
+
+
+notificationSetTimeout ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- timeout
+    m ()
+notificationSetTimeout _obj timeout = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    notify_notification_set_timeout _obj' timeout
+    touchManagedPtr _obj
+    return ()
+
+-- method Notification::set_urgency
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgency", argType = TInterface "Notify" "Urgency", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "urgency", argType = TInterface "Notify" "Urgency", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_set_urgency" notify_notification_set_urgency :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CUInt ->                                -- urgency : TInterface "Notify" "Urgency"
+    IO ()
+
+
+notificationSetUrgency ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    Urgency ->                              -- urgency
+    m ()
+notificationSetUrgency _obj urgency = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let urgency' = (fromIntegral . fromEnum) urgency
+    notify_notification_set_urgency _obj' urgency'
+    touchManagedPtr _obj
+    return ()
+
+-- method Notification::show
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "notify_notification_show" notify_notification_show :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+notificationShow ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    m ()
+notificationShow _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    onException (do
+        _ <- propagateGError $ notify_notification_show _obj'
+        touchManagedPtr _obj
+        return ()
+     ) (do
+        return ()
+     )
+
+-- method Notification::update
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "notify_notification_update" notify_notification_update :: 
+    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
+    CString ->                              -- summary : TBasicType TUTF8
+    CString ->                              -- body : TBasicType TUTF8
+    CString ->                              -- icon : TBasicType TUTF8
+    IO CInt
+
+
+notificationUpdate ::
+    (MonadIO m, NotificationK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- summary
+    Maybe (T.Text) ->                       -- body
+    Maybe (T.Text) ->                       -- icon
+    m Bool
+notificationUpdate _obj summary body icon = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    summary' <- textToCString summary
+    maybeBody <- case body of
+        Nothing -> return nullPtr
+        Just jBody -> do
+            jBody' <- textToCString jBody
+            return jBody'
+    maybeIcon <- case icon of
+        Nothing -> return nullPtr
+        Just jIcon -> do
+            jIcon' <- textToCString jIcon
+            return jIcon'
+    result <- notify_notification_update _obj' summary' maybeBody maybeIcon
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    freeMem summary'
+    freeMem maybeBody
+    freeMem maybeIcon
+    return result'
+
+
diff --git a/GI/Notify/Objects/Notification.hs-boot b/GI/Notify/Objects/Notification.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Objects/Notification.hs-boot
@@ -0,0 +1,20 @@
+module GI.Notify.Objects.Notification where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Notification = Notification (ForeignPtr Notification)
+instance GObject Notification where
+class GObject o => NotificationK o
+instance (GObject o, IsDescendantOf Notification o) => NotificationK o
+data NotificationAppNamePropertyInfo
+data NotificationBodyPropertyInfo
+data NotificationClosedReasonPropertyInfo
+data NotificationIconNamePropertyInfo
+data NotificationIdPropertyInfo
+data NotificationSummaryPropertyInfo
+data NotificationClosedSignalInfo
diff --git a/GI/Notify/Types.hs b/GI/Notify/Types.hs
new file mode 100644
--- /dev/null
+++ b/GI/Notify/Types.hs
@@ -0,0 +1,12 @@
+module GI.Notify.Types
+    (     module GI.Notify.Objects.Notification   ,
+    module GI.Notify.Enums                  ,
+
+
+    ) where
+
+
+import {-# SOURCE #-} GI.Notify.Objects.Notification
+
+import GI.Notify.Enums
+
diff --git a/GI/NotifyAttributes.hs b/GI/NotifyAttributes.hs
deleted file mode 100644
--- a/GI/NotifyAttributes.hs
+++ /dev/null
@@ -1,188 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-}
-
--- Generated code.
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
-{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
-    TypeFamilies, MultiParamTypeClasses, KindSignatures,
-    FlexibleInstances, UndecidableInstances, DataKinds,
-    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
-
-module GI.NotifyAttributes where
-
-import Prelude ()
-import Data.GI.Base.ShortPrelude
-import Data.Char
-import Data.Int
-import Data.Word
-import qualified Data.ByteString.Char8 as B
-import Data.ByteString.Char8 (ByteString)
-import qualified Data.Map as Map
-import Foreign.C
-import Foreign.Ptr
-import Foreign.ForeignPtr
-import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
-import Foreign.Storable (peek, poke, sizeOf)
-import Control.Applicative ((<$>))
-import Control.Exception (onException)
-import Control.Monad.IO.Class
-import qualified Data.Text as T
-
-import Data.GI.Base.Attributes hiding (get, set)
-import Data.GI.Base.BasicTypes
-import Data.GI.Base.BasicConversions
-import Data.GI.Base.Closure
-import Data.GI.Base.GError
-import Data.GI.Base.GHashTable
-import Data.GI.Base.GParamSpec
-import Data.GI.Base.GVariant
-import Data.GI.Base.GValue
-import Data.GI.Base.ManagedPtr
-import Data.GI.Base.Overloading
-import Data.GI.Base.Properties hiding (new)
-import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
-import Data.GI.Base.Utils
-
-import GI.Notify
-
--- VVV Prop "app-name"
-   -- Type: TBasicType TUTF8
-   -- Flags: [PropertyReadable,PropertyWritable]
-
-getNotificationAppName :: (MonadIO m, NotificationK o) => o -> m T.Text
-getNotificationAppName obj = liftIO $ getObjectPropertyString obj "app-name"
-
-setNotificationAppName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
-setNotificationAppName obj val = liftIO $ setObjectPropertyString obj "app-name" val
-
-constructNotificationAppName :: T.Text -> IO ([Char], GValue)
-constructNotificationAppName val = constructObjectPropertyString "app-name" val
-
-data NotificationAppNamePropertyInfo
-instance AttrInfo NotificationAppNamePropertyInfo where
-    type AttrAllowedOps NotificationAppNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
-    type AttrSetTypeConstraint NotificationAppNamePropertyInfo = (~) T.Text
-    type AttrBaseTypeConstraint NotificationAppNamePropertyInfo = NotificationK
-    type AttrGetType NotificationAppNamePropertyInfo = T.Text
-    type AttrLabel NotificationAppNamePropertyInfo = "Notification::app-name"
-    attrGet _ = getNotificationAppName
-    attrSet _ = setNotificationAppName
-    attrConstruct _ = constructNotificationAppName
-
--- VVV Prop "body"
-   -- Type: TBasicType TUTF8
-   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
-
-getNotificationBody :: (MonadIO m, NotificationK o) => o -> m T.Text
-getNotificationBody obj = liftIO $ getObjectPropertyString obj "body"
-
-setNotificationBody :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
-setNotificationBody obj val = liftIO $ setObjectPropertyString obj "body" val
-
-constructNotificationBody :: T.Text -> IO ([Char], GValue)
-constructNotificationBody val = constructObjectPropertyString "body" val
-
-data NotificationBodyPropertyInfo
-instance AttrInfo NotificationBodyPropertyInfo where
-    type AttrAllowedOps NotificationBodyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
-    type AttrSetTypeConstraint NotificationBodyPropertyInfo = (~) T.Text
-    type AttrBaseTypeConstraint NotificationBodyPropertyInfo = NotificationK
-    type AttrGetType NotificationBodyPropertyInfo = T.Text
-    type AttrLabel NotificationBodyPropertyInfo = "Notification::body"
-    attrGet _ = getNotificationBody
-    attrSet _ = setNotificationBody
-    attrConstruct _ = constructNotificationBody
-
--- VVV Prop "closed-reason"
-   -- Type: TBasicType TInt32
-   -- Flags: [PropertyReadable]
-
-getNotificationClosedReason :: (MonadIO m, NotificationK o) => o -> m Int32
-getNotificationClosedReason obj = liftIO $ getObjectPropertyCInt obj "closed-reason"
-
-data NotificationClosedReasonPropertyInfo
-instance AttrInfo NotificationClosedReasonPropertyInfo where
-    type AttrAllowedOps NotificationClosedReasonPropertyInfo = '[ 'AttrGet]
-    type AttrSetTypeConstraint NotificationClosedReasonPropertyInfo = (~) ()
-    type AttrBaseTypeConstraint NotificationClosedReasonPropertyInfo = NotificationK
-    type AttrGetType NotificationClosedReasonPropertyInfo = Int32
-    type AttrLabel NotificationClosedReasonPropertyInfo = "Notification::closed-reason"
-    attrGet _ = getNotificationClosedReason
-    attrSet _ = undefined
-    attrConstruct _ = undefined
-
--- VVV Prop "icon-name"
-   -- Type: TBasicType TUTF8
-   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
-
-getNotificationIconName :: (MonadIO m, NotificationK o) => o -> m T.Text
-getNotificationIconName obj = liftIO $ getObjectPropertyString obj "icon-name"
-
-setNotificationIconName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
-setNotificationIconName obj val = liftIO $ setObjectPropertyString obj "icon-name" val
-
-constructNotificationIconName :: T.Text -> IO ([Char], GValue)
-constructNotificationIconName val = constructObjectPropertyString "icon-name" val
-
-data NotificationIconNamePropertyInfo
-instance AttrInfo NotificationIconNamePropertyInfo where
-    type AttrAllowedOps NotificationIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
-    type AttrSetTypeConstraint NotificationIconNamePropertyInfo = (~) T.Text
-    type AttrBaseTypeConstraint NotificationIconNamePropertyInfo = NotificationK
-    type AttrGetType NotificationIconNamePropertyInfo = T.Text
-    type AttrLabel NotificationIconNamePropertyInfo = "Notification::icon-name"
-    attrGet _ = getNotificationIconName
-    attrSet _ = setNotificationIconName
-    attrConstruct _ = constructNotificationIconName
-
--- VVV Prop "id"
-   -- Type: TBasicType TInt32
-   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
-
-getNotificationId :: (MonadIO m, NotificationK o) => o -> m Int32
-getNotificationId obj = liftIO $ getObjectPropertyCInt obj "id"
-
-setNotificationId :: (MonadIO m, NotificationK o) => o -> Int32 -> m ()
-setNotificationId obj val = liftIO $ setObjectPropertyCInt obj "id" val
-
-constructNotificationId :: Int32 -> IO ([Char], GValue)
-constructNotificationId val = constructObjectPropertyCInt "id" val
-
-data NotificationIdPropertyInfo
-instance AttrInfo NotificationIdPropertyInfo where
-    type AttrAllowedOps NotificationIdPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
-    type AttrSetTypeConstraint NotificationIdPropertyInfo = (~) Int32
-    type AttrBaseTypeConstraint NotificationIdPropertyInfo = NotificationK
-    type AttrGetType NotificationIdPropertyInfo = Int32
-    type AttrLabel NotificationIdPropertyInfo = "Notification::id"
-    attrGet _ = getNotificationId
-    attrSet _ = setNotificationId
-    attrConstruct _ = constructNotificationId
-
--- VVV Prop "summary"
-   -- Type: TBasicType TUTF8
-   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
-
-getNotificationSummary :: (MonadIO m, NotificationK o) => o -> m T.Text
-getNotificationSummary obj = liftIO $ getObjectPropertyString obj "summary"
-
-setNotificationSummary :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
-setNotificationSummary obj val = liftIO $ setObjectPropertyString obj "summary" val
-
-constructNotificationSummary :: T.Text -> IO ([Char], GValue)
-constructNotificationSummary val = constructObjectPropertyString "summary" val
-
-data NotificationSummaryPropertyInfo
-instance AttrInfo NotificationSummaryPropertyInfo where
-    type AttrAllowedOps NotificationSummaryPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
-    type AttrSetTypeConstraint NotificationSummaryPropertyInfo = (~) T.Text
-    type AttrBaseTypeConstraint NotificationSummaryPropertyInfo = NotificationK
-    type AttrGetType NotificationSummaryPropertyInfo = T.Text
-    type AttrLabel NotificationSummaryPropertyInfo = "Notification::summary"
-    attrGet _ = getNotificationSummary
-    attrSet _ = setNotificationSummary
-    attrConstruct _ = constructNotificationSummary
-
-type instance AttributeList Notification = '[ '("app-name", NotificationAppNamePropertyInfo), '("body", NotificationBodyPropertyInfo), '("closed-reason", NotificationClosedReasonPropertyInfo), '("icon-name", NotificationIconNamePropertyInfo), '("id", NotificationIdPropertyInfo), '("summary", NotificationSummaryPropertyInfo)]
-
diff --git a/GI/NotifySignals.hs b/GI/NotifySignals.hs
deleted file mode 100644
--- a/GI/NotifySignals.hs
+++ /dev/null
@@ -1,24 +0,0 @@
--- Generated code.
-
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-{-# LANGUAGE DataKinds,    FlexibleInstances,
-             TypeFamilies, MultiParamTypeClasses,
-               TypeOperators #-}
-
-module GI.NotifySignals where
-
-import Data.GI.Base.Properties (GObjectNotifySignalInfo)
-import Data.GI.Base.Signals
-import Data.GI.Base.Overloading
-
-import qualified GI.GObjectSignals as GObject
-import GI.Notify
-
-data NotificationClosedSignalInfo
-instance SignalInfo NotificationClosedSignalInfo where
-    type HaskellCallbackType NotificationClosedSignalInfo = NotificationClosedCallback
-    connectSignal _ = connectNotificationClosed
-
-type instance SignalList Notification = '[ '("closed", NotificationClosedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
-
diff --git a/gi-notify.cabal b/gi-notify.cabal
--- a/gi-notify.cabal
+++ b/gi-notify.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-notify
-version:            0.2.31.11
+version:            0.2.31.12
 synopsis:           Notify bindings
 description:        Bindings for Notify, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,13 +14,23 @@
 
 library
     default-language:   Haskell2010
-    exposed-modules:    GI.Notify, GI.NotifyAttributes, GI.NotifySignals
+    default-extensions: OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
+    other-extensions:   PatternSynonyms ScopedTypeVariables, ViewPatterns
+    ghc-options:        -fno-warn-unused-imports -fno-warn-warnings-deprecations
+    exposed-modules:    GI.Notify.Types
+                        GI.Notify
+                        GI.Notify.Callbacks
+                        GI.Notify.Constants
+                        GI.Notify.Enums
+                        GI.Notify.Functions
+                        GI.Notify.Objects
+                        GI.Notify.Objects.Notification
     pkgconfig-depends:  gdk-pixbuf-2.0 >= 2.31
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.11 && < 1,
-        gi-glib >= 0.2.44.11 && < 0.2.45,
-        gi-gobject >= 0.2.44.11 && < 0.2.45,
-        gi-gdkpixbuf >= 0.2.31.11 && < 0.2.32,
+        haskell-gi-base >= 0.12 && < 1,
+        gi-glib >= 0.2.44.12 && < 0.2.45,
+        gi-gobject >= 0.2.44.12 && < 0.2.45,
+        gi-gdkpixbuf >= 0.2.31.12 && < 0.2.32,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
