diff --git a/GI/Vte.hs b/GI/Vte.hs
new file mode 100644
--- /dev/null
+++ b/GI/Vte.hs
@@ -0,0 +1,4378 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+
+module GI.Vte 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.Atk as Atk
+import qualified GI.AtkAttributes as AtkA
+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.Gdk as Gdk
+import qualified GI.GdkAttributes as GdkA
+import qualified GI.Gio as Gio
+import qualified GI.GioAttributes as GioA
+import qualified GI.Gtk as Gtk
+import qualified GI.GtkAttributes as GtkA
+import qualified GI.Pango as Pango
+import qualified GI.PangoAttributes as PangoA
+
+-- struct CharAttributes
+newtype CharAttributes = CharAttributes (ForeignPtr CharAttributes)
+noCharAttributes :: Maybe CharAttributes
+noCharAttributes = Nothing
+
+-- Enum CursorBlinkMode
+
+data CursorBlinkMode = 
+      CursorBlinkModeSystem
+    | CursorBlinkModeOn
+    | CursorBlinkModeOff
+    | AnotherCursorBlinkMode Int
+    deriving (Show, Eq)
+
+instance Enum CursorBlinkMode where
+    fromEnum CursorBlinkModeSystem = 0
+    fromEnum CursorBlinkModeOn = 1
+    fromEnum CursorBlinkModeOff = 2
+    fromEnum (AnotherCursorBlinkMode k) = k
+
+    toEnum 0 = CursorBlinkModeSystem
+    toEnum 1 = CursorBlinkModeOn
+    toEnum 2 = CursorBlinkModeOff
+    toEnum k = AnotherCursorBlinkMode k
+
+foreign import ccall "vte_cursor_blink_mode_get_type" c_vte_cursor_blink_mode_get_type :: 
+    IO GType
+
+instance BoxedEnum CursorBlinkMode where
+    boxedEnumType _ = c_vte_cursor_blink_mode_get_type
+
+-- Enum CursorShape
+
+data CursorShape = 
+      CursorShapeBlock
+    | CursorShapeIbeam
+    | CursorShapeUnderline
+    | AnotherCursorShape Int
+    deriving (Show, Eq)
+
+instance Enum CursorShape where
+    fromEnum CursorShapeBlock = 0
+    fromEnum CursorShapeIbeam = 1
+    fromEnum CursorShapeUnderline = 2
+    fromEnum (AnotherCursorShape k) = k
+
+    toEnum 0 = CursorShapeBlock
+    toEnum 1 = CursorShapeIbeam
+    toEnum 2 = CursorShapeUnderline
+    toEnum k = AnotherCursorShape k
+
+foreign import ccall "vte_cursor_shape_get_type" c_vte_cursor_shape_get_type :: 
+    IO GType
+
+instance BoxedEnum CursorShape where
+    boxedEnumType _ = c_vte_cursor_shape_get_type
+
+-- Enum EraseBinding
+
+data EraseBinding = 
+      EraseBindingAuto
+    | EraseBindingAsciiBackspace
+    | EraseBindingAsciiDelete
+    | EraseBindingDeleteSequence
+    | EraseBindingTty
+    | AnotherEraseBinding Int
+    deriving (Show, Eq)
+
+instance Enum EraseBinding where
+    fromEnum EraseBindingAuto = 0
+    fromEnum EraseBindingAsciiBackspace = 1
+    fromEnum EraseBindingAsciiDelete = 2
+    fromEnum EraseBindingDeleteSequence = 3
+    fromEnum EraseBindingTty = 4
+    fromEnum (AnotherEraseBinding k) = k
+
+    toEnum 0 = EraseBindingAuto
+    toEnum 1 = EraseBindingAsciiBackspace
+    toEnum 2 = EraseBindingAsciiDelete
+    toEnum 3 = EraseBindingDeleteSequence
+    toEnum 4 = EraseBindingTty
+    toEnum k = AnotherEraseBinding k
+
+foreign import ccall "vte_erase_binding_get_type" c_vte_erase_binding_get_type :: 
+    IO GType
+
+instance BoxedEnum EraseBinding where
+    boxedEnumType _ = c_vte_erase_binding_get_type
+
+-- object Pty 
+newtype Pty = Pty (ForeignPtr Pty)
+noPty :: Maybe Pty
+noPty = Nothing
+
+foreign import ccall "vte_pty_get_type"
+    c_vte_pty_get_type :: IO GType
+
+type instance ParentTypes Pty = '[GObject.Object, Gio.Initable]
+
+instance GObject Pty where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_vte_pty_get_type
+    
+
+class GObject o => PtyK o
+instance (GObject o, IsDescendantOf Pty o) => PtyK o
+
+toPty :: PtyK o => o -> IO Pty
+toPty = unsafeCastTo Pty
+
+-- method Pty::new_foreign_sync
+-- method type : Constructor
+-- Args : [Arg {argName = "fd", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "fd", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "Pty"
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_pty_new_foreign_sync" vte_pty_new_foreign_sync :: 
+    Int32 ->                                -- fd : TBasicType TInt32
+    Ptr Gio.Cancellable ->                  -- cancellable : TInterface "Gio" "Cancellable"
+    Ptr (Ptr GError) ->                     -- error
+    IO (Ptr Pty)
+
+
+ptyNewForeignSync ::
+    (MonadIO m, Gio.CancellableK a) =>
+    Int32 ->                                -- fd
+    Maybe (a) ->                            -- cancellable
+    m Pty
+ptyNewForeignSync fd cancellable = liftIO $ do
+    maybeCancellable <- case cancellable of
+        Nothing -> return nullPtr
+        Just jCancellable -> do
+            let jCancellable' = unsafeManagedPtrCastPtr jCancellable
+            return jCancellable'
+    onException (do
+        result <- propagateGError $ vte_pty_new_foreign_sync fd maybeCancellable
+        result' <- (wrapObject Pty) result
+        whenJust cancellable touchManagedPtr
+        return result'
+     ) (do
+        return ()
+     )
+
+-- method Pty::new_sync
+-- method type : Constructor
+-- Args : [Arg {argName = "flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "Pty"
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_pty_new_sync" vte_pty_new_sync :: 
+    CUInt ->                                -- flags : TInterface "Vte" "PtyFlags"
+    Ptr Gio.Cancellable ->                  -- cancellable : TInterface "Gio" "Cancellable"
+    Ptr (Ptr GError) ->                     -- error
+    IO (Ptr Pty)
+
+
+ptyNewSync ::
+    (MonadIO m, Gio.CancellableK a) =>
+    [PtyFlags] ->                           -- flags
+    Maybe (a) ->                            -- cancellable
+    m Pty
+ptyNewSync flags cancellable = liftIO $ do
+    let flags' = gflagsToWord flags
+    maybeCancellable <- case cancellable of
+        Nothing -> return nullPtr
+        Just jCancellable -> do
+            let jCancellable' = unsafeManagedPtrCastPtr jCancellable
+            return jCancellable'
+    onException (do
+        result <- propagateGError $ vte_pty_new_sync flags' maybeCancellable
+        result' <- (wrapObject Pty) result
+        whenJust cancellable touchManagedPtr
+        return result'
+     ) (do
+        return ()
+     )
+
+-- method Pty::child_setup
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_pty_child_setup" vte_pty_child_setup :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    IO ()
+
+
+ptyChildSetup ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    m ()
+ptyChildSetup _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_pty_child_setup _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Pty::close
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_pty_close" vte_pty_close :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    IO ()
+
+
+ptyClose ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    m ()
+ptyClose _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_pty_close _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Pty::get_fd
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_pty_get_fd" vte_pty_get_fd :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    IO Int32
+
+
+ptyGetFd ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    m Int32
+ptyGetFd _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_pty_get_fd _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Pty::get_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rows", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "columns", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_pty_get_size" vte_pty_get_size :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    Ptr Int32 ->                            -- rows : TBasicType TInt32
+    Ptr Int32 ->                            -- columns : TBasicType TInt32
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+ptyGetSize ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    m (Int32,Int32)
+ptyGetSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    rows <- allocMem :: IO (Ptr Int32)
+    columns <- allocMem :: IO (Ptr Int32)
+    onException (do
+        _ <- propagateGError $ vte_pty_get_size _obj' rows columns
+        rows' <- peek rows
+        columns' <- peek columns
+        touchManagedPtr _obj
+        freeMem rows
+        freeMem columns
+        return (rows', columns')
+     ) (do
+        freeMem rows
+        freeMem columns
+     )
+
+-- method Pty::set_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rows", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "columns", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rows", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "columns", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_pty_set_size" vte_pty_set_size :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    Int32 ->                                -- rows : TBasicType TInt32
+    Int32 ->                                -- columns : TBasicType TInt32
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+ptySetSize ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- rows
+    Int32 ->                                -- columns
+    m ()
+ptySetSize _obj rows columns = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    onException (do
+        _ <- propagateGError $ vte_pty_set_size _obj' rows columns
+        touchManagedPtr _obj
+        return ()
+     ) (do
+        return ()
+     )
+
+-- method Pty::set_utf8
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "utf8", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "utf8", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_pty_set_utf8" vte_pty_set_utf8 :: 
+    Ptr Pty ->                              -- _obj : TInterface "Vte" "Pty"
+    CInt ->                                 -- utf8 : TBasicType TBoolean
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+ptySetUtf8 ::
+    (MonadIO m, PtyK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- utf8
+    m ()
+ptySetUtf8 _obj utf8 = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let utf8' = (fromIntegral . fromEnum) utf8
+    onException (do
+        _ <- propagateGError $ vte_pty_set_utf8 _obj' utf8'
+        touchManagedPtr _obj
+        return ()
+     ) (do
+        return ()
+     )
+
+-- Enum PtyError
+
+data PtyError = 
+      PtyErrorPtyHelperFailed
+    | PtyErrorPty98Failed
+    | AnotherPtyError Int
+    deriving (Show, Eq)
+
+instance Enum PtyError where
+    fromEnum PtyErrorPtyHelperFailed = 0
+    fromEnum PtyErrorPty98Failed = 1
+    fromEnum (AnotherPtyError k) = k
+
+    toEnum 0 = PtyErrorPtyHelperFailed
+    toEnum 1 = PtyErrorPty98Failed
+    toEnum k = AnotherPtyError k
+
+instance GErrorClass PtyError where
+    gerrorClassDomain _ = "vte-pty-error"
+
+catchPtyError ::
+    IO a ->
+    (PtyError -> GErrorMessage -> IO a) ->
+    IO a
+catchPtyError = catchGErrorJustDomain
+
+handlePtyError ::
+    (PtyError -> GErrorMessage -> IO a) ->
+    IO a ->
+    IO a
+handlePtyError = handleGErrorJustDomain
+
+foreign import ccall "vte_pty_error_get_type" c_vte_pty_error_get_type :: 
+    IO GType
+
+instance BoxedEnum PtyError where
+    boxedEnumType _ = c_vte_pty_error_get_type
+
+-- Flags PtyFlags
+
+data PtyFlags = 
+      PtyFlagsNoLastlog
+    | PtyFlagsNoUtmp
+    | PtyFlagsNoWtmp
+    | PtyFlagsNoHelper
+    | PtyFlagsNoFallback
+    | PtyFlagsDefault
+    | AnotherPtyFlags Int
+    deriving (Show, Eq)
+
+instance Enum PtyFlags where
+    fromEnum PtyFlagsNoLastlog = 1
+    fromEnum PtyFlagsNoUtmp = 2
+    fromEnum PtyFlagsNoWtmp = 4
+    fromEnum PtyFlagsNoHelper = 8
+    fromEnum PtyFlagsNoFallback = 16
+    fromEnum PtyFlagsDefault = 0
+    fromEnum (AnotherPtyFlags k) = k
+
+    toEnum 0 = PtyFlagsDefault
+    toEnum 1 = PtyFlagsNoLastlog
+    toEnum 2 = PtyFlagsNoUtmp
+    toEnum 4 = PtyFlagsNoWtmp
+    toEnum 8 = PtyFlagsNoHelper
+    toEnum 16 = PtyFlagsNoFallback
+    toEnum k = AnotherPtyFlags k
+
+foreign import ccall "vte_pty_flags_get_type" c_vte_pty_flags_get_type :: 
+    IO GType
+
+instance BoxedEnum PtyFlags where
+    boxedEnumType _ = c_vte_pty_flags_get_type
+
+instance IsGFlag PtyFlags
+
+-- callback SelectionFunc
+selectionFuncClosure :: SelectionFunc -> IO Closure
+selectionFuncClosure cb = newCClosure =<< mkSelectionFunc wrapped
+    where wrapped = selectionFuncWrapper Nothing cb
+
+type SelectionFuncC =
+    Ptr Terminal ->
+    Int64 ->
+    Int64 ->
+    Ptr () ->
+    IO CInt
+
+foreign import ccall "wrapper"
+    mkSelectionFunc :: SelectionFuncC -> IO (FunPtr SelectionFuncC)
+
+type SelectionFunc =
+    Terminal ->
+    Int64 ->
+    Int64 ->
+    IO Bool
+
+noSelectionFunc :: Maybe SelectionFunc
+noSelectionFunc = Nothing
+
+selectionFuncWrapper ::
+    Maybe (Ptr (FunPtr (SelectionFuncC))) ->
+    SelectionFunc ->
+    Ptr Terminal ->
+    Int64 ->
+    Int64 ->
+    Ptr () ->
+    IO CInt
+selectionFuncWrapper funptrptr _cb terminal column row _ = do
+    terminal' <- (newObject Terminal) terminal
+    result <- _cb  terminal' column row
+    maybeReleaseFunPtr funptrptr
+    let result' = (fromIntegral . fromEnum) result
+    return result'
+
+-- object Terminal 
+newtype Terminal = Terminal (ForeignPtr Terminal)
+noTerminal :: Maybe Terminal
+noTerminal = Nothing
+
+foreign import ccall "vte_terminal_get_type"
+    c_vte_terminal_get_type :: IO GType
+
+type instance ParentTypes Terminal = '[Gtk.Widget, GObject.Object, Atk.ImplementorIface, Gtk.Buildable, Gtk.Scrollable]
+
+instance GObject Terminal where
+    gobjectIsInitiallyUnowned _ = True
+    gobjectType _ = c_vte_terminal_get_type
+    
+
+class GObject o => TerminalK o
+instance (GObject o, IsDescendantOf Terminal o) => TerminalK o
+
+toTerminal :: TerminalK o => o -> IO Terminal
+toTerminal = unsafeCastTo Terminal
+
+-- method Terminal::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Vte" "Terminal"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_new" vte_terminal_new :: 
+    IO (Ptr Terminal)
+
+
+terminalNew ::
+    (MonadIO m) =>
+    m Terminal
+terminalNew  = liftIO $ do
+    result <- vte_terminal_new
+    result' <- (newObject Terminal) result
+    return result'
+
+-- method Terminal::copy_clipboard
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_copy_clipboard" vte_terminal_copy_clipboard :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalCopyClipboard ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalCopyClipboard _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_copy_clipboard _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::copy_primary
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_copy_primary" vte_terminal_copy_primary :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalCopyPrimary ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalCopyPrimary _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_copy_primary _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::feed
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : [Arg {argName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TCArray False (-1) 2 (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 "vte_terminal_feed" vte_terminal_feed :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Word8 ->                            -- data : TCArray False (-1) 2 (TBasicType TUInt8)
+    Int64 ->                                -- length : TBasicType TInt64
+    IO ()
+
+
+terminalFeed ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    ByteString ->                           -- data
+    m ()
+terminalFeed _obj data_ = liftIO $ do
+    let length_ = fromIntegral $ B.length data_
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    data_' <- packByteString data_
+    vte_terminal_feed _obj' data_' length_
+    touchManagedPtr _obj
+    freeMem data_'
+    return ()
+
+-- method Terminal::feed_child
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_feed_child" vte_terminal_feed_child :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CString ->                              -- text : TBasicType TUTF8
+    Int64 ->                                -- length : TBasicType TInt64
+    IO ()
+
+
+terminalFeedChild ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- text
+    Int64 ->                                -- length
+    m ()
+terminalFeedChild _obj text length_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    text' <- textToCString text
+    vte_terminal_feed_child _obj' text' length_
+    touchManagedPtr _obj
+    freeMem text'
+    return ()
+
+-- method Terminal::feed_child_binary
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", 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 "vte_terminal_feed_child_binary" vte_terminal_feed_child_binary :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Word8 ->                                -- data : TBasicType TUInt8
+    Word64 ->                               -- length : TBasicType TUInt64
+    IO ()
+
+
+terminalFeedChildBinary ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Word8 ->                                -- data
+    Word64 ->                               -- length
+    m ()
+terminalFeedChildBinary _obj data_ length_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_feed_child_binary _obj' data_ length_
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::get_allow_bold
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_allow_bold" vte_terminal_get_allow_bold :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetAllowBold ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetAllowBold _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_allow_bold _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_audible_bell
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_audible_bell" vte_terminal_get_audible_bell :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetAudibleBell ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetAudibleBell _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_audible_bell _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_char_height
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_char_height" vte_terminal_get_char_height :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO Int64
+
+
+terminalGetCharHeight ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Int64
+terminalGetCharHeight _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_char_height _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Terminal::get_char_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_char_width" vte_terminal_get_char_width :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO Int64
+
+
+terminalGetCharWidth ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Int64
+terminalGetCharWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_char_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Terminal::get_cjk_ambiguous_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_cjk_ambiguous_width" vte_terminal_get_cjk_ambiguous_width :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO Int32
+
+
+terminalGetCjkAmbiguousWidth ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Int32
+terminalGetCjkAmbiguousWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_cjk_ambiguous_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Terminal::get_column_count
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_column_count" vte_terminal_get_column_count :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO Int64
+
+
+terminalGetColumnCount ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Int64
+terminalGetColumnCount _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_column_count _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Terminal::get_current_directory_uri
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_current_directory_uri" vte_terminal_get_current_directory_uri :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetCurrentDirectoryUri ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetCurrentDirectoryUri _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_current_directory_uri _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_current_file_uri
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_current_file_uri" vte_terminal_get_current_file_uri :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetCurrentFileUri ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetCurrentFileUri _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_current_file_uri _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_cursor_blink_mode
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "CursorBlinkMode"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_cursor_blink_mode" vte_terminal_get_cursor_blink_mode :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CUInt
+
+
+terminalGetCursorBlinkMode ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m CursorBlinkMode
+terminalGetCursorBlinkMode _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_cursor_blink_mode _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_cursor_position
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "column", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "row", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_cursor_position" vte_terminal_get_cursor_position :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Int64 ->                            -- column : TBasicType TInt64
+    Ptr Int64 ->                            -- row : TBasicType TInt64
+    IO ()
+
+
+terminalGetCursorPosition ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m (Int64,Int64)
+terminalGetCursorPosition _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    column <- allocMem :: IO (Ptr Int64)
+    row <- allocMem :: IO (Ptr Int64)
+    vte_terminal_get_cursor_position _obj' column row
+    column' <- peek column
+    row' <- peek row
+    touchManagedPtr _obj
+    freeMem column
+    freeMem row
+    return (column', row')
+
+-- method Terminal::get_cursor_shape
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "CursorShape"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_cursor_shape" vte_terminal_get_cursor_shape :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CUInt
+
+
+terminalGetCursorShape ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m CursorShape
+terminalGetCursorShape _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_cursor_shape _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_encoding
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_encoding" vte_terminal_get_encoding :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetEncoding ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetEncoding _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_encoding _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontDescription"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_font" vte_terminal_get_font :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO (Ptr Pango.FontDescription)
+
+
+terminalGetFont ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Pango.FontDescription
+terminalGetFont _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_font _obj'
+    result' <- (newBoxed Pango.FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_font_scale
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TDouble
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_font_scale" vte_terminal_get_font_scale :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CDouble
+
+
+terminalGetFontScale ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Double
+terminalGetFontScale _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_font_scale _obj'
+    let result' = realToFrac result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_geometry_hints
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hints", argType = TInterface "Gdk" "Geometry", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_rows", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_columns", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_rows", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_columns", 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 "vte_terminal_get_geometry_hints" vte_terminal_get_geometry_hints :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.Geometry ->                     -- hints : TInterface "Gdk" "Geometry"
+    Int32 ->                                -- min_rows : TBasicType TInt32
+    Int32 ->                                -- min_columns : TBasicType TInt32
+    IO ()
+
+
+terminalGetGeometryHints ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- min_rows
+    Int32 ->                                -- min_columns
+    m (Gdk.Geometry)
+terminalGetGeometryHints _obj min_rows min_columns = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    hints <- callocBytes 56 :: IO (Ptr Gdk.Geometry)
+    vte_terminal_get_geometry_hints _obj' hints min_rows min_columns
+    hints' <- (wrapPtr Gdk.Geometry) hints
+    touchManagedPtr _obj
+    return hints'
+
+-- method Terminal::get_has_selection
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_has_selection" vte_terminal_get_has_selection :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetHasSelection ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetHasSelection _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_has_selection _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_icon_title
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_icon_title" vte_terminal_get_icon_title :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetIconTitle ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetIconTitle _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_icon_title _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_input_enabled
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_input_enabled" vte_terminal_get_input_enabled :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetInputEnabled ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetInputEnabled _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_input_enabled _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_mouse_autohide
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_mouse_autohide" vte_terminal_get_mouse_autohide :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetMouseAutohide ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetMouseAutohide _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_mouse_autohide _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_pty
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "Pty"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_pty" vte_terminal_get_pty :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO (Ptr Pty)
+
+
+terminalGetPty ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Pty
+terminalGetPty _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_pty _obj'
+    result' <- (newObject Pty) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_rewrap_on_resize
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_rewrap_on_resize" vte_terminal_get_rewrap_on_resize :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalGetRewrapOnResize ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalGetRewrapOnResize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_rewrap_on_resize _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_row_count
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_row_count" vte_terminal_get_row_count :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO Int64
+
+
+terminalGetRowCount ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Int64
+terminalGetRowCount _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_row_count _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Terminal::get_text
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes", argType = TGArray (TInterface "Vte" "CharAttributes"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_text" vte_terminal_get_text :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    FunPtr SelectionFuncC ->                -- is_selected : TInterface "Vte" "SelectionFunc"
+    Ptr () ->                               -- user_data : TBasicType TVoid
+    Ptr (Ptr (GArray (Ptr CharAttributes))) -> -- attributes : TGArray (TInterface "Vte" "CharAttributes")
+    IO CString
+
+
+terminalGetText ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (SelectionFunc) ->                -- is_selected
+    m (T.Text,[CharAttributes])
+terminalGetText _obj is_selected = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeIs_selected <- case is_selected of
+        Nothing -> return (castPtrToFunPtr nullPtr)
+        Just jIs_selected -> do
+            jIs_selected' <- mkSelectionFunc (selectionFuncWrapper Nothing jIs_selected)
+            return jIs_selected'
+    attributes <- allocMem :: IO (Ptr (Ptr (GArray (Ptr CharAttributes))))
+    let user_data = nullPtr
+    result <- vte_terminal_get_text _obj' maybeIs_selected user_data attributes
+    result' <- cstringToText result
+    freeMem result
+    attributes' <- peek attributes
+    attributes'' <- unpackGArray attributes'
+    attributes''' <- mapM (wrapPtr CharAttributes) attributes''
+    unrefGArray attributes'
+    safeFreeFunPtr $ castFunPtrToPtr maybeIs_selected
+    touchManagedPtr _obj
+    freeMem attributes
+    return (result', attributes''')
+
+-- method Terminal::get_text_include_trailing_spaces
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes", argType = TGArray (TInterface "Vte" "CharAttributes"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_text_include_trailing_spaces" vte_terminal_get_text_include_trailing_spaces :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    FunPtr SelectionFuncC ->                -- is_selected : TInterface "Vte" "SelectionFunc"
+    Ptr () ->                               -- user_data : TBasicType TVoid
+    Ptr (Ptr (GArray (Ptr CharAttributes))) -> -- attributes : TGArray (TInterface "Vte" "CharAttributes")
+    IO CString
+
+
+terminalGetTextIncludeTrailingSpaces ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (SelectionFunc) ->                -- is_selected
+    m (T.Text,[CharAttributes])
+terminalGetTextIncludeTrailingSpaces _obj is_selected = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeIs_selected <- case is_selected of
+        Nothing -> return (castPtrToFunPtr nullPtr)
+        Just jIs_selected -> do
+            jIs_selected' <- mkSelectionFunc (selectionFuncWrapper Nothing jIs_selected)
+            return jIs_selected'
+    attributes <- allocMem :: IO (Ptr (Ptr (GArray (Ptr CharAttributes))))
+    let user_data = nullPtr
+    result <- vte_terminal_get_text_include_trailing_spaces _obj' maybeIs_selected user_data attributes
+    result' <- cstringToText result
+    freeMem result
+    attributes' <- peek attributes
+    attributes'' <- unpackGArray attributes'
+    attributes''' <- mapM (wrapPtr CharAttributes) attributes''
+    unrefGArray attributes'
+    safeFreeFunPtr $ castFunPtrToPtr maybeIs_selected
+    touchManagedPtr _obj
+    freeMem attributes
+    return (result', attributes''')
+
+-- method Terminal::get_text_range
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_col", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_col", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 6, argDestroy = -1, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attributes", argType = TGArray (TInterface "Vte" "CharAttributes"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_col", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_col", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_selected", argType = TInterface "Vte" "SelectionFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 6, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_text_range" vte_terminal_get_text_range :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int64 ->                                -- start_row : TBasicType TInt64
+    Int64 ->                                -- start_col : TBasicType TInt64
+    Int64 ->                                -- end_row : TBasicType TInt64
+    Int64 ->                                -- end_col : TBasicType TInt64
+    FunPtr SelectionFuncC ->                -- is_selected : TInterface "Vte" "SelectionFunc"
+    Ptr () ->                               -- user_data : TBasicType TVoid
+    Ptr (Ptr (GArray (Ptr CharAttributes))) -> -- attributes : TGArray (TInterface "Vte" "CharAttributes")
+    IO CString
+
+
+terminalGetTextRange ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int64 ->                                -- start_row
+    Int64 ->                                -- start_col
+    Int64 ->                                -- end_row
+    Int64 ->                                -- end_col
+    Maybe (SelectionFunc) ->                -- is_selected
+    m (T.Text,[CharAttributes])
+terminalGetTextRange _obj start_row start_col end_row end_col is_selected = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeIs_selected <- case is_selected of
+        Nothing -> return (castPtrToFunPtr nullPtr)
+        Just jIs_selected -> do
+            jIs_selected' <- mkSelectionFunc (selectionFuncWrapper Nothing jIs_selected)
+            return jIs_selected'
+    attributes <- allocMem :: IO (Ptr (Ptr (GArray (Ptr CharAttributes))))
+    let user_data = nullPtr
+    result <- vte_terminal_get_text_range _obj' start_row start_col end_row end_col maybeIs_selected user_data attributes
+    result' <- cstringToText result
+    freeMem result
+    attributes' <- peek attributes
+    attributes'' <- unpackGArray attributes'
+    attributes''' <- mapM (wrapPtr CharAttributes) attributes''
+    unrefGArray attributes'
+    safeFreeFunPtr $ castFunPtrToPtr maybeIs_selected
+    touchManagedPtr _obj
+    freeMem attributes
+    return (result', attributes''')
+
+-- method Terminal::get_window_title
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_window_title" vte_terminal_get_window_title :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetWindowTitle ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetWindowTitle _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_window_title _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::get_word_char_exceptions
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_get_word_char_exceptions" vte_terminal_get_word_char_exceptions :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CString
+
+
+terminalGetWordCharExceptions ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m T.Text
+terminalGetWordCharExceptions _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_get_word_char_exceptions _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::match_add_gregex
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "regex", argType = TInterface "GLib" "Regex", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GLib" "RegexMatchFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "regex", argType = TInterface "GLib" "Regex", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GLib" "RegexMatchFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_add_gregex" vte_terminal_match_add_gregex :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr GLib.Regex ->                       -- regex : TInterface "GLib" "Regex"
+    CUInt ->                                -- flags : TInterface "GLib" "RegexMatchFlags"
+    IO Int32
+
+
+terminalMatchAddGregex ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    GLib.Regex ->                           -- regex
+    [GLib.RegexMatchFlags] ->               -- flags
+    m Int32
+terminalMatchAddGregex _obj regex flags = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let regex' = unsafeManagedPtrGetPtr regex
+    let flags' = gflagsToWord flags
+    result <- vte_terminal_match_add_gregex _obj' regex' flags'
+    touchManagedPtr _obj
+    touchManagedPtr regex
+    return result
+
+-- method Terminal::match_check
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "column", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "column", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "row", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_check" vte_terminal_match_check :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int64 ->                                -- column : TBasicType TInt64
+    Int64 ->                                -- row : TBasicType TInt64
+    Ptr Int32 ->                            -- tag : TBasicType TInt32
+    IO CString
+
+
+terminalMatchCheck ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int64 ->                                -- column
+    Int64 ->                                -- row
+    m (T.Text,Int32)
+terminalMatchCheck _obj column row = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    tag <- allocMem :: IO (Ptr Int32)
+    result <- vte_terminal_match_check _obj' column row tag
+    result' <- cstringToText result
+    freeMem result
+    tag' <- peek tag
+    touchManagedPtr _obj
+    freeMem tag
+    return (result', tag')
+
+-- method Terminal::match_check_event
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_check_event" vte_terminal_match_check_event :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
+    Ptr Int32 ->                            -- tag : TBasicType TInt32
+    IO CString
+
+
+terminalMatchCheckEvent ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Gdk.Event ->                            -- event
+    m (T.Text,Int32)
+terminalMatchCheckEvent _obj event = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let event' = unsafeManagedPtrGetPtr event
+    tag <- allocMem :: IO (Ptr Int32)
+    result <- vte_terminal_match_check_event _obj' event' tag
+    result' <- cstringToText result
+    freeMem result
+    tag' <- peek tag
+    touchManagedPtr _obj
+    touchManagedPtr event
+    freeMem tag
+    return (result', tag')
+
+-- method Terminal::match_remove
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", 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 "vte_terminal_match_remove" vte_terminal_match_remove :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- tag : TBasicType TInt32
+    IO ()
+
+
+terminalMatchRemove ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- tag
+    m ()
+terminalMatchRemove _obj tag = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_match_remove _obj' tag
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::match_remove_all
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_remove_all" vte_terminal_match_remove_all :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalMatchRemoveAll ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalMatchRemoveAll _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_match_remove_all _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::match_set_cursor
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "Cursor", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_set_cursor" vte_terminal_match_set_cursor :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- tag : TBasicType TInt32
+    Ptr Gdk.Cursor ->                       -- cursor : TInterface "Gdk" "Cursor"
+    IO ()
+
+{-# DEPRECATED terminalMatchSetCursor ["(Since version 0.40)","Use vte_terminal_match_set_cursor_type() or vte_terminal_match_set_cursor_named() instead."]#-}
+terminalMatchSetCursor ::
+    (MonadIO m, TerminalK a, Gdk.CursorK b) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- tag
+    Maybe (b) ->                            -- cursor
+    m ()
+terminalMatchSetCursor _obj tag cursor = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeCursor <- case cursor of
+        Nothing -> return nullPtr
+        Just jCursor -> do
+            let jCursor' = unsafeManagedPtrCastPtr jCursor
+            return jCursor'
+    vte_terminal_match_set_cursor _obj' tag maybeCursor
+    touchManagedPtr _obj
+    whenJust cursor touchManagedPtr
+    return ()
+
+-- method Terminal::match_set_cursor_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_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 "vte_terminal_match_set_cursor_name" vte_terminal_match_set_cursor_name :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- tag : TBasicType TInt32
+    CString ->                              -- cursor_name : TBasicType TUTF8
+    IO ()
+
+
+terminalMatchSetCursorName ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- tag
+    T.Text ->                               -- cursor_name
+    m ()
+terminalMatchSetCursorName _obj tag cursor_name = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    cursor_name' <- textToCString cursor_name
+    vte_terminal_match_set_cursor_name _obj' tag cursor_name'
+    touchManagedPtr _obj
+    freeMem cursor_name'
+    return ()
+
+-- method Terminal::match_set_cursor_type
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tag", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_type", argType = TInterface "Gdk" "CursorType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_match_set_cursor_type" vte_terminal_match_set_cursor_type :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- tag : TBasicType TInt32
+    CUInt ->                                -- cursor_type : TInterface "Gdk" "CursorType"
+    IO ()
+
+
+terminalMatchSetCursorType ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- tag
+    Gdk.CursorType ->                       -- cursor_type
+    m ()
+terminalMatchSetCursorType _obj tag cursor_type = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let cursor_type' = (fromIntegral . fromEnum) cursor_type
+    vte_terminal_match_set_cursor_type _obj' tag cursor_type'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::paste_clipboard
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_paste_clipboard" vte_terminal_paste_clipboard :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalPasteClipboard ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalPasteClipboard _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_paste_clipboard _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::paste_primary
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_paste_primary" vte_terminal_paste_primary :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalPastePrimary ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalPastePrimary _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_paste_primary _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::pty_new_sync
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Vte" "Pty"
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_terminal_pty_new_sync" vte_terminal_pty_new_sync :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- flags : TInterface "Vte" "PtyFlags"
+    Ptr Gio.Cancellable ->                  -- cancellable : TInterface "Gio" "Cancellable"
+    Ptr (Ptr GError) ->                     -- error
+    IO (Ptr Pty)
+
+
+terminalPtyNewSync ::
+    (MonadIO m, TerminalK a, Gio.CancellableK b) =>
+    a ->                                    -- _obj
+    [PtyFlags] ->                           -- flags
+    Maybe (b) ->                            -- cancellable
+    m Pty
+terminalPtyNewSync _obj flags cancellable = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let flags' = gflagsToWord flags
+    maybeCancellable <- case cancellable of
+        Nothing -> return nullPtr
+        Just jCancellable -> do
+            let jCancellable' = unsafeManagedPtrCastPtr jCancellable
+            return jCancellable'
+    onException (do
+        result <- propagateGError $ vte_terminal_pty_new_sync _obj' flags' maybeCancellable
+        result' <- (wrapObject Pty) result
+        touchManagedPtr _obj
+        whenJust cancellable touchManagedPtr
+        return result'
+     ) (do
+        return ()
+     )
+
+-- method Terminal::reset
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear_tabstops", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear_history", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear_tabstops", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear_history", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_reset" vte_terminal_reset :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- clear_tabstops : TBasicType TBoolean
+    CInt ->                                 -- clear_history : TBasicType TBoolean
+    IO ()
+
+
+terminalReset ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- clear_tabstops
+    Bool ->                                 -- clear_history
+    m ()
+terminalReset _obj clear_tabstops clear_history = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let clear_tabstops' = (fromIntegral . fromEnum) clear_tabstops
+    let clear_history' = (fromIntegral . fromEnum) clear_history
+    vte_terminal_reset _obj' clear_tabstops' clear_history'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::search_find_next
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_find_next" vte_terminal_search_find_next :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalSearchFindNext ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalSearchFindNext _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_search_find_next _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::search_find_previous
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_find_previous" vte_terminal_search_find_previous :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalSearchFindPrevious ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalSearchFindPrevious _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_search_find_previous _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::search_get_gregex
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GLib" "Regex"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_get_gregex" vte_terminal_search_get_gregex :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO (Ptr GLib.Regex)
+
+
+terminalSearchGetGregex ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m GLib.Regex
+terminalSearchGetGregex _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_search_get_gregex _obj'
+    result' <- (newBoxed GLib.Regex) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::search_get_wrap_around
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_get_wrap_around" vte_terminal_search_get_wrap_around :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO CInt
+
+
+terminalSearchGetWrapAround ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m Bool
+terminalSearchGetWrapAround _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- vte_terminal_search_get_wrap_around _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Terminal::search_set_gregex
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "regex", argType = TInterface "GLib" "Regex", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GLib" "RegexMatchFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "regex", argType = TInterface "GLib" "Regex", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GLib" "RegexMatchFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_set_gregex" vte_terminal_search_set_gregex :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr GLib.Regex ->                       -- regex : TInterface "GLib" "Regex"
+    CUInt ->                                -- flags : TInterface "GLib" "RegexMatchFlags"
+    IO ()
+
+
+terminalSearchSetGregex ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (GLib.Regex) ->                   -- regex
+    [GLib.RegexMatchFlags] ->               -- flags
+    m ()
+terminalSearchSetGregex _obj regex flags = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeRegex <- case regex of
+        Nothing -> return nullPtr
+        Just jRegex -> do
+            let jRegex' = unsafeManagedPtrGetPtr jRegex
+            return jRegex'
+    let flags' = gflagsToWord flags
+    vte_terminal_search_set_gregex _obj' maybeRegex flags'
+    touchManagedPtr _obj
+    whenJust regex touchManagedPtr
+    return ()
+
+-- method Terminal::search_set_wrap_around
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wrap_around", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wrap_around", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_search_set_wrap_around" vte_terminal_search_set_wrap_around :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- wrap_around : TBasicType TBoolean
+    IO ()
+
+
+terminalSearchSetWrapAround ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- wrap_around
+    m ()
+terminalSearchSetWrapAround _obj wrap_around = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let wrap_around' = (fromIntegral . fromEnum) wrap_around
+    vte_terminal_search_set_wrap_around _obj' wrap_around'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::select_all
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_select_all" vte_terminal_select_all :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalSelectAll ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalSelectAll _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_select_all _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_allow_bold
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allow_bold", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allow_bold", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_allow_bold" vte_terminal_set_allow_bold :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- allow_bold : TBasicType TBoolean
+    IO ()
+
+
+terminalSetAllowBold ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- allow_bold
+    m ()
+terminalSetAllowBold _obj allow_bold = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let allow_bold' = (fromIntegral . fromEnum) allow_bold
+    vte_terminal_set_allow_bold _obj' allow_bold'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_audible_bell
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_audible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_audible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_audible_bell" vte_terminal_set_audible_bell :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- is_audible : TBasicType TBoolean
+    IO ()
+
+
+terminalSetAudibleBell ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- is_audible
+    m ()
+terminalSetAudibleBell _obj is_audible = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let is_audible' = (fromIntegral . fromEnum) is_audible
+    vte_terminal_set_audible_bell _obj' is_audible'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_backspace_binding
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "binding", argType = TInterface "Vte" "EraseBinding", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "binding", argType = TInterface "Vte" "EraseBinding", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_backspace_binding" vte_terminal_set_backspace_binding :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- binding : TInterface "Vte" "EraseBinding"
+    IO ()
+
+
+terminalSetBackspaceBinding ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    EraseBinding ->                         -- binding
+    m ()
+terminalSetBackspaceBinding _obj binding = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let binding' = (fromIntegral . fromEnum) binding
+    vte_terminal_set_backspace_binding _obj' binding'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_cjk_ambiguous_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", 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 "vte_terminal_set_cjk_ambiguous_width" vte_terminal_set_cjk_ambiguous_width :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- width : TBasicType TInt32
+    IO ()
+
+
+terminalSetCjkAmbiguousWidth ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- width
+    m ()
+terminalSetCjkAmbiguousWidth _obj width = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_set_cjk_ambiguous_width _obj' width
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_color_background
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_background" vte_terminal_set_color_background :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- background : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorBackground ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Gdk.RGBA ->                             -- background
+    m ()
+terminalSetColorBackground _obj background = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let background' = unsafeManagedPtrGetPtr background
+    vte_terminal_set_color_background _obj' background'
+    touchManagedPtr _obj
+    touchManagedPtr background
+    return ()
+
+-- method Terminal::set_color_bold
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "bold", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "bold", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_bold" vte_terminal_set_color_bold :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- bold : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorBold ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Gdk.RGBA) ->                     -- bold
+    m ()
+terminalSetColorBold _obj bold = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeBold <- case bold of
+        Nothing -> return nullPtr
+        Just jBold -> do
+            let jBold' = unsafeManagedPtrGetPtr jBold
+            return jBold'
+    vte_terminal_set_color_bold _obj' maybeBold
+    touchManagedPtr _obj
+    whenJust bold touchManagedPtr
+    return ()
+
+-- method Terminal::set_color_cursor
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor_background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_cursor" vte_terminal_set_color_cursor :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- cursor_background : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorCursor ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Gdk.RGBA) ->                     -- cursor_background
+    m ()
+terminalSetColorCursor _obj cursor_background = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeCursor_background <- case cursor_background of
+        Nothing -> return nullPtr
+        Just jCursor_background -> do
+            let jCursor_background' = unsafeManagedPtrGetPtr jCursor_background
+            return jCursor_background'
+    vte_terminal_set_color_cursor _obj' maybeCursor_background
+    touchManagedPtr _obj
+    whenJust cursor_background touchManagedPtr
+    return ()
+
+-- method Terminal::set_color_foreground
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_foreground" vte_terminal_set_color_foreground :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- foreground : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorForeground ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Gdk.RGBA ->                             -- foreground
+    m ()
+terminalSetColorForeground _obj foreground = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let foreground' = unsafeManagedPtrGetPtr foreground
+    vte_terminal_set_color_foreground _obj' foreground'
+    touchManagedPtr _obj
+    touchManagedPtr foreground
+    return ()
+
+-- method Terminal::set_color_highlight
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "highlight_background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "highlight_background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_highlight" vte_terminal_set_color_highlight :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- highlight_background : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorHighlight ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Gdk.RGBA) ->                     -- highlight_background
+    m ()
+terminalSetColorHighlight _obj highlight_background = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeHighlight_background <- case highlight_background of
+        Nothing -> return nullPtr
+        Just jHighlight_background -> do
+            let jHighlight_background' = unsafeManagedPtrGetPtr jHighlight_background
+            return jHighlight_background'
+    vte_terminal_set_color_highlight _obj' maybeHighlight_background
+    touchManagedPtr _obj
+    whenJust highlight_background touchManagedPtr
+    return ()
+
+-- method Terminal::set_color_highlight_foreground
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "highlight_foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "highlight_foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_color_highlight_foreground" vte_terminal_set_color_highlight_foreground :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- highlight_foreground : TInterface "Gdk" "RGBA"
+    IO ()
+
+
+terminalSetColorHighlightForeground ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Gdk.RGBA) ->                     -- highlight_foreground
+    m ()
+terminalSetColorHighlightForeground _obj highlight_foreground = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeHighlight_foreground <- case highlight_foreground of
+        Nothing -> return nullPtr
+        Just jHighlight_foreground -> do
+            let jHighlight_foreground' = unsafeManagedPtrGetPtr jHighlight_foreground
+            return jHighlight_foreground'
+    vte_terminal_set_color_highlight_foreground _obj' maybeHighlight_foreground
+    touchManagedPtr _obj
+    whenJust highlight_foreground touchManagedPtr
+    return ()
+
+-- method Terminal::set_colors
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "palette", argType = TCArray False (-1) 4 (TInterface "Gdk" "RGBA"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "palette_size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : [Arg {argName = "palette_size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "foreground", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "background", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "palette", argType = TCArray False (-1) 4 (TInterface "Gdk" "RGBA"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_colors" vte_terminal_set_colors :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gdk.RGBA ->                         -- foreground : TInterface "Gdk" "RGBA"
+    Ptr Gdk.RGBA ->                         -- background : TInterface "Gdk" "RGBA"
+    Ptr Gdk.RGBA ->                         -- palette : TCArray False (-1) 4 (TInterface "Gdk" "RGBA")
+    Word64 ->                               -- palette_size : TBasicType TUInt64
+    IO ()
+
+
+terminalSetColors ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Gdk.RGBA) ->                     -- foreground
+    Maybe (Gdk.RGBA) ->                     -- background
+    Maybe ([Gdk.RGBA]) ->                   -- palette
+    m ()
+terminalSetColors _obj foreground background palette = liftIO $ do
+    let palette_size = case palette of
+            Nothing -> 0
+            Just jPalette -> fromIntegral $ length jPalette
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeForeground <- case foreground of
+        Nothing -> return nullPtr
+        Just jForeground -> do
+            let jForeground' = unsafeManagedPtrGetPtr jForeground
+            return jForeground'
+    maybeBackground <- case background of
+        Nothing -> return nullPtr
+        Just jBackground -> do
+            let jBackground' = unsafeManagedPtrGetPtr jBackground
+            return jBackground'
+    maybePalette <- case palette of
+        Nothing -> return nullPtr
+        Just jPalette -> do
+            let jPalette' = map unsafeManagedPtrGetPtr jPalette
+            jPalette'' <- packBlockArray 32 jPalette'
+            return jPalette''
+    vte_terminal_set_colors _obj' maybeForeground maybeBackground maybePalette palette_size
+    touchManagedPtr _obj
+    whenJust foreground touchManagedPtr
+    whenJust background touchManagedPtr
+    whenJust palette (mapM_ touchManagedPtr)
+    freeMem maybePalette
+    return ()
+
+-- method Terminal::set_cursor_blink_mode
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Vte" "CursorBlinkMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mode", argType = TInterface "Vte" "CursorBlinkMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_cursor_blink_mode" vte_terminal_set_cursor_blink_mode :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- mode : TInterface "Vte" "CursorBlinkMode"
+    IO ()
+
+
+terminalSetCursorBlinkMode ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    CursorBlinkMode ->                      -- mode
+    m ()
+terminalSetCursorBlinkMode _obj mode = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let mode' = (fromIntegral . fromEnum) mode
+    vte_terminal_set_cursor_blink_mode _obj' mode'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_cursor_shape
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape", argType = TInterface "Vte" "CursorShape", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "shape", argType = TInterface "Vte" "CursorShape", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_cursor_shape" vte_terminal_set_cursor_shape :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- shape : TInterface "Vte" "CursorShape"
+    IO ()
+
+
+terminalSetCursorShape ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    CursorShape ->                          -- shape
+    m ()
+terminalSetCursorShape _obj shape = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let shape' = (fromIntegral . fromEnum) shape
+    vte_terminal_set_cursor_shape _obj' shape'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_default_colors
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_default_colors" vte_terminal_set_default_colors :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalSetDefaultColors ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalSetDefaultColors _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_set_default_colors _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_delete_binding
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "binding", argType = TInterface "Vte" "EraseBinding", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "binding", argType = TInterface "Vte" "EraseBinding", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_delete_binding" vte_terminal_set_delete_binding :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- binding : TInterface "Vte" "EraseBinding"
+    IO ()
+
+
+terminalSetDeleteBinding ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    EraseBinding ->                         -- binding
+    m ()
+terminalSetDeleteBinding _obj binding = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let binding' = (fromIntegral . fromEnum) binding
+    vte_terminal_set_delete_binding _obj' binding'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_encoding
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "codeset", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "codeset", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_encoding" vte_terminal_set_encoding :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CString ->                              -- codeset : TBasicType TUTF8
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+terminalSetEncoding ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (T.Text) ->                       -- codeset
+    m ()
+terminalSetEncoding _obj codeset = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeCodeset <- case codeset of
+        Nothing -> return nullPtr
+        Just jCodeset -> do
+            jCodeset' <- textToCString jCodeset
+            return jCodeset'
+    onException (do
+        _ <- propagateGError $ vte_terminal_set_encoding _obj' maybeCodeset
+        touchManagedPtr _obj
+        freeMem maybeCodeset
+        return ()
+     ) (do
+        freeMem maybeCodeset
+     )
+
+-- method Terminal::set_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_font" vte_terminal_set_font :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Pango.FontDescription ->            -- font_desc : TInterface "Pango" "FontDescription"
+    IO ()
+
+
+terminalSetFont ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Maybe (Pango.FontDescription) ->        -- font_desc
+    m ()
+terminalSetFont _obj font_desc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeFont_desc <- case font_desc of
+        Nothing -> return nullPtr
+        Just jFont_desc -> do
+            let jFont_desc' = unsafeManagedPtrGetPtr jFont_desc
+            return jFont_desc'
+    vte_terminal_set_font _obj' maybeFont_desc
+    touchManagedPtr _obj
+    whenJust font_desc touchManagedPtr
+    return ()
+
+-- method Terminal::set_font_scale
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale", 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 "vte_terminal_set_font_scale" vte_terminal_set_font_scale :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CDouble ->                              -- scale : TBasicType TDouble
+    IO ()
+
+
+terminalSetFontScale ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Double ->                               -- scale
+    m ()
+terminalSetFontScale _obj scale = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let scale' = realToFrac scale
+    vte_terminal_set_font_scale _obj' scale'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_geometry_hints_for_window
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_geometry_hints_for_window" vte_terminal_set_geometry_hints_for_window :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gtk.Window ->                       -- window : TInterface "Gtk" "Window"
+    IO ()
+
+
+terminalSetGeometryHintsForWindow ::
+    (MonadIO m, TerminalK a, Gtk.WindowK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- window
+    m ()
+terminalSetGeometryHintsForWindow _obj window = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let window' = unsafeManagedPtrCastPtr window
+    vte_terminal_set_geometry_hints_for_window _obj' window'
+    touchManagedPtr _obj
+    touchManagedPtr window
+    return ()
+
+-- method Terminal::set_input_enabled
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_input_enabled" vte_terminal_set_input_enabled :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- enabled : TBasicType TBoolean
+    IO ()
+
+
+terminalSetInputEnabled ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- enabled
+    m ()
+terminalSetInputEnabled _obj enabled = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let enabled' = (fromIntegral . fromEnum) enabled
+    vte_terminal_set_input_enabled _obj' enabled'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_mouse_autohide
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_mouse_autohide" vte_terminal_set_mouse_autohide :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- setting : TBasicType TBoolean
+    IO ()
+
+
+terminalSetMouseAutohide ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- setting
+    m ()
+terminalSetMouseAutohide _obj setting = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let setting' = (fromIntegral . fromEnum) setting
+    vte_terminal_set_mouse_autohide _obj' setting'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_pty
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pty", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pty", argType = TInterface "Vte" "Pty", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_pty" vte_terminal_set_pty :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Pty ->                              -- pty : TInterface "Vte" "Pty"
+    IO ()
+
+
+terminalSetPty ::
+    (MonadIO m, TerminalK a, PtyK b) =>
+    a ->                                    -- _obj
+    Maybe (b) ->                            -- pty
+    m ()
+terminalSetPty _obj pty = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybePty <- case pty of
+        Nothing -> return nullPtr
+        Just jPty -> do
+            let jPty' = unsafeManagedPtrCastPtr jPty
+            return jPty'
+    vte_terminal_set_pty _obj' maybePty
+    touchManagedPtr _obj
+    whenJust pty touchManagedPtr
+    return ()
+
+-- method Terminal::set_rewrap_on_resize
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rewrap", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rewrap", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_rewrap_on_resize" vte_terminal_set_rewrap_on_resize :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- rewrap : TBasicType TBoolean
+    IO ()
+
+
+terminalSetRewrapOnResize ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- rewrap
+    m ()
+terminalSetRewrapOnResize _obj rewrap = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let rewrap' = (fromIntegral . fromEnum) rewrap
+    vte_terminal_set_rewrap_on_resize _obj' rewrap'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_scroll_on_keystroke
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scroll", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scroll", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_scroll_on_keystroke" vte_terminal_set_scroll_on_keystroke :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- scroll : TBasicType TBoolean
+    IO ()
+
+
+terminalSetScrollOnKeystroke ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- scroll
+    m ()
+terminalSetScrollOnKeystroke _obj scroll = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let scroll' = (fromIntegral . fromEnum) scroll
+    vte_terminal_set_scroll_on_keystroke _obj' scroll'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_scroll_on_output
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scroll", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scroll", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_scroll_on_output" vte_terminal_set_scroll_on_output :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CInt ->                                 -- scroll : TBasicType TBoolean
+    IO ()
+
+
+terminalSetScrollOnOutput ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- scroll
+    m ()
+terminalSetScrollOnOutput _obj scroll = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let scroll' = (fromIntegral . fromEnum) scroll
+    vte_terminal_set_scroll_on_output _obj' scroll'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_scrollback_lines
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "lines", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "lines", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_scrollback_lines" vte_terminal_set_scrollback_lines :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int64 ->                                -- lines : TBasicType TInt64
+    IO ()
+
+
+terminalSetScrollbackLines ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int64 ->                                -- lines
+    m ()
+terminalSetScrollbackLines _obj lines = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_set_scrollback_lines _obj' lines
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "columns", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rows", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "columns", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rows", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_set_size" vte_terminal_set_size :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int64 ->                                -- columns : TBasicType TInt64
+    Int64 ->                                -- rows : TBasicType TInt64
+    IO ()
+
+
+terminalSetSize ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int64 ->                                -- columns
+    Int64 ->                                -- rows
+    m ()
+terminalSetSize _obj columns rows = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_set_size _obj' columns rows
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::set_word_char_exceptions
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "exceptions", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "exceptions", 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 "vte_terminal_set_word_char_exceptions" vte_terminal_set_word_char_exceptions :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CString ->                              -- exceptions : TBasicType TUTF8
+    IO ()
+
+
+terminalSetWordCharExceptions ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- exceptions
+    m ()
+terminalSetWordCharExceptions _obj exceptions = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    exceptions' <- textToCString exceptions
+    vte_terminal_set_word_char_exceptions _obj' exceptions'
+    touchManagedPtr _obj
+    freeMem exceptions'
+    return ()
+
+-- method Terminal::spawn_sync
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pty_flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "working_directory", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "argv", argType = TCArray True (-1) (-1) (TBasicType TFileName), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "envv", argType = TCArray True (-1) (-1) (TBasicType TFileName), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spawn_flags", argType = TInterface "GLib" "SpawnFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_setup", argType = TInterface "GLib" "SpawnChildSetupFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 7, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_setup_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_pid", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pty_flags", argType = TInterface "Vte" "PtyFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "working_directory", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "argv", argType = TCArray True (-1) (-1) (TBasicType TFileName), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "envv", argType = TCArray True (-1) (-1) (TBasicType TFileName), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spawn_flags", argType = TInterface "GLib" "SpawnFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_setup", argType = TInterface "GLib" "SpawnChildSetupFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeCall, argClosure = 7, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_terminal_spawn_sync" vte_terminal_spawn_sync :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    CUInt ->                                -- pty_flags : TInterface "Vte" "PtyFlags"
+    CString ->                              -- working_directory : TBasicType TUTF8
+    Ptr CString ->                          -- argv : TCArray True (-1) (-1) (TBasicType TFileName)
+    Ptr CString ->                          -- envv : TCArray True (-1) (-1) (TBasicType TFileName)
+    CUInt ->                                -- spawn_flags : TInterface "GLib" "SpawnFlags"
+    FunPtr GLib.SpawnChildSetupFuncC ->     -- child_setup : TInterface "GLib" "SpawnChildSetupFunc"
+    Ptr () ->                               -- child_setup_data : TBasicType TVoid
+    Ptr Int32 ->                            -- child_pid : TBasicType TInt32
+    Ptr Gio.Cancellable ->                  -- cancellable : TInterface "Gio" "Cancellable"
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+terminalSpawnSync ::
+    (MonadIO m, TerminalK a, Gio.CancellableK b) =>
+    a ->                                    -- _obj
+    [PtyFlags] ->                           -- pty_flags
+    Maybe (T.Text) ->                       -- working_directory
+    [[Char]] ->                             -- argv
+    Maybe ([[Char]]) ->                     -- envv
+    [GLib.SpawnFlags] ->                    -- spawn_flags
+    Maybe (GLib.SpawnChildSetupFunc) ->     -- child_setup
+    Maybe (b) ->                            -- cancellable
+    m (Int32)
+terminalSpawnSync _obj pty_flags working_directory argv envv spawn_flags child_setup cancellable = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let pty_flags' = gflagsToWord pty_flags
+    maybeWorking_directory <- case working_directory of
+        Nothing -> return nullPtr
+        Just jWorking_directory -> do
+            jWorking_directory' <- textToCString jWorking_directory
+            return jWorking_directory'
+    argv' <- packZeroTerminatedFileNameArray argv
+    maybeEnvv <- case envv of
+        Nothing -> return nullPtr
+        Just jEnvv -> do
+            jEnvv' <- packZeroTerminatedFileNameArray jEnvv
+            return jEnvv'
+    let spawn_flags' = gflagsToWord spawn_flags
+    maybeChild_setup <- case child_setup of
+        Nothing -> return (castPtrToFunPtr nullPtr)
+        Just jChild_setup -> do
+            jChild_setup' <- GLib.mkSpawnChildSetupFunc (GLib.spawnChildSetupFuncWrapper Nothing jChild_setup)
+            return jChild_setup'
+    child_pid <- allocMem :: IO (Ptr Int32)
+    maybeCancellable <- case cancellable of
+        Nothing -> return nullPtr
+        Just jCancellable -> do
+            let jCancellable' = unsafeManagedPtrCastPtr jCancellable
+            return jCancellable'
+    let child_setup_data = nullPtr
+    onException (do
+        _ <- propagateGError $ vte_terminal_spawn_sync _obj' pty_flags' maybeWorking_directory argv' maybeEnvv spawn_flags' maybeChild_setup child_setup_data child_pid maybeCancellable
+        child_pid' <- peek child_pid
+        safeFreeFunPtr $ castFunPtrToPtr maybeChild_setup
+        touchManagedPtr _obj
+        whenJust cancellable touchManagedPtr
+        freeMem maybeWorking_directory
+        mapZeroTerminatedCArray freeMem argv'
+        freeMem argv'
+        mapZeroTerminatedCArray freeMem maybeEnvv
+        freeMem maybeEnvv
+        freeMem child_pid
+        return child_pid'
+     ) (do
+        safeFreeFunPtr $ castFunPtrToPtr maybeChild_setup
+        freeMem maybeWorking_directory
+        mapZeroTerminatedCArray freeMem argv'
+        freeMem argv'
+        mapZeroTerminatedCArray freeMem maybeEnvv
+        freeMem maybeEnvv
+        freeMem child_pid
+     )
+
+-- method Terminal::unselect_all
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_terminal_unselect_all" vte_terminal_unselect_all :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    IO ()
+
+
+terminalUnselectAll ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    m ()
+terminalUnselectAll _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_unselect_all _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::watch_child
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_pid", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_pid", 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 "vte_terminal_watch_child" vte_terminal_watch_child :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Int32 ->                                -- child_pid : TBasicType TInt32
+    IO ()
+
+
+terminalWatchChild ::
+    (MonadIO m, TerminalK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- child_pid
+    m ()
+terminalWatchChild _obj child_pid = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    vte_terminal_watch_child _obj' child_pid
+    touchManagedPtr _obj
+    return ()
+
+-- method Terminal::write_contents_sync
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TInterface "Gio" "OutputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Vte" "WriteFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Vte" "Terminal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TInterface "Gio" "OutputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Vte" "WriteFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "vte_terminal_write_contents_sync" vte_terminal_write_contents_sync :: 
+    Ptr Terminal ->                         -- _obj : TInterface "Vte" "Terminal"
+    Ptr Gio.OutputStream ->                 -- stream : TInterface "Gio" "OutputStream"
+    CUInt ->                                -- flags : TInterface "Vte" "WriteFlags"
+    Ptr Gio.Cancellable ->                  -- cancellable : TInterface "Gio" "Cancellable"
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+terminalWriteContentsSync ::
+    (MonadIO m, TerminalK a, Gio.OutputStreamK b, Gio.CancellableK c) =>
+    a ->                                    -- _obj
+    b ->                                    -- stream
+    WriteFlags ->                           -- flags
+    Maybe (c) ->                            -- cancellable
+    m ()
+terminalWriteContentsSync _obj stream flags cancellable = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let stream' = unsafeManagedPtrCastPtr stream
+    let flags' = (fromIntegral . fromEnum) flags
+    maybeCancellable <- case cancellable of
+        Nothing -> return nullPtr
+        Just jCancellable -> do
+            let jCancellable' = unsafeManagedPtrCastPtr jCancellable
+            return jCancellable'
+    onException (do
+        _ <- propagateGError $ vte_terminal_write_contents_sync _obj' stream' flags' maybeCancellable
+        touchManagedPtr _obj
+        touchManagedPtr stream
+        whenJust cancellable touchManagedPtr
+        return ()
+     ) (do
+        return ()
+     )
+
+-- signal Terminal::bell
+type TerminalBellCallback =
+    IO ()
+
+noTerminalBellCallback :: Maybe TerminalBellCallback
+noTerminalBellCallback = Nothing
+
+type TerminalBellCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalBellCallback :: TerminalBellCallbackC -> IO (FunPtr TerminalBellCallbackC)
+
+terminalBellClosure :: TerminalBellCallback -> IO Closure
+terminalBellClosure cb = newCClosure =<< mkTerminalBellCallback wrapped
+    where wrapped = terminalBellCallbackWrapper cb
+
+terminalBellCallbackWrapper ::
+    TerminalBellCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalBellCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalBell :: (GObject a, MonadIO m) => a -> TerminalBellCallback -> m SignalHandlerId
+onTerminalBell obj cb = liftIO $ connectTerminalBell obj cb SignalConnectBefore
+afterTerminalBell :: (GObject a, MonadIO m) => a -> TerminalBellCallback -> m SignalHandlerId
+afterTerminalBell obj cb = connectTerminalBell obj cb SignalConnectAfter
+
+connectTerminalBell :: (GObject a, MonadIO m) =>
+                       a -> TerminalBellCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalBell obj cb after = liftIO $ do
+    cb' <- mkTerminalBellCallback (terminalBellCallbackWrapper cb)
+    connectSignalFunPtr obj "bell" cb' after
+
+-- signal Terminal::char-size-changed
+type TerminalCharSizeChangedCallback =
+    Word32 ->
+    Word32 ->
+    IO ()
+
+noTerminalCharSizeChangedCallback :: Maybe TerminalCharSizeChangedCallback
+noTerminalCharSizeChangedCallback = Nothing
+
+type TerminalCharSizeChangedCallbackC =
+    Ptr () ->                               -- object
+    Word32 ->
+    Word32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCharSizeChangedCallback :: TerminalCharSizeChangedCallbackC -> IO (FunPtr TerminalCharSizeChangedCallbackC)
+
+terminalCharSizeChangedClosure :: TerminalCharSizeChangedCallback -> IO Closure
+terminalCharSizeChangedClosure cb = newCClosure =<< mkTerminalCharSizeChangedCallback wrapped
+    where wrapped = terminalCharSizeChangedCallbackWrapper cb
+
+terminalCharSizeChangedCallbackWrapper ::
+    TerminalCharSizeChangedCallback ->
+    Ptr () ->
+    Word32 ->
+    Word32 ->
+    Ptr () ->
+    IO ()
+terminalCharSizeChangedCallbackWrapper _cb _ width height _ = do
+    _cb  width height
+
+onTerminalCharSizeChanged :: (GObject a, MonadIO m) => a -> TerminalCharSizeChangedCallback -> m SignalHandlerId
+onTerminalCharSizeChanged obj cb = liftIO $ connectTerminalCharSizeChanged obj cb SignalConnectBefore
+afterTerminalCharSizeChanged :: (GObject a, MonadIO m) => a -> TerminalCharSizeChangedCallback -> m SignalHandlerId
+afterTerminalCharSizeChanged obj cb = connectTerminalCharSizeChanged obj cb SignalConnectAfter
+
+connectTerminalCharSizeChanged :: (GObject a, MonadIO m) =>
+                                  a -> TerminalCharSizeChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCharSizeChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalCharSizeChangedCallback (terminalCharSizeChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "char-size-changed" cb' after
+
+-- signal Terminal::child-exited
+type TerminalChildExitedCallback =
+    Int32 ->
+    IO ()
+
+noTerminalChildExitedCallback :: Maybe TerminalChildExitedCallback
+noTerminalChildExitedCallback = Nothing
+
+type TerminalChildExitedCallbackC =
+    Ptr () ->                               -- object
+    Int32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalChildExitedCallback :: TerminalChildExitedCallbackC -> IO (FunPtr TerminalChildExitedCallbackC)
+
+terminalChildExitedClosure :: TerminalChildExitedCallback -> IO Closure
+terminalChildExitedClosure cb = newCClosure =<< mkTerminalChildExitedCallback wrapped
+    where wrapped = terminalChildExitedCallbackWrapper cb
+
+terminalChildExitedCallbackWrapper ::
+    TerminalChildExitedCallback ->
+    Ptr () ->
+    Int32 ->
+    Ptr () ->
+    IO ()
+terminalChildExitedCallbackWrapper _cb _ status _ = do
+    _cb  status
+
+onTerminalChildExited :: (GObject a, MonadIO m) => a -> TerminalChildExitedCallback -> m SignalHandlerId
+onTerminalChildExited obj cb = liftIO $ connectTerminalChildExited obj cb SignalConnectBefore
+afterTerminalChildExited :: (GObject a, MonadIO m) => a -> TerminalChildExitedCallback -> m SignalHandlerId
+afterTerminalChildExited obj cb = connectTerminalChildExited obj cb SignalConnectAfter
+
+connectTerminalChildExited :: (GObject a, MonadIO m) =>
+                              a -> TerminalChildExitedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalChildExited obj cb after = liftIO $ do
+    cb' <- mkTerminalChildExitedCallback (terminalChildExitedCallbackWrapper cb)
+    connectSignalFunPtr obj "child-exited" cb' after
+
+-- signal Terminal::commit
+type TerminalCommitCallback =
+    T.Text ->
+    Word32 ->
+    IO ()
+
+noTerminalCommitCallback :: Maybe TerminalCommitCallback
+noTerminalCommitCallback = Nothing
+
+type TerminalCommitCallbackC =
+    Ptr () ->                               -- object
+    CString ->
+    Word32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCommitCallback :: TerminalCommitCallbackC -> IO (FunPtr TerminalCommitCallbackC)
+
+terminalCommitClosure :: TerminalCommitCallback -> IO Closure
+terminalCommitClosure cb = newCClosure =<< mkTerminalCommitCallback wrapped
+    where wrapped = terminalCommitCallbackWrapper cb
+
+terminalCommitCallbackWrapper ::
+    TerminalCommitCallback ->
+    Ptr () ->
+    CString ->
+    Word32 ->
+    Ptr () ->
+    IO ()
+terminalCommitCallbackWrapper _cb _ text size _ = do
+    text' <- cstringToText text
+    _cb  text' size
+
+onTerminalCommit :: (GObject a, MonadIO m) => a -> TerminalCommitCallback -> m SignalHandlerId
+onTerminalCommit obj cb = liftIO $ connectTerminalCommit obj cb SignalConnectBefore
+afterTerminalCommit :: (GObject a, MonadIO m) => a -> TerminalCommitCallback -> m SignalHandlerId
+afterTerminalCommit obj cb = connectTerminalCommit obj cb SignalConnectAfter
+
+connectTerminalCommit :: (GObject a, MonadIO m) =>
+                         a -> TerminalCommitCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCommit obj cb after = liftIO $ do
+    cb' <- mkTerminalCommitCallback (terminalCommitCallbackWrapper cb)
+    connectSignalFunPtr obj "commit" cb' after
+
+-- signal Terminal::contents-changed
+type TerminalContentsChangedCallback =
+    IO ()
+
+noTerminalContentsChangedCallback :: Maybe TerminalContentsChangedCallback
+noTerminalContentsChangedCallback = Nothing
+
+type TerminalContentsChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalContentsChangedCallback :: TerminalContentsChangedCallbackC -> IO (FunPtr TerminalContentsChangedCallbackC)
+
+terminalContentsChangedClosure :: TerminalContentsChangedCallback -> IO Closure
+terminalContentsChangedClosure cb = newCClosure =<< mkTerminalContentsChangedCallback wrapped
+    where wrapped = terminalContentsChangedCallbackWrapper cb
+
+terminalContentsChangedCallbackWrapper ::
+    TerminalContentsChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalContentsChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalContentsChanged :: (GObject a, MonadIO m) => a -> TerminalContentsChangedCallback -> m SignalHandlerId
+onTerminalContentsChanged obj cb = liftIO $ connectTerminalContentsChanged obj cb SignalConnectBefore
+afterTerminalContentsChanged :: (GObject a, MonadIO m) => a -> TerminalContentsChangedCallback -> m SignalHandlerId
+afterTerminalContentsChanged obj cb = connectTerminalContentsChanged obj cb SignalConnectAfter
+
+connectTerminalContentsChanged :: (GObject a, MonadIO m) =>
+                                  a -> TerminalContentsChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalContentsChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalContentsChangedCallback (terminalContentsChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "contents-changed" cb' after
+
+-- signal Terminal::copy-clipboard
+type TerminalCopyClipboardCallback =
+    IO ()
+
+noTerminalCopyClipboardCallback :: Maybe TerminalCopyClipboardCallback
+noTerminalCopyClipboardCallback = Nothing
+
+type TerminalCopyClipboardCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCopyClipboardCallback :: TerminalCopyClipboardCallbackC -> IO (FunPtr TerminalCopyClipboardCallbackC)
+
+terminalCopyClipboardClosure :: TerminalCopyClipboardCallback -> IO Closure
+terminalCopyClipboardClosure cb = newCClosure =<< mkTerminalCopyClipboardCallback wrapped
+    where wrapped = terminalCopyClipboardCallbackWrapper cb
+
+terminalCopyClipboardCallbackWrapper ::
+    TerminalCopyClipboardCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalCopyClipboardCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalCopyClipboard :: (GObject a, MonadIO m) => a -> TerminalCopyClipboardCallback -> m SignalHandlerId
+onTerminalCopyClipboard obj cb = liftIO $ connectTerminalCopyClipboard obj cb SignalConnectBefore
+afterTerminalCopyClipboard :: (GObject a, MonadIO m) => a -> TerminalCopyClipboardCallback -> m SignalHandlerId
+afterTerminalCopyClipboard obj cb = connectTerminalCopyClipboard obj cb SignalConnectAfter
+
+connectTerminalCopyClipboard :: (GObject a, MonadIO m) =>
+                                a -> TerminalCopyClipboardCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCopyClipboard obj cb after = liftIO $ do
+    cb' <- mkTerminalCopyClipboardCallback (terminalCopyClipboardCallbackWrapper cb)
+    connectSignalFunPtr obj "copy-clipboard" cb' after
+
+-- signal Terminal::current-directory-uri-changed
+type TerminalCurrentDirectoryUriChangedCallback =
+    IO ()
+
+noTerminalCurrentDirectoryUriChangedCallback :: Maybe TerminalCurrentDirectoryUriChangedCallback
+noTerminalCurrentDirectoryUriChangedCallback = Nothing
+
+type TerminalCurrentDirectoryUriChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCurrentDirectoryUriChangedCallback :: TerminalCurrentDirectoryUriChangedCallbackC -> IO (FunPtr TerminalCurrentDirectoryUriChangedCallbackC)
+
+terminalCurrentDirectoryUriChangedClosure :: TerminalCurrentDirectoryUriChangedCallback -> IO Closure
+terminalCurrentDirectoryUriChangedClosure cb = newCClosure =<< mkTerminalCurrentDirectoryUriChangedCallback wrapped
+    where wrapped = terminalCurrentDirectoryUriChangedCallbackWrapper cb
+
+terminalCurrentDirectoryUriChangedCallbackWrapper ::
+    TerminalCurrentDirectoryUriChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalCurrentDirectoryUriChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalCurrentDirectoryUriChanged :: (GObject a, MonadIO m) => a -> TerminalCurrentDirectoryUriChangedCallback -> m SignalHandlerId
+onTerminalCurrentDirectoryUriChanged obj cb = liftIO $ connectTerminalCurrentDirectoryUriChanged obj cb SignalConnectBefore
+afterTerminalCurrentDirectoryUriChanged :: (GObject a, MonadIO m) => a -> TerminalCurrentDirectoryUriChangedCallback -> m SignalHandlerId
+afterTerminalCurrentDirectoryUriChanged obj cb = connectTerminalCurrentDirectoryUriChanged obj cb SignalConnectAfter
+
+connectTerminalCurrentDirectoryUriChanged :: (GObject a, MonadIO m) =>
+                                             a -> TerminalCurrentDirectoryUriChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCurrentDirectoryUriChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalCurrentDirectoryUriChangedCallback (terminalCurrentDirectoryUriChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "current-directory-uri-changed" cb' after
+
+-- signal Terminal::current-file-uri-changed
+type TerminalCurrentFileUriChangedCallback =
+    IO ()
+
+noTerminalCurrentFileUriChangedCallback :: Maybe TerminalCurrentFileUriChangedCallback
+noTerminalCurrentFileUriChangedCallback = Nothing
+
+type TerminalCurrentFileUriChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCurrentFileUriChangedCallback :: TerminalCurrentFileUriChangedCallbackC -> IO (FunPtr TerminalCurrentFileUriChangedCallbackC)
+
+terminalCurrentFileUriChangedClosure :: TerminalCurrentFileUriChangedCallback -> IO Closure
+terminalCurrentFileUriChangedClosure cb = newCClosure =<< mkTerminalCurrentFileUriChangedCallback wrapped
+    where wrapped = terminalCurrentFileUriChangedCallbackWrapper cb
+
+terminalCurrentFileUriChangedCallbackWrapper ::
+    TerminalCurrentFileUriChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalCurrentFileUriChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalCurrentFileUriChanged :: (GObject a, MonadIO m) => a -> TerminalCurrentFileUriChangedCallback -> m SignalHandlerId
+onTerminalCurrentFileUriChanged obj cb = liftIO $ connectTerminalCurrentFileUriChanged obj cb SignalConnectBefore
+afterTerminalCurrentFileUriChanged :: (GObject a, MonadIO m) => a -> TerminalCurrentFileUriChangedCallback -> m SignalHandlerId
+afterTerminalCurrentFileUriChanged obj cb = connectTerminalCurrentFileUriChanged obj cb SignalConnectAfter
+
+connectTerminalCurrentFileUriChanged :: (GObject a, MonadIO m) =>
+                                        a -> TerminalCurrentFileUriChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCurrentFileUriChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalCurrentFileUriChangedCallback (terminalCurrentFileUriChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "current-file-uri-changed" cb' after
+
+-- signal Terminal::cursor-moved
+type TerminalCursorMovedCallback =
+    IO ()
+
+noTerminalCursorMovedCallback :: Maybe TerminalCursorMovedCallback
+noTerminalCursorMovedCallback = Nothing
+
+type TerminalCursorMovedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalCursorMovedCallback :: TerminalCursorMovedCallbackC -> IO (FunPtr TerminalCursorMovedCallbackC)
+
+terminalCursorMovedClosure :: TerminalCursorMovedCallback -> IO Closure
+terminalCursorMovedClosure cb = newCClosure =<< mkTerminalCursorMovedCallback wrapped
+    where wrapped = terminalCursorMovedCallbackWrapper cb
+
+terminalCursorMovedCallbackWrapper ::
+    TerminalCursorMovedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalCursorMovedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalCursorMoved :: (GObject a, MonadIO m) => a -> TerminalCursorMovedCallback -> m SignalHandlerId
+onTerminalCursorMoved obj cb = liftIO $ connectTerminalCursorMoved obj cb SignalConnectBefore
+afterTerminalCursorMoved :: (GObject a, MonadIO m) => a -> TerminalCursorMovedCallback -> m SignalHandlerId
+afterTerminalCursorMoved obj cb = connectTerminalCursorMoved obj cb SignalConnectAfter
+
+connectTerminalCursorMoved :: (GObject a, MonadIO m) =>
+                              a -> TerminalCursorMovedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalCursorMoved obj cb after = liftIO $ do
+    cb' <- mkTerminalCursorMovedCallback (terminalCursorMovedCallbackWrapper cb)
+    connectSignalFunPtr obj "cursor-moved" cb' after
+
+-- signal Terminal::decrease-font-size
+type TerminalDecreaseFontSizeCallback =
+    IO ()
+
+noTerminalDecreaseFontSizeCallback :: Maybe TerminalDecreaseFontSizeCallback
+noTerminalDecreaseFontSizeCallback = Nothing
+
+type TerminalDecreaseFontSizeCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalDecreaseFontSizeCallback :: TerminalDecreaseFontSizeCallbackC -> IO (FunPtr TerminalDecreaseFontSizeCallbackC)
+
+terminalDecreaseFontSizeClosure :: TerminalDecreaseFontSizeCallback -> IO Closure
+terminalDecreaseFontSizeClosure cb = newCClosure =<< mkTerminalDecreaseFontSizeCallback wrapped
+    where wrapped = terminalDecreaseFontSizeCallbackWrapper cb
+
+terminalDecreaseFontSizeCallbackWrapper ::
+    TerminalDecreaseFontSizeCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalDecreaseFontSizeCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalDecreaseFontSize :: (GObject a, MonadIO m) => a -> TerminalDecreaseFontSizeCallback -> m SignalHandlerId
+onTerminalDecreaseFontSize obj cb = liftIO $ connectTerminalDecreaseFontSize obj cb SignalConnectBefore
+afterTerminalDecreaseFontSize :: (GObject a, MonadIO m) => a -> TerminalDecreaseFontSizeCallback -> m SignalHandlerId
+afterTerminalDecreaseFontSize obj cb = connectTerminalDecreaseFontSize obj cb SignalConnectAfter
+
+connectTerminalDecreaseFontSize :: (GObject a, MonadIO m) =>
+                                   a -> TerminalDecreaseFontSizeCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalDecreaseFontSize obj cb after = liftIO $ do
+    cb' <- mkTerminalDecreaseFontSizeCallback (terminalDecreaseFontSizeCallbackWrapper cb)
+    connectSignalFunPtr obj "decrease-font-size" cb' after
+
+-- signal Terminal::deiconify-window
+type TerminalDeiconifyWindowCallback =
+    IO ()
+
+noTerminalDeiconifyWindowCallback :: Maybe TerminalDeiconifyWindowCallback
+noTerminalDeiconifyWindowCallback = Nothing
+
+type TerminalDeiconifyWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalDeiconifyWindowCallback :: TerminalDeiconifyWindowCallbackC -> IO (FunPtr TerminalDeiconifyWindowCallbackC)
+
+terminalDeiconifyWindowClosure :: TerminalDeiconifyWindowCallback -> IO Closure
+terminalDeiconifyWindowClosure cb = newCClosure =<< mkTerminalDeiconifyWindowCallback wrapped
+    where wrapped = terminalDeiconifyWindowCallbackWrapper cb
+
+terminalDeiconifyWindowCallbackWrapper ::
+    TerminalDeiconifyWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalDeiconifyWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalDeiconifyWindow :: (GObject a, MonadIO m) => a -> TerminalDeiconifyWindowCallback -> m SignalHandlerId
+onTerminalDeiconifyWindow obj cb = liftIO $ connectTerminalDeiconifyWindow obj cb SignalConnectBefore
+afterTerminalDeiconifyWindow :: (GObject a, MonadIO m) => a -> TerminalDeiconifyWindowCallback -> m SignalHandlerId
+afterTerminalDeiconifyWindow obj cb = connectTerminalDeiconifyWindow obj cb SignalConnectAfter
+
+connectTerminalDeiconifyWindow :: (GObject a, MonadIO m) =>
+                                  a -> TerminalDeiconifyWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalDeiconifyWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalDeiconifyWindowCallback (terminalDeiconifyWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "deiconify-window" cb' after
+
+-- signal Terminal::encoding-changed
+type TerminalEncodingChangedCallback =
+    IO ()
+
+noTerminalEncodingChangedCallback :: Maybe TerminalEncodingChangedCallback
+noTerminalEncodingChangedCallback = Nothing
+
+type TerminalEncodingChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalEncodingChangedCallback :: TerminalEncodingChangedCallbackC -> IO (FunPtr TerminalEncodingChangedCallbackC)
+
+terminalEncodingChangedClosure :: TerminalEncodingChangedCallback -> IO Closure
+terminalEncodingChangedClosure cb = newCClosure =<< mkTerminalEncodingChangedCallback wrapped
+    where wrapped = terminalEncodingChangedCallbackWrapper cb
+
+terminalEncodingChangedCallbackWrapper ::
+    TerminalEncodingChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalEncodingChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalEncodingChanged :: (GObject a, MonadIO m) => a -> TerminalEncodingChangedCallback -> m SignalHandlerId
+onTerminalEncodingChanged obj cb = liftIO $ connectTerminalEncodingChanged obj cb SignalConnectBefore
+afterTerminalEncodingChanged :: (GObject a, MonadIO m) => a -> TerminalEncodingChangedCallback -> m SignalHandlerId
+afterTerminalEncodingChanged obj cb = connectTerminalEncodingChanged obj cb SignalConnectAfter
+
+connectTerminalEncodingChanged :: (GObject a, MonadIO m) =>
+                                  a -> TerminalEncodingChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalEncodingChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalEncodingChangedCallback (terminalEncodingChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "encoding-changed" cb' after
+
+-- signal Terminal::eof
+type TerminalEofCallback =
+    IO ()
+
+noTerminalEofCallback :: Maybe TerminalEofCallback
+noTerminalEofCallback = Nothing
+
+type TerminalEofCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalEofCallback :: TerminalEofCallbackC -> IO (FunPtr TerminalEofCallbackC)
+
+terminalEofClosure :: TerminalEofCallback -> IO Closure
+terminalEofClosure cb = newCClosure =<< mkTerminalEofCallback wrapped
+    where wrapped = terminalEofCallbackWrapper cb
+
+terminalEofCallbackWrapper ::
+    TerminalEofCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalEofCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalEof :: (GObject a, MonadIO m) => a -> TerminalEofCallback -> m SignalHandlerId
+onTerminalEof obj cb = liftIO $ connectTerminalEof obj cb SignalConnectBefore
+afterTerminalEof :: (GObject a, MonadIO m) => a -> TerminalEofCallback -> m SignalHandlerId
+afterTerminalEof obj cb = connectTerminalEof obj cb SignalConnectAfter
+
+connectTerminalEof :: (GObject a, MonadIO m) =>
+                      a -> TerminalEofCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalEof obj cb after = liftIO $ do
+    cb' <- mkTerminalEofCallback (terminalEofCallbackWrapper cb)
+    connectSignalFunPtr obj "eof" cb' after
+
+-- signal Terminal::icon-title-changed
+type TerminalIconTitleChangedCallback =
+    IO ()
+
+noTerminalIconTitleChangedCallback :: Maybe TerminalIconTitleChangedCallback
+noTerminalIconTitleChangedCallback = Nothing
+
+type TerminalIconTitleChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalIconTitleChangedCallback :: TerminalIconTitleChangedCallbackC -> IO (FunPtr TerminalIconTitleChangedCallbackC)
+
+terminalIconTitleChangedClosure :: TerminalIconTitleChangedCallback -> IO Closure
+terminalIconTitleChangedClosure cb = newCClosure =<< mkTerminalIconTitleChangedCallback wrapped
+    where wrapped = terminalIconTitleChangedCallbackWrapper cb
+
+terminalIconTitleChangedCallbackWrapper ::
+    TerminalIconTitleChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalIconTitleChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalIconTitleChanged :: (GObject a, MonadIO m) => a -> TerminalIconTitleChangedCallback -> m SignalHandlerId
+onTerminalIconTitleChanged obj cb = liftIO $ connectTerminalIconTitleChanged obj cb SignalConnectBefore
+afterTerminalIconTitleChanged :: (GObject a, MonadIO m) => a -> TerminalIconTitleChangedCallback -> m SignalHandlerId
+afterTerminalIconTitleChanged obj cb = connectTerminalIconTitleChanged obj cb SignalConnectAfter
+
+connectTerminalIconTitleChanged :: (GObject a, MonadIO m) =>
+                                   a -> TerminalIconTitleChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalIconTitleChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalIconTitleChangedCallback (terminalIconTitleChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "icon-title-changed" cb' after
+
+-- signal Terminal::iconify-window
+type TerminalIconifyWindowCallback =
+    IO ()
+
+noTerminalIconifyWindowCallback :: Maybe TerminalIconifyWindowCallback
+noTerminalIconifyWindowCallback = Nothing
+
+type TerminalIconifyWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalIconifyWindowCallback :: TerminalIconifyWindowCallbackC -> IO (FunPtr TerminalIconifyWindowCallbackC)
+
+terminalIconifyWindowClosure :: TerminalIconifyWindowCallback -> IO Closure
+terminalIconifyWindowClosure cb = newCClosure =<< mkTerminalIconifyWindowCallback wrapped
+    where wrapped = terminalIconifyWindowCallbackWrapper cb
+
+terminalIconifyWindowCallbackWrapper ::
+    TerminalIconifyWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalIconifyWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalIconifyWindow :: (GObject a, MonadIO m) => a -> TerminalIconifyWindowCallback -> m SignalHandlerId
+onTerminalIconifyWindow obj cb = liftIO $ connectTerminalIconifyWindow obj cb SignalConnectBefore
+afterTerminalIconifyWindow :: (GObject a, MonadIO m) => a -> TerminalIconifyWindowCallback -> m SignalHandlerId
+afterTerminalIconifyWindow obj cb = connectTerminalIconifyWindow obj cb SignalConnectAfter
+
+connectTerminalIconifyWindow :: (GObject a, MonadIO m) =>
+                                a -> TerminalIconifyWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalIconifyWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalIconifyWindowCallback (terminalIconifyWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "iconify-window" cb' after
+
+-- signal Terminal::increase-font-size
+type TerminalIncreaseFontSizeCallback =
+    IO ()
+
+noTerminalIncreaseFontSizeCallback :: Maybe TerminalIncreaseFontSizeCallback
+noTerminalIncreaseFontSizeCallback = Nothing
+
+type TerminalIncreaseFontSizeCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalIncreaseFontSizeCallback :: TerminalIncreaseFontSizeCallbackC -> IO (FunPtr TerminalIncreaseFontSizeCallbackC)
+
+terminalIncreaseFontSizeClosure :: TerminalIncreaseFontSizeCallback -> IO Closure
+terminalIncreaseFontSizeClosure cb = newCClosure =<< mkTerminalIncreaseFontSizeCallback wrapped
+    where wrapped = terminalIncreaseFontSizeCallbackWrapper cb
+
+terminalIncreaseFontSizeCallbackWrapper ::
+    TerminalIncreaseFontSizeCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalIncreaseFontSizeCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalIncreaseFontSize :: (GObject a, MonadIO m) => a -> TerminalIncreaseFontSizeCallback -> m SignalHandlerId
+onTerminalIncreaseFontSize obj cb = liftIO $ connectTerminalIncreaseFontSize obj cb SignalConnectBefore
+afterTerminalIncreaseFontSize :: (GObject a, MonadIO m) => a -> TerminalIncreaseFontSizeCallback -> m SignalHandlerId
+afterTerminalIncreaseFontSize obj cb = connectTerminalIncreaseFontSize obj cb SignalConnectAfter
+
+connectTerminalIncreaseFontSize :: (GObject a, MonadIO m) =>
+                                   a -> TerminalIncreaseFontSizeCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalIncreaseFontSize obj cb after = liftIO $ do
+    cb' <- mkTerminalIncreaseFontSizeCallback (terminalIncreaseFontSizeCallbackWrapper cb)
+    connectSignalFunPtr obj "increase-font-size" cb' after
+
+-- signal Terminal::lower-window
+type TerminalLowerWindowCallback =
+    IO ()
+
+noTerminalLowerWindowCallback :: Maybe TerminalLowerWindowCallback
+noTerminalLowerWindowCallback = Nothing
+
+type TerminalLowerWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalLowerWindowCallback :: TerminalLowerWindowCallbackC -> IO (FunPtr TerminalLowerWindowCallbackC)
+
+terminalLowerWindowClosure :: TerminalLowerWindowCallback -> IO Closure
+terminalLowerWindowClosure cb = newCClosure =<< mkTerminalLowerWindowCallback wrapped
+    where wrapped = terminalLowerWindowCallbackWrapper cb
+
+terminalLowerWindowCallbackWrapper ::
+    TerminalLowerWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalLowerWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalLowerWindow :: (GObject a, MonadIO m) => a -> TerminalLowerWindowCallback -> m SignalHandlerId
+onTerminalLowerWindow obj cb = liftIO $ connectTerminalLowerWindow obj cb SignalConnectBefore
+afterTerminalLowerWindow :: (GObject a, MonadIO m) => a -> TerminalLowerWindowCallback -> m SignalHandlerId
+afterTerminalLowerWindow obj cb = connectTerminalLowerWindow obj cb SignalConnectAfter
+
+connectTerminalLowerWindow :: (GObject a, MonadIO m) =>
+                              a -> TerminalLowerWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalLowerWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalLowerWindowCallback (terminalLowerWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "lower-window" cb' after
+
+-- signal Terminal::maximize-window
+type TerminalMaximizeWindowCallback =
+    IO ()
+
+noTerminalMaximizeWindowCallback :: Maybe TerminalMaximizeWindowCallback
+noTerminalMaximizeWindowCallback = Nothing
+
+type TerminalMaximizeWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalMaximizeWindowCallback :: TerminalMaximizeWindowCallbackC -> IO (FunPtr TerminalMaximizeWindowCallbackC)
+
+terminalMaximizeWindowClosure :: TerminalMaximizeWindowCallback -> IO Closure
+terminalMaximizeWindowClosure cb = newCClosure =<< mkTerminalMaximizeWindowCallback wrapped
+    where wrapped = terminalMaximizeWindowCallbackWrapper cb
+
+terminalMaximizeWindowCallbackWrapper ::
+    TerminalMaximizeWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalMaximizeWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalMaximizeWindow :: (GObject a, MonadIO m) => a -> TerminalMaximizeWindowCallback -> m SignalHandlerId
+onTerminalMaximizeWindow obj cb = liftIO $ connectTerminalMaximizeWindow obj cb SignalConnectBefore
+afterTerminalMaximizeWindow :: (GObject a, MonadIO m) => a -> TerminalMaximizeWindowCallback -> m SignalHandlerId
+afterTerminalMaximizeWindow obj cb = connectTerminalMaximizeWindow obj cb SignalConnectAfter
+
+connectTerminalMaximizeWindow :: (GObject a, MonadIO m) =>
+                                 a -> TerminalMaximizeWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalMaximizeWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalMaximizeWindowCallback (terminalMaximizeWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "maximize-window" cb' after
+
+-- signal Terminal::move-window
+type TerminalMoveWindowCallback =
+    Word32 ->
+    Word32 ->
+    IO ()
+
+noTerminalMoveWindowCallback :: Maybe TerminalMoveWindowCallback
+noTerminalMoveWindowCallback = Nothing
+
+type TerminalMoveWindowCallbackC =
+    Ptr () ->                               -- object
+    Word32 ->
+    Word32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalMoveWindowCallback :: TerminalMoveWindowCallbackC -> IO (FunPtr TerminalMoveWindowCallbackC)
+
+terminalMoveWindowClosure :: TerminalMoveWindowCallback -> IO Closure
+terminalMoveWindowClosure cb = newCClosure =<< mkTerminalMoveWindowCallback wrapped
+    where wrapped = terminalMoveWindowCallbackWrapper cb
+
+terminalMoveWindowCallbackWrapper ::
+    TerminalMoveWindowCallback ->
+    Ptr () ->
+    Word32 ->
+    Word32 ->
+    Ptr () ->
+    IO ()
+terminalMoveWindowCallbackWrapper _cb _ x y _ = do
+    _cb  x y
+
+onTerminalMoveWindow :: (GObject a, MonadIO m) => a -> TerminalMoveWindowCallback -> m SignalHandlerId
+onTerminalMoveWindow obj cb = liftIO $ connectTerminalMoveWindow obj cb SignalConnectBefore
+afterTerminalMoveWindow :: (GObject a, MonadIO m) => a -> TerminalMoveWindowCallback -> m SignalHandlerId
+afterTerminalMoveWindow obj cb = connectTerminalMoveWindow obj cb SignalConnectAfter
+
+connectTerminalMoveWindow :: (GObject a, MonadIO m) =>
+                             a -> TerminalMoveWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalMoveWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalMoveWindowCallback (terminalMoveWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "move-window" cb' after
+
+-- signal Terminal::notification-received
+type TerminalNotificationReceivedCallback =
+    T.Text ->
+    Maybe T.Text ->
+    IO ()
+
+noTerminalNotificationReceivedCallback :: Maybe TerminalNotificationReceivedCallback
+noTerminalNotificationReceivedCallback = Nothing
+
+type TerminalNotificationReceivedCallbackC =
+    Ptr () ->                               -- object
+    CString ->
+    CString ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalNotificationReceivedCallback :: TerminalNotificationReceivedCallbackC -> IO (FunPtr TerminalNotificationReceivedCallbackC)
+
+terminalNotificationReceivedClosure :: TerminalNotificationReceivedCallback -> IO Closure
+terminalNotificationReceivedClosure cb = newCClosure =<< mkTerminalNotificationReceivedCallback wrapped
+    where wrapped = terminalNotificationReceivedCallbackWrapper cb
+
+terminalNotificationReceivedCallbackWrapper ::
+    TerminalNotificationReceivedCallback ->
+    Ptr () ->
+    CString ->
+    CString ->
+    Ptr () ->
+    IO ()
+terminalNotificationReceivedCallbackWrapper _cb _ summary body _ = do
+    summary' <- cstringToText summary
+    maybeBody <-
+        if body == nullPtr
+        then return Nothing
+        else do
+            body' <- cstringToText body
+            return $ Just body'
+    _cb  summary' maybeBody
+
+onTerminalNotificationReceived :: (GObject a, MonadIO m) => a -> TerminalNotificationReceivedCallback -> m SignalHandlerId
+onTerminalNotificationReceived obj cb = liftIO $ connectTerminalNotificationReceived obj cb SignalConnectBefore
+afterTerminalNotificationReceived :: (GObject a, MonadIO m) => a -> TerminalNotificationReceivedCallback -> m SignalHandlerId
+afterTerminalNotificationReceived obj cb = connectTerminalNotificationReceived obj cb SignalConnectAfter
+
+connectTerminalNotificationReceived :: (GObject a, MonadIO m) =>
+                                       a -> TerminalNotificationReceivedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalNotificationReceived obj cb after = liftIO $ do
+    cb' <- mkTerminalNotificationReceivedCallback (terminalNotificationReceivedCallbackWrapper cb)
+    connectSignalFunPtr obj "notification-received" cb' after
+
+-- signal Terminal::paste-clipboard
+type TerminalPasteClipboardCallback =
+    IO ()
+
+noTerminalPasteClipboardCallback :: Maybe TerminalPasteClipboardCallback
+noTerminalPasteClipboardCallback = Nothing
+
+type TerminalPasteClipboardCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalPasteClipboardCallback :: TerminalPasteClipboardCallbackC -> IO (FunPtr TerminalPasteClipboardCallbackC)
+
+terminalPasteClipboardClosure :: TerminalPasteClipboardCallback -> IO Closure
+terminalPasteClipboardClosure cb = newCClosure =<< mkTerminalPasteClipboardCallback wrapped
+    where wrapped = terminalPasteClipboardCallbackWrapper cb
+
+terminalPasteClipboardCallbackWrapper ::
+    TerminalPasteClipboardCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalPasteClipboardCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalPasteClipboard :: (GObject a, MonadIO m) => a -> TerminalPasteClipboardCallback -> m SignalHandlerId
+onTerminalPasteClipboard obj cb = liftIO $ connectTerminalPasteClipboard obj cb SignalConnectBefore
+afterTerminalPasteClipboard :: (GObject a, MonadIO m) => a -> TerminalPasteClipboardCallback -> m SignalHandlerId
+afterTerminalPasteClipboard obj cb = connectTerminalPasteClipboard obj cb SignalConnectAfter
+
+connectTerminalPasteClipboard :: (GObject a, MonadIO m) =>
+                                 a -> TerminalPasteClipboardCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalPasteClipboard obj cb after = liftIO $ do
+    cb' <- mkTerminalPasteClipboardCallback (terminalPasteClipboardCallbackWrapper cb)
+    connectSignalFunPtr obj "paste-clipboard" cb' after
+
+-- signal Terminal::raise-window
+type TerminalRaiseWindowCallback =
+    IO ()
+
+noTerminalRaiseWindowCallback :: Maybe TerminalRaiseWindowCallback
+noTerminalRaiseWindowCallback = Nothing
+
+type TerminalRaiseWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalRaiseWindowCallback :: TerminalRaiseWindowCallbackC -> IO (FunPtr TerminalRaiseWindowCallbackC)
+
+terminalRaiseWindowClosure :: TerminalRaiseWindowCallback -> IO Closure
+terminalRaiseWindowClosure cb = newCClosure =<< mkTerminalRaiseWindowCallback wrapped
+    where wrapped = terminalRaiseWindowCallbackWrapper cb
+
+terminalRaiseWindowCallbackWrapper ::
+    TerminalRaiseWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalRaiseWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalRaiseWindow :: (GObject a, MonadIO m) => a -> TerminalRaiseWindowCallback -> m SignalHandlerId
+onTerminalRaiseWindow obj cb = liftIO $ connectTerminalRaiseWindow obj cb SignalConnectBefore
+afterTerminalRaiseWindow :: (GObject a, MonadIO m) => a -> TerminalRaiseWindowCallback -> m SignalHandlerId
+afterTerminalRaiseWindow obj cb = connectTerminalRaiseWindow obj cb SignalConnectAfter
+
+connectTerminalRaiseWindow :: (GObject a, MonadIO m) =>
+                              a -> TerminalRaiseWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalRaiseWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalRaiseWindowCallback (terminalRaiseWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "raise-window" cb' after
+
+-- signal Terminal::refresh-window
+type TerminalRefreshWindowCallback =
+    IO ()
+
+noTerminalRefreshWindowCallback :: Maybe TerminalRefreshWindowCallback
+noTerminalRefreshWindowCallback = Nothing
+
+type TerminalRefreshWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalRefreshWindowCallback :: TerminalRefreshWindowCallbackC -> IO (FunPtr TerminalRefreshWindowCallbackC)
+
+terminalRefreshWindowClosure :: TerminalRefreshWindowCallback -> IO Closure
+terminalRefreshWindowClosure cb = newCClosure =<< mkTerminalRefreshWindowCallback wrapped
+    where wrapped = terminalRefreshWindowCallbackWrapper cb
+
+terminalRefreshWindowCallbackWrapper ::
+    TerminalRefreshWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalRefreshWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalRefreshWindow :: (GObject a, MonadIO m) => a -> TerminalRefreshWindowCallback -> m SignalHandlerId
+onTerminalRefreshWindow obj cb = liftIO $ connectTerminalRefreshWindow obj cb SignalConnectBefore
+afterTerminalRefreshWindow :: (GObject a, MonadIO m) => a -> TerminalRefreshWindowCallback -> m SignalHandlerId
+afterTerminalRefreshWindow obj cb = connectTerminalRefreshWindow obj cb SignalConnectAfter
+
+connectTerminalRefreshWindow :: (GObject a, MonadIO m) =>
+                                a -> TerminalRefreshWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalRefreshWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalRefreshWindowCallback (terminalRefreshWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "refresh-window" cb' after
+
+-- signal Terminal::resize-window
+type TerminalResizeWindowCallback =
+    Word32 ->
+    Word32 ->
+    IO ()
+
+noTerminalResizeWindowCallback :: Maybe TerminalResizeWindowCallback
+noTerminalResizeWindowCallback = Nothing
+
+type TerminalResizeWindowCallbackC =
+    Ptr () ->                               -- object
+    Word32 ->
+    Word32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalResizeWindowCallback :: TerminalResizeWindowCallbackC -> IO (FunPtr TerminalResizeWindowCallbackC)
+
+terminalResizeWindowClosure :: TerminalResizeWindowCallback -> IO Closure
+terminalResizeWindowClosure cb = newCClosure =<< mkTerminalResizeWindowCallback wrapped
+    where wrapped = terminalResizeWindowCallbackWrapper cb
+
+terminalResizeWindowCallbackWrapper ::
+    TerminalResizeWindowCallback ->
+    Ptr () ->
+    Word32 ->
+    Word32 ->
+    Ptr () ->
+    IO ()
+terminalResizeWindowCallbackWrapper _cb _ width height _ = do
+    _cb  width height
+
+onTerminalResizeWindow :: (GObject a, MonadIO m) => a -> TerminalResizeWindowCallback -> m SignalHandlerId
+onTerminalResizeWindow obj cb = liftIO $ connectTerminalResizeWindow obj cb SignalConnectBefore
+afterTerminalResizeWindow :: (GObject a, MonadIO m) => a -> TerminalResizeWindowCallback -> m SignalHandlerId
+afterTerminalResizeWindow obj cb = connectTerminalResizeWindow obj cb SignalConnectAfter
+
+connectTerminalResizeWindow :: (GObject a, MonadIO m) =>
+                               a -> TerminalResizeWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalResizeWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalResizeWindowCallback (terminalResizeWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "resize-window" cb' after
+
+-- signal Terminal::restore-window
+type TerminalRestoreWindowCallback =
+    IO ()
+
+noTerminalRestoreWindowCallback :: Maybe TerminalRestoreWindowCallback
+noTerminalRestoreWindowCallback = Nothing
+
+type TerminalRestoreWindowCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalRestoreWindowCallback :: TerminalRestoreWindowCallbackC -> IO (FunPtr TerminalRestoreWindowCallbackC)
+
+terminalRestoreWindowClosure :: TerminalRestoreWindowCallback -> IO Closure
+terminalRestoreWindowClosure cb = newCClosure =<< mkTerminalRestoreWindowCallback wrapped
+    where wrapped = terminalRestoreWindowCallbackWrapper cb
+
+terminalRestoreWindowCallbackWrapper ::
+    TerminalRestoreWindowCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalRestoreWindowCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalRestoreWindow :: (GObject a, MonadIO m) => a -> TerminalRestoreWindowCallback -> m SignalHandlerId
+onTerminalRestoreWindow obj cb = liftIO $ connectTerminalRestoreWindow obj cb SignalConnectBefore
+afterTerminalRestoreWindow :: (GObject a, MonadIO m) => a -> TerminalRestoreWindowCallback -> m SignalHandlerId
+afterTerminalRestoreWindow obj cb = connectTerminalRestoreWindow obj cb SignalConnectAfter
+
+connectTerminalRestoreWindow :: (GObject a, MonadIO m) =>
+                                a -> TerminalRestoreWindowCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalRestoreWindow obj cb after = liftIO $ do
+    cb' <- mkTerminalRestoreWindowCallback (terminalRestoreWindowCallbackWrapper cb)
+    connectSignalFunPtr obj "restore-window" cb' after
+
+-- signal Terminal::selection-changed
+type TerminalSelectionChangedCallback =
+    IO ()
+
+noTerminalSelectionChangedCallback :: Maybe TerminalSelectionChangedCallback
+noTerminalSelectionChangedCallback = Nothing
+
+type TerminalSelectionChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalSelectionChangedCallback :: TerminalSelectionChangedCallbackC -> IO (FunPtr TerminalSelectionChangedCallbackC)
+
+terminalSelectionChangedClosure :: TerminalSelectionChangedCallback -> IO Closure
+terminalSelectionChangedClosure cb = newCClosure =<< mkTerminalSelectionChangedCallback wrapped
+    where wrapped = terminalSelectionChangedCallbackWrapper cb
+
+terminalSelectionChangedCallbackWrapper ::
+    TerminalSelectionChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalSelectionChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalSelectionChanged :: (GObject a, MonadIO m) => a -> TerminalSelectionChangedCallback -> m SignalHandlerId
+onTerminalSelectionChanged obj cb = liftIO $ connectTerminalSelectionChanged obj cb SignalConnectBefore
+afterTerminalSelectionChanged :: (GObject a, MonadIO m) => a -> TerminalSelectionChangedCallback -> m SignalHandlerId
+afterTerminalSelectionChanged obj cb = connectTerminalSelectionChanged obj cb SignalConnectAfter
+
+connectTerminalSelectionChanged :: (GObject a, MonadIO m) =>
+                                   a -> TerminalSelectionChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalSelectionChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalSelectionChangedCallback (terminalSelectionChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "selection-changed" cb' after
+
+-- signal Terminal::text-deleted
+type TerminalTextDeletedCallback =
+    IO ()
+
+noTerminalTextDeletedCallback :: Maybe TerminalTextDeletedCallback
+noTerminalTextDeletedCallback = Nothing
+
+type TerminalTextDeletedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalTextDeletedCallback :: TerminalTextDeletedCallbackC -> IO (FunPtr TerminalTextDeletedCallbackC)
+
+terminalTextDeletedClosure :: TerminalTextDeletedCallback -> IO Closure
+terminalTextDeletedClosure cb = newCClosure =<< mkTerminalTextDeletedCallback wrapped
+    where wrapped = terminalTextDeletedCallbackWrapper cb
+
+terminalTextDeletedCallbackWrapper ::
+    TerminalTextDeletedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalTextDeletedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalTextDeleted :: (GObject a, MonadIO m) => a -> TerminalTextDeletedCallback -> m SignalHandlerId
+onTerminalTextDeleted obj cb = liftIO $ connectTerminalTextDeleted obj cb SignalConnectBefore
+afterTerminalTextDeleted :: (GObject a, MonadIO m) => a -> TerminalTextDeletedCallback -> m SignalHandlerId
+afterTerminalTextDeleted obj cb = connectTerminalTextDeleted obj cb SignalConnectAfter
+
+connectTerminalTextDeleted :: (GObject a, MonadIO m) =>
+                              a -> TerminalTextDeletedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalTextDeleted obj cb after = liftIO $ do
+    cb' <- mkTerminalTextDeletedCallback (terminalTextDeletedCallbackWrapper cb)
+    connectSignalFunPtr obj "text-deleted" cb' after
+
+-- signal Terminal::text-inserted
+type TerminalTextInsertedCallback =
+    IO ()
+
+noTerminalTextInsertedCallback :: Maybe TerminalTextInsertedCallback
+noTerminalTextInsertedCallback = Nothing
+
+type TerminalTextInsertedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalTextInsertedCallback :: TerminalTextInsertedCallbackC -> IO (FunPtr TerminalTextInsertedCallbackC)
+
+terminalTextInsertedClosure :: TerminalTextInsertedCallback -> IO Closure
+terminalTextInsertedClosure cb = newCClosure =<< mkTerminalTextInsertedCallback wrapped
+    where wrapped = terminalTextInsertedCallbackWrapper cb
+
+terminalTextInsertedCallbackWrapper ::
+    TerminalTextInsertedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalTextInsertedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalTextInserted :: (GObject a, MonadIO m) => a -> TerminalTextInsertedCallback -> m SignalHandlerId
+onTerminalTextInserted obj cb = liftIO $ connectTerminalTextInserted obj cb SignalConnectBefore
+afterTerminalTextInserted :: (GObject a, MonadIO m) => a -> TerminalTextInsertedCallback -> m SignalHandlerId
+afterTerminalTextInserted obj cb = connectTerminalTextInserted obj cb SignalConnectAfter
+
+connectTerminalTextInserted :: (GObject a, MonadIO m) =>
+                               a -> TerminalTextInsertedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalTextInserted obj cb after = liftIO $ do
+    cb' <- mkTerminalTextInsertedCallback (terminalTextInsertedCallbackWrapper cb)
+    connectSignalFunPtr obj "text-inserted" cb' after
+
+-- signal Terminal::text-modified
+type TerminalTextModifiedCallback =
+    IO ()
+
+noTerminalTextModifiedCallback :: Maybe TerminalTextModifiedCallback
+noTerminalTextModifiedCallback = Nothing
+
+type TerminalTextModifiedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalTextModifiedCallback :: TerminalTextModifiedCallbackC -> IO (FunPtr TerminalTextModifiedCallbackC)
+
+terminalTextModifiedClosure :: TerminalTextModifiedCallback -> IO Closure
+terminalTextModifiedClosure cb = newCClosure =<< mkTerminalTextModifiedCallback wrapped
+    where wrapped = terminalTextModifiedCallbackWrapper cb
+
+terminalTextModifiedCallbackWrapper ::
+    TerminalTextModifiedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalTextModifiedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalTextModified :: (GObject a, MonadIO m) => a -> TerminalTextModifiedCallback -> m SignalHandlerId
+onTerminalTextModified obj cb = liftIO $ connectTerminalTextModified obj cb SignalConnectBefore
+afterTerminalTextModified :: (GObject a, MonadIO m) => a -> TerminalTextModifiedCallback -> m SignalHandlerId
+afterTerminalTextModified obj cb = connectTerminalTextModified obj cb SignalConnectAfter
+
+connectTerminalTextModified :: (GObject a, MonadIO m) =>
+                               a -> TerminalTextModifiedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalTextModified obj cb after = liftIO $ do
+    cb' <- mkTerminalTextModifiedCallback (terminalTextModifiedCallbackWrapper cb)
+    connectSignalFunPtr obj "text-modified" cb' after
+
+-- signal Terminal::text-scrolled
+type TerminalTextScrolledCallback =
+    Int32 ->
+    IO ()
+
+noTerminalTextScrolledCallback :: Maybe TerminalTextScrolledCallback
+noTerminalTextScrolledCallback = Nothing
+
+type TerminalTextScrolledCallbackC =
+    Ptr () ->                               -- object
+    Int32 ->
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalTextScrolledCallback :: TerminalTextScrolledCallbackC -> IO (FunPtr TerminalTextScrolledCallbackC)
+
+terminalTextScrolledClosure :: TerminalTextScrolledCallback -> IO Closure
+terminalTextScrolledClosure cb = newCClosure =<< mkTerminalTextScrolledCallback wrapped
+    where wrapped = terminalTextScrolledCallbackWrapper cb
+
+terminalTextScrolledCallbackWrapper ::
+    TerminalTextScrolledCallback ->
+    Ptr () ->
+    Int32 ->
+    Ptr () ->
+    IO ()
+terminalTextScrolledCallbackWrapper _cb _ delta _ = do
+    _cb  delta
+
+onTerminalTextScrolled :: (GObject a, MonadIO m) => a -> TerminalTextScrolledCallback -> m SignalHandlerId
+onTerminalTextScrolled obj cb = liftIO $ connectTerminalTextScrolled obj cb SignalConnectBefore
+afterTerminalTextScrolled :: (GObject a, MonadIO m) => a -> TerminalTextScrolledCallback -> m SignalHandlerId
+afterTerminalTextScrolled obj cb = connectTerminalTextScrolled obj cb SignalConnectAfter
+
+connectTerminalTextScrolled :: (GObject a, MonadIO m) =>
+                               a -> TerminalTextScrolledCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalTextScrolled obj cb after = liftIO $ do
+    cb' <- mkTerminalTextScrolledCallback (terminalTextScrolledCallbackWrapper cb)
+    connectSignalFunPtr obj "text-scrolled" cb' after
+
+-- signal Terminal::window-title-changed
+type TerminalWindowTitleChangedCallback =
+    IO ()
+
+noTerminalWindowTitleChangedCallback :: Maybe TerminalWindowTitleChangedCallback
+noTerminalWindowTitleChangedCallback = Nothing
+
+type TerminalWindowTitleChangedCallbackC =
+    Ptr () ->                               -- object
+    Ptr () ->                               -- user_data
+    IO ()
+
+foreign import ccall "wrapper"
+    mkTerminalWindowTitleChangedCallback :: TerminalWindowTitleChangedCallbackC -> IO (FunPtr TerminalWindowTitleChangedCallbackC)
+
+terminalWindowTitleChangedClosure :: TerminalWindowTitleChangedCallback -> IO Closure
+terminalWindowTitleChangedClosure cb = newCClosure =<< mkTerminalWindowTitleChangedCallback wrapped
+    where wrapped = terminalWindowTitleChangedCallbackWrapper cb
+
+terminalWindowTitleChangedCallbackWrapper ::
+    TerminalWindowTitleChangedCallback ->
+    Ptr () ->
+    Ptr () ->
+    IO ()
+terminalWindowTitleChangedCallbackWrapper _cb _ _ = do
+    _cb 
+
+onTerminalWindowTitleChanged :: (GObject a, MonadIO m) => a -> TerminalWindowTitleChangedCallback -> m SignalHandlerId
+onTerminalWindowTitleChanged obj cb = liftIO $ connectTerminalWindowTitleChanged obj cb SignalConnectBefore
+afterTerminalWindowTitleChanged :: (GObject a, MonadIO m) => a -> TerminalWindowTitleChangedCallback -> m SignalHandlerId
+afterTerminalWindowTitleChanged obj cb = connectTerminalWindowTitleChanged obj cb SignalConnectAfter
+
+connectTerminalWindowTitleChanged :: (GObject a, MonadIO m) =>
+                                     a -> TerminalWindowTitleChangedCallback -> SignalConnectMode -> m SignalHandlerId
+connectTerminalWindowTitleChanged obj cb after = liftIO $ do
+    cb' <- mkTerminalWindowTitleChangedCallback (terminalWindowTitleChangedCallbackWrapper cb)
+    connectSignalFunPtr obj "window-title-changed" cb' after
+
+-- Enum WriteFlags
+
+data WriteFlags = 
+      WriteFlagsDefault
+    | AnotherWriteFlags Int
+    deriving (Show, Eq)
+
+instance Enum WriteFlags where
+    fromEnum WriteFlagsDefault = 0
+    fromEnum (AnotherWriteFlags k) = k
+
+    toEnum 0 = WriteFlagsDefault
+    toEnum k = AnotherWriteFlags k
+
+foreign import ccall "vte_write_flags_get_type" c_vte_write_flags_get_type :: 
+    IO GType
+
+instance BoxedEnum WriteFlags where
+    boxedEnumType _ = c_vte_write_flags_get_type
+
+-- constant _MAJOR_VERSION
+
+_MAJOR_VERSION :: Int32
+_MAJOR_VERSION = 0
+-- constant _MICRO_VERSION
+
+_MICRO_VERSION :: Int32
+_MICRO_VERSION = 2
+-- constant _MINOR_VERSION
+
+_MINOR_VERSION :: Int32
+_MINOR_VERSION = 40
+-- constant _SPAWN_NO_PARENT_ENVV
+
+_SPAWN_NO_PARENT_ENVV :: Int32
+_SPAWN_NO_PARENT_ENVV = 33554432
+-- function vte_get_features
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_get_features" vte_get_features :: 
+    IO CString
+
+
+getFeatures ::
+    (MonadIO m) =>
+    m T.Text
+getFeatures  = liftIO $ do
+    result <- vte_get_features
+    result' <- cstringToText result
+    return result'
+
+-- function vte_get_major_version
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_get_major_version" vte_get_major_version :: 
+    IO Word32
+
+
+getMajorVersion ::
+    (MonadIO m) =>
+    m Word32
+getMajorVersion  = liftIO $ do
+    result <- vte_get_major_version
+    return result
+
+-- function vte_get_micro_version
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_get_micro_version" vte_get_micro_version :: 
+    IO Word32
+
+
+getMicroVersion ::
+    (MonadIO m) =>
+    m Word32
+getMicroVersion  = liftIO $ do
+    result <- vte_get_micro_version
+    return result
+
+-- function vte_get_minor_version
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_get_minor_version" vte_get_minor_version :: 
+    IO Word32
+
+
+getMinorVersion ::
+    (MonadIO m) =>
+    m Word32
+getMinorVersion  = liftIO $ do
+    result <- vte_get_minor_version
+    return result
+
+-- function vte_get_user_shell
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TFileName
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_get_user_shell" vte_get_user_shell :: 
+    IO CString
+
+
+getUserShell ::
+    (MonadIO m) =>
+    m [Char]
+getUserShell  = liftIO $ do
+    result <- vte_get_user_shell
+    result' <- cstringToString result
+    freeMem result
+    return result'
+
+-- function vte_pty_error_quark
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "vte_pty_error_quark" vte_pty_error_quark :: 
+    IO Word32
+
+
+ptyErrorQuark ::
+    (MonadIO m) =>
+    m Word32
+ptyErrorQuark  = liftIO $ do
+    result <- vte_pty_error_quark
+    return result
+
diff --git a/GI/VteAttributes.hs b/GI/VteAttributes.hs
new file mode 100644
--- /dev/null
+++ b/GI/VteAttributes.hs
@@ -0,0 +1,596 @@
+{-# 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.VteAttributes 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.Gtk as Gtk
+import qualified GI.GtkAttributes as GtkA
+import qualified GI.Pango as Pango
+import qualified GI.PangoAttributes as PangoA
+import GI.Vte
+
+-- VVV Prop "fd"
+   -- Type: TBasicType TInt32
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getPtyFd :: (MonadIO m, PtyK o) => o -> m Int32
+getPtyFd obj = liftIO $ getObjectPropertyCInt obj "fd"
+
+constructPtyFd :: Int32 -> IO ([Char], GValue)
+constructPtyFd val = constructObjectPropertyCInt "fd" val
+
+data PtyFdPropertyInfo
+instance AttrInfo PtyFdPropertyInfo where
+    type AttrAllowedOps PtyFdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint PtyFdPropertyInfo = (~) Int32
+    type AttrBaseTypeConstraint PtyFdPropertyInfo = PtyK
+    type AttrGetType PtyFdPropertyInfo = Int32
+    type AttrLabel PtyFdPropertyInfo = "Pty::fd"
+    attrGet _ = getPtyFd
+    attrSet _ = undefined
+    attrConstruct _ = constructPtyFd
+
+-- VVV Prop "flags"
+   -- Type: TInterface "Vte" "PtyFlags"
+   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
+
+getPtyFlags :: (MonadIO m, PtyK o) => o -> m [PtyFlags]
+getPtyFlags obj = liftIO $ getObjectPropertyFlags obj "flags"
+
+constructPtyFlags :: [PtyFlags] -> IO ([Char], GValue)
+constructPtyFlags val = constructObjectPropertyFlags "flags" val
+
+data PtyFlagsPropertyInfo
+instance AttrInfo PtyFlagsPropertyInfo where
+    type AttrAllowedOps PtyFlagsPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint PtyFlagsPropertyInfo = (~) [PtyFlags]
+    type AttrBaseTypeConstraint PtyFlagsPropertyInfo = PtyK
+    type AttrGetType PtyFlagsPropertyInfo = [PtyFlags]
+    type AttrLabel PtyFlagsPropertyInfo = "Pty::flags"
+    attrGet _ = getPtyFlags
+    attrSet _ = undefined
+    attrConstruct _ = constructPtyFlags
+
+type instance AttributeList Pty = '[ '("fd", PtyFdPropertyInfo), '("flags", PtyFlagsPropertyInfo)]
+
+-- VVV Prop "allow-bold"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalAllowBold :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalAllowBold obj = liftIO $ getObjectPropertyBool obj "allow-bold"
+
+setTerminalAllowBold :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalAllowBold obj val = liftIO $ setObjectPropertyBool obj "allow-bold" val
+
+constructTerminalAllowBold :: Bool -> IO ([Char], GValue)
+constructTerminalAllowBold val = constructObjectPropertyBool "allow-bold" val
+
+data TerminalAllowBoldPropertyInfo
+instance AttrInfo TerminalAllowBoldPropertyInfo where
+    type AttrAllowedOps TerminalAllowBoldPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalAllowBoldPropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalAllowBoldPropertyInfo = TerminalK
+    type AttrGetType TerminalAllowBoldPropertyInfo = Bool
+    type AttrLabel TerminalAllowBoldPropertyInfo = "Terminal::allow-bold"
+    attrGet _ = getTerminalAllowBold
+    attrSet _ = setTerminalAllowBold
+    attrConstruct _ = constructTerminalAllowBold
+
+-- VVV Prop "audible-bell"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalAudibleBell :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalAudibleBell obj = liftIO $ getObjectPropertyBool obj "audible-bell"
+
+setTerminalAudibleBell :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalAudibleBell obj val = liftIO $ setObjectPropertyBool obj "audible-bell" val
+
+constructTerminalAudibleBell :: Bool -> IO ([Char], GValue)
+constructTerminalAudibleBell val = constructObjectPropertyBool "audible-bell" val
+
+data TerminalAudibleBellPropertyInfo
+instance AttrInfo TerminalAudibleBellPropertyInfo where
+    type AttrAllowedOps TerminalAudibleBellPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalAudibleBellPropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalAudibleBellPropertyInfo = TerminalK
+    type AttrGetType TerminalAudibleBellPropertyInfo = Bool
+    type AttrLabel TerminalAudibleBellPropertyInfo = "Terminal::audible-bell"
+    attrGet _ = getTerminalAudibleBell
+    attrSet _ = setTerminalAudibleBell
+    attrConstruct _ = constructTerminalAudibleBell
+
+-- VVV Prop "backspace-binding"
+   -- Type: TInterface "Vte" "EraseBinding"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalBackspaceBinding :: (MonadIO m, TerminalK o) => o -> m EraseBinding
+getTerminalBackspaceBinding obj = liftIO $ getObjectPropertyEnum obj "backspace-binding"
+
+setTerminalBackspaceBinding :: (MonadIO m, TerminalK o) => o -> EraseBinding -> m ()
+setTerminalBackspaceBinding obj val = liftIO $ setObjectPropertyEnum obj "backspace-binding" val
+
+constructTerminalBackspaceBinding :: EraseBinding -> IO ([Char], GValue)
+constructTerminalBackspaceBinding val = constructObjectPropertyEnum "backspace-binding" val
+
+data TerminalBackspaceBindingPropertyInfo
+instance AttrInfo TerminalBackspaceBindingPropertyInfo where
+    type AttrAllowedOps TerminalBackspaceBindingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalBackspaceBindingPropertyInfo = (~) EraseBinding
+    type AttrBaseTypeConstraint TerminalBackspaceBindingPropertyInfo = TerminalK
+    type AttrGetType TerminalBackspaceBindingPropertyInfo = EraseBinding
+    type AttrLabel TerminalBackspaceBindingPropertyInfo = "Terminal::backspace-binding"
+    attrGet _ = getTerminalBackspaceBinding
+    attrSet _ = setTerminalBackspaceBinding
+    attrConstruct _ = constructTerminalBackspaceBinding
+
+-- VVV Prop "cjk-ambiguous-width"
+   -- Type: TBasicType TInt32
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalCjkAmbiguousWidth :: (MonadIO m, TerminalK o) => o -> m Int32
+getTerminalCjkAmbiguousWidth obj = liftIO $ getObjectPropertyCInt obj "cjk-ambiguous-width"
+
+setTerminalCjkAmbiguousWidth :: (MonadIO m, TerminalK o) => o -> Int32 -> m ()
+setTerminalCjkAmbiguousWidth obj val = liftIO $ setObjectPropertyCInt obj "cjk-ambiguous-width" val
+
+constructTerminalCjkAmbiguousWidth :: Int32 -> IO ([Char], GValue)
+constructTerminalCjkAmbiguousWidth val = constructObjectPropertyCInt "cjk-ambiguous-width" val
+
+data TerminalCjkAmbiguousWidthPropertyInfo
+instance AttrInfo TerminalCjkAmbiguousWidthPropertyInfo where
+    type AttrAllowedOps TerminalCjkAmbiguousWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalCjkAmbiguousWidthPropertyInfo = (~) Int32
+    type AttrBaseTypeConstraint TerminalCjkAmbiguousWidthPropertyInfo = TerminalK
+    type AttrGetType TerminalCjkAmbiguousWidthPropertyInfo = Int32
+    type AttrLabel TerminalCjkAmbiguousWidthPropertyInfo = "Terminal::cjk-ambiguous-width"
+    attrGet _ = getTerminalCjkAmbiguousWidth
+    attrSet _ = setTerminalCjkAmbiguousWidth
+    attrConstruct _ = constructTerminalCjkAmbiguousWidth
+
+-- VVV Prop "current-directory-uri"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable]
+
+getTerminalCurrentDirectoryUri :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalCurrentDirectoryUri obj = liftIO $ getObjectPropertyString obj "current-directory-uri"
+
+data TerminalCurrentDirectoryUriPropertyInfo
+instance AttrInfo TerminalCurrentDirectoryUriPropertyInfo where
+    type AttrAllowedOps TerminalCurrentDirectoryUriPropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint TerminalCurrentDirectoryUriPropertyInfo = (~) ()
+    type AttrBaseTypeConstraint TerminalCurrentDirectoryUriPropertyInfo = TerminalK
+    type AttrGetType TerminalCurrentDirectoryUriPropertyInfo = T.Text
+    type AttrLabel TerminalCurrentDirectoryUriPropertyInfo = "Terminal::current-directory-uri"
+    attrGet _ = getTerminalCurrentDirectoryUri
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "current-file-uri"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable]
+
+getTerminalCurrentFileUri :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalCurrentFileUri obj = liftIO $ getObjectPropertyString obj "current-file-uri"
+
+data TerminalCurrentFileUriPropertyInfo
+instance AttrInfo TerminalCurrentFileUriPropertyInfo where
+    type AttrAllowedOps TerminalCurrentFileUriPropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint TerminalCurrentFileUriPropertyInfo = (~) ()
+    type AttrBaseTypeConstraint TerminalCurrentFileUriPropertyInfo = TerminalK
+    type AttrGetType TerminalCurrentFileUriPropertyInfo = T.Text
+    type AttrLabel TerminalCurrentFileUriPropertyInfo = "Terminal::current-file-uri"
+    attrGet _ = getTerminalCurrentFileUri
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "cursor-blink-mode"
+   -- Type: TInterface "Vte" "CursorBlinkMode"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalCursorBlinkMode :: (MonadIO m, TerminalK o) => o -> m CursorBlinkMode
+getTerminalCursorBlinkMode obj = liftIO $ getObjectPropertyEnum obj "cursor-blink-mode"
+
+setTerminalCursorBlinkMode :: (MonadIO m, TerminalK o) => o -> CursorBlinkMode -> m ()
+setTerminalCursorBlinkMode obj val = liftIO $ setObjectPropertyEnum obj "cursor-blink-mode" val
+
+constructTerminalCursorBlinkMode :: CursorBlinkMode -> IO ([Char], GValue)
+constructTerminalCursorBlinkMode val = constructObjectPropertyEnum "cursor-blink-mode" val
+
+data TerminalCursorBlinkModePropertyInfo
+instance AttrInfo TerminalCursorBlinkModePropertyInfo where
+    type AttrAllowedOps TerminalCursorBlinkModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalCursorBlinkModePropertyInfo = (~) CursorBlinkMode
+    type AttrBaseTypeConstraint TerminalCursorBlinkModePropertyInfo = TerminalK
+    type AttrGetType TerminalCursorBlinkModePropertyInfo = CursorBlinkMode
+    type AttrLabel TerminalCursorBlinkModePropertyInfo = "Terminal::cursor-blink-mode"
+    attrGet _ = getTerminalCursorBlinkMode
+    attrSet _ = setTerminalCursorBlinkMode
+    attrConstruct _ = constructTerminalCursorBlinkMode
+
+-- VVV Prop "cursor-shape"
+   -- Type: TInterface "Vte" "CursorShape"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalCursorShape :: (MonadIO m, TerminalK o) => o -> m CursorShape
+getTerminalCursorShape obj = liftIO $ getObjectPropertyEnum obj "cursor-shape"
+
+setTerminalCursorShape :: (MonadIO m, TerminalK o) => o -> CursorShape -> m ()
+setTerminalCursorShape obj val = liftIO $ setObjectPropertyEnum obj "cursor-shape" val
+
+constructTerminalCursorShape :: CursorShape -> IO ([Char], GValue)
+constructTerminalCursorShape val = constructObjectPropertyEnum "cursor-shape" val
+
+data TerminalCursorShapePropertyInfo
+instance AttrInfo TerminalCursorShapePropertyInfo where
+    type AttrAllowedOps TerminalCursorShapePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalCursorShapePropertyInfo = (~) CursorShape
+    type AttrBaseTypeConstraint TerminalCursorShapePropertyInfo = TerminalK
+    type AttrGetType TerminalCursorShapePropertyInfo = CursorShape
+    type AttrLabel TerminalCursorShapePropertyInfo = "Terminal::cursor-shape"
+    attrGet _ = getTerminalCursorShape
+    attrSet _ = setTerminalCursorShape
+    attrConstruct _ = constructTerminalCursorShape
+
+-- VVV Prop "delete-binding"
+   -- Type: TInterface "Vte" "EraseBinding"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalDeleteBinding :: (MonadIO m, TerminalK o) => o -> m EraseBinding
+getTerminalDeleteBinding obj = liftIO $ getObjectPropertyEnum obj "delete-binding"
+
+setTerminalDeleteBinding :: (MonadIO m, TerminalK o) => o -> EraseBinding -> m ()
+setTerminalDeleteBinding obj val = liftIO $ setObjectPropertyEnum obj "delete-binding" val
+
+constructTerminalDeleteBinding :: EraseBinding -> IO ([Char], GValue)
+constructTerminalDeleteBinding val = constructObjectPropertyEnum "delete-binding" val
+
+data TerminalDeleteBindingPropertyInfo
+instance AttrInfo TerminalDeleteBindingPropertyInfo where
+    type AttrAllowedOps TerminalDeleteBindingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalDeleteBindingPropertyInfo = (~) EraseBinding
+    type AttrBaseTypeConstraint TerminalDeleteBindingPropertyInfo = TerminalK
+    type AttrGetType TerminalDeleteBindingPropertyInfo = EraseBinding
+    type AttrLabel TerminalDeleteBindingPropertyInfo = "Terminal::delete-binding"
+    attrGet _ = getTerminalDeleteBinding
+    attrSet _ = setTerminalDeleteBinding
+    attrConstruct _ = constructTerminalDeleteBinding
+
+-- VVV Prop "encoding"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalEncoding :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalEncoding obj = liftIO $ getObjectPropertyString obj "encoding"
+
+setTerminalEncoding :: (MonadIO m, TerminalK o) => o -> T.Text -> m ()
+setTerminalEncoding obj val = liftIO $ setObjectPropertyString obj "encoding" val
+
+constructTerminalEncoding :: T.Text -> IO ([Char], GValue)
+constructTerminalEncoding val = constructObjectPropertyString "encoding" val
+
+data TerminalEncodingPropertyInfo
+instance AttrInfo TerminalEncodingPropertyInfo where
+    type AttrAllowedOps TerminalEncodingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalEncodingPropertyInfo = (~) T.Text
+    type AttrBaseTypeConstraint TerminalEncodingPropertyInfo = TerminalK
+    type AttrGetType TerminalEncodingPropertyInfo = T.Text
+    type AttrLabel TerminalEncodingPropertyInfo = "Terminal::encoding"
+    attrGet _ = getTerminalEncoding
+    attrSet _ = setTerminalEncoding
+    attrConstruct _ = constructTerminalEncoding
+
+-- VVV Prop "font-desc"
+   -- Type: TInterface "Pango" "FontDescription"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalFontDesc :: (MonadIO m, TerminalK o) => o -> m Pango.FontDescription
+getTerminalFontDesc obj = liftIO $ getObjectPropertyBoxed obj "font-desc" Pango.FontDescription
+
+setTerminalFontDesc :: (MonadIO m, TerminalK o) => o -> Pango.FontDescription -> m ()
+setTerminalFontDesc obj val = liftIO $ setObjectPropertyBoxed obj "font-desc" val
+
+constructTerminalFontDesc :: Pango.FontDescription -> IO ([Char], GValue)
+constructTerminalFontDesc val = constructObjectPropertyBoxed "font-desc" val
+
+data TerminalFontDescPropertyInfo
+instance AttrInfo TerminalFontDescPropertyInfo where
+    type AttrAllowedOps TerminalFontDescPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalFontDescPropertyInfo = (~) Pango.FontDescription
+    type AttrBaseTypeConstraint TerminalFontDescPropertyInfo = TerminalK
+    type AttrGetType TerminalFontDescPropertyInfo = Pango.FontDescription
+    type AttrLabel TerminalFontDescPropertyInfo = "Terminal::font-desc"
+    attrGet _ = getTerminalFontDesc
+    attrSet _ = setTerminalFontDesc
+    attrConstruct _ = constructTerminalFontDesc
+
+-- VVV Prop "font-scale"
+   -- Type: TBasicType TDouble
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalFontScale :: (MonadIO m, TerminalK o) => o -> m Double
+getTerminalFontScale obj = liftIO $ getObjectPropertyDouble obj "font-scale"
+
+setTerminalFontScale :: (MonadIO m, TerminalK o) => o -> Double -> m ()
+setTerminalFontScale obj val = liftIO $ setObjectPropertyDouble obj "font-scale" val
+
+constructTerminalFontScale :: Double -> IO ([Char], GValue)
+constructTerminalFontScale val = constructObjectPropertyDouble "font-scale" val
+
+data TerminalFontScalePropertyInfo
+instance AttrInfo TerminalFontScalePropertyInfo where
+    type AttrAllowedOps TerminalFontScalePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalFontScalePropertyInfo = (~) Double
+    type AttrBaseTypeConstraint TerminalFontScalePropertyInfo = TerminalK
+    type AttrGetType TerminalFontScalePropertyInfo = Double
+    type AttrLabel TerminalFontScalePropertyInfo = "Terminal::font-scale"
+    attrGet _ = getTerminalFontScale
+    attrSet _ = setTerminalFontScale
+    attrConstruct _ = constructTerminalFontScale
+
+-- VVV Prop "icon-title"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable]
+
+getTerminalIconTitle :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalIconTitle obj = liftIO $ getObjectPropertyString obj "icon-title"
+
+data TerminalIconTitlePropertyInfo
+instance AttrInfo TerminalIconTitlePropertyInfo where
+    type AttrAllowedOps TerminalIconTitlePropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint TerminalIconTitlePropertyInfo = (~) ()
+    type AttrBaseTypeConstraint TerminalIconTitlePropertyInfo = TerminalK
+    type AttrGetType TerminalIconTitlePropertyInfo = T.Text
+    type AttrLabel TerminalIconTitlePropertyInfo = "Terminal::icon-title"
+    attrGet _ = getTerminalIconTitle
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "input-enabled"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalInputEnabled :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalInputEnabled obj = liftIO $ getObjectPropertyBool obj "input-enabled"
+
+setTerminalInputEnabled :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalInputEnabled obj val = liftIO $ setObjectPropertyBool obj "input-enabled" val
+
+constructTerminalInputEnabled :: Bool -> IO ([Char], GValue)
+constructTerminalInputEnabled val = constructObjectPropertyBool "input-enabled" val
+
+data TerminalInputEnabledPropertyInfo
+instance AttrInfo TerminalInputEnabledPropertyInfo where
+    type AttrAllowedOps TerminalInputEnabledPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalInputEnabledPropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalInputEnabledPropertyInfo = TerminalK
+    type AttrGetType TerminalInputEnabledPropertyInfo = Bool
+    type AttrLabel TerminalInputEnabledPropertyInfo = "Terminal::input-enabled"
+    attrGet _ = getTerminalInputEnabled
+    attrSet _ = setTerminalInputEnabled
+    attrConstruct _ = constructTerminalInputEnabled
+
+-- VVV Prop "pointer-autohide"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalPointerAutohide :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalPointerAutohide obj = liftIO $ getObjectPropertyBool obj "pointer-autohide"
+
+setTerminalPointerAutohide :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalPointerAutohide obj val = liftIO $ setObjectPropertyBool obj "pointer-autohide" val
+
+constructTerminalPointerAutohide :: Bool -> IO ([Char], GValue)
+constructTerminalPointerAutohide val = constructObjectPropertyBool "pointer-autohide" val
+
+data TerminalPointerAutohidePropertyInfo
+instance AttrInfo TerminalPointerAutohidePropertyInfo where
+    type AttrAllowedOps TerminalPointerAutohidePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalPointerAutohidePropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalPointerAutohidePropertyInfo = TerminalK
+    type AttrGetType TerminalPointerAutohidePropertyInfo = Bool
+    type AttrLabel TerminalPointerAutohidePropertyInfo = "Terminal::pointer-autohide"
+    attrGet _ = getTerminalPointerAutohide
+    attrSet _ = setTerminalPointerAutohide
+    attrConstruct _ = constructTerminalPointerAutohide
+
+-- VVV Prop "pty"
+   -- Type: TInterface "Vte" "Pty"
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalPty :: (MonadIO m, TerminalK o) => o -> m Pty
+getTerminalPty obj = liftIO $ getObjectPropertyObject obj "pty" Pty
+
+setTerminalPty :: (MonadIO m, TerminalK o, PtyK a) => o -> a -> m ()
+setTerminalPty obj val = liftIO $ setObjectPropertyObject obj "pty" val
+
+constructTerminalPty :: (PtyK a) => a -> IO ([Char], GValue)
+constructTerminalPty val = constructObjectPropertyObject "pty" val
+
+data TerminalPtyPropertyInfo
+instance AttrInfo TerminalPtyPropertyInfo where
+    type AttrAllowedOps TerminalPtyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalPtyPropertyInfo = PtyK
+    type AttrBaseTypeConstraint TerminalPtyPropertyInfo = TerminalK
+    type AttrGetType TerminalPtyPropertyInfo = Pty
+    type AttrLabel TerminalPtyPropertyInfo = "Terminal::pty"
+    attrGet _ = getTerminalPty
+    attrSet _ = setTerminalPty
+    attrConstruct _ = constructTerminalPty
+
+-- VVV Prop "rewrap-on-resize"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalRewrapOnResize :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalRewrapOnResize obj = liftIO $ getObjectPropertyBool obj "rewrap-on-resize"
+
+setTerminalRewrapOnResize :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalRewrapOnResize obj val = liftIO $ setObjectPropertyBool obj "rewrap-on-resize" val
+
+constructTerminalRewrapOnResize :: Bool -> IO ([Char], GValue)
+constructTerminalRewrapOnResize val = constructObjectPropertyBool "rewrap-on-resize" val
+
+data TerminalRewrapOnResizePropertyInfo
+instance AttrInfo TerminalRewrapOnResizePropertyInfo where
+    type AttrAllowedOps TerminalRewrapOnResizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalRewrapOnResizePropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalRewrapOnResizePropertyInfo = TerminalK
+    type AttrGetType TerminalRewrapOnResizePropertyInfo = Bool
+    type AttrLabel TerminalRewrapOnResizePropertyInfo = "Terminal::rewrap-on-resize"
+    attrGet _ = getTerminalRewrapOnResize
+    attrSet _ = setTerminalRewrapOnResize
+    attrConstruct _ = constructTerminalRewrapOnResize
+
+-- VVV Prop "scroll-on-keystroke"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalScrollOnKeystroke :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalScrollOnKeystroke obj = liftIO $ getObjectPropertyBool obj "scroll-on-keystroke"
+
+setTerminalScrollOnKeystroke :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalScrollOnKeystroke obj val = liftIO $ setObjectPropertyBool obj "scroll-on-keystroke" val
+
+constructTerminalScrollOnKeystroke :: Bool -> IO ([Char], GValue)
+constructTerminalScrollOnKeystroke val = constructObjectPropertyBool "scroll-on-keystroke" val
+
+data TerminalScrollOnKeystrokePropertyInfo
+instance AttrInfo TerminalScrollOnKeystrokePropertyInfo where
+    type AttrAllowedOps TerminalScrollOnKeystrokePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalScrollOnKeystrokePropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalScrollOnKeystrokePropertyInfo = TerminalK
+    type AttrGetType TerminalScrollOnKeystrokePropertyInfo = Bool
+    type AttrLabel TerminalScrollOnKeystrokePropertyInfo = "Terminal::scroll-on-keystroke"
+    attrGet _ = getTerminalScrollOnKeystroke
+    attrSet _ = setTerminalScrollOnKeystroke
+    attrConstruct _ = constructTerminalScrollOnKeystroke
+
+-- VVV Prop "scroll-on-output"
+   -- Type: TBasicType TBoolean
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalScrollOnOutput :: (MonadIO m, TerminalK o) => o -> m Bool
+getTerminalScrollOnOutput obj = liftIO $ getObjectPropertyBool obj "scroll-on-output"
+
+setTerminalScrollOnOutput :: (MonadIO m, TerminalK o) => o -> Bool -> m ()
+setTerminalScrollOnOutput obj val = liftIO $ setObjectPropertyBool obj "scroll-on-output" val
+
+constructTerminalScrollOnOutput :: Bool -> IO ([Char], GValue)
+constructTerminalScrollOnOutput val = constructObjectPropertyBool "scroll-on-output" val
+
+data TerminalScrollOnOutputPropertyInfo
+instance AttrInfo TerminalScrollOnOutputPropertyInfo where
+    type AttrAllowedOps TerminalScrollOnOutputPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalScrollOnOutputPropertyInfo = (~) Bool
+    type AttrBaseTypeConstraint TerminalScrollOnOutputPropertyInfo = TerminalK
+    type AttrGetType TerminalScrollOnOutputPropertyInfo = Bool
+    type AttrLabel TerminalScrollOnOutputPropertyInfo = "Terminal::scroll-on-output"
+    attrGet _ = getTerminalScrollOnOutput
+    attrSet _ = setTerminalScrollOnOutput
+    attrConstruct _ = constructTerminalScrollOnOutput
+
+-- VVV Prop "scrollback-lines"
+   -- Type: TBasicType TUInt32
+   -- Flags: [PropertyReadable,PropertyWritable]
+
+getTerminalScrollbackLines :: (MonadIO m, TerminalK o) => o -> m Word32
+getTerminalScrollbackLines obj = liftIO $ getObjectPropertyCUInt obj "scrollback-lines"
+
+setTerminalScrollbackLines :: (MonadIO m, TerminalK o) => o -> Word32 -> m ()
+setTerminalScrollbackLines obj val = liftIO $ setObjectPropertyCUInt obj "scrollback-lines" val
+
+constructTerminalScrollbackLines :: Word32 -> IO ([Char], GValue)
+constructTerminalScrollbackLines val = constructObjectPropertyCUInt "scrollback-lines" val
+
+data TerminalScrollbackLinesPropertyInfo
+instance AttrInfo TerminalScrollbackLinesPropertyInfo where
+    type AttrAllowedOps TerminalScrollbackLinesPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
+    type AttrSetTypeConstraint TerminalScrollbackLinesPropertyInfo = (~) Word32
+    type AttrBaseTypeConstraint TerminalScrollbackLinesPropertyInfo = TerminalK
+    type AttrGetType TerminalScrollbackLinesPropertyInfo = Word32
+    type AttrLabel TerminalScrollbackLinesPropertyInfo = "Terminal::scrollback-lines"
+    attrGet _ = getTerminalScrollbackLines
+    attrSet _ = setTerminalScrollbackLines
+    attrConstruct _ = constructTerminalScrollbackLines
+
+-- VVV Prop "window-title"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable]
+
+getTerminalWindowTitle :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalWindowTitle obj = liftIO $ getObjectPropertyString obj "window-title"
+
+data TerminalWindowTitlePropertyInfo
+instance AttrInfo TerminalWindowTitlePropertyInfo where
+    type AttrAllowedOps TerminalWindowTitlePropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint TerminalWindowTitlePropertyInfo = (~) ()
+    type AttrBaseTypeConstraint TerminalWindowTitlePropertyInfo = TerminalK
+    type AttrGetType TerminalWindowTitlePropertyInfo = T.Text
+    type AttrLabel TerminalWindowTitlePropertyInfo = "Terminal::window-title"
+    attrGet _ = getTerminalWindowTitle
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+-- VVV Prop "word-char-exceptions"
+   -- Type: TBasicType TUTF8
+   -- Flags: [PropertyReadable]
+
+getTerminalWordCharExceptions :: (MonadIO m, TerminalK o) => o -> m T.Text
+getTerminalWordCharExceptions obj = liftIO $ getObjectPropertyString obj "word-char-exceptions"
+
+data TerminalWordCharExceptionsPropertyInfo
+instance AttrInfo TerminalWordCharExceptionsPropertyInfo where
+    type AttrAllowedOps TerminalWordCharExceptionsPropertyInfo = '[ 'AttrGet]
+    type AttrSetTypeConstraint TerminalWordCharExceptionsPropertyInfo = (~) ()
+    type AttrBaseTypeConstraint TerminalWordCharExceptionsPropertyInfo = TerminalK
+    type AttrGetType TerminalWordCharExceptionsPropertyInfo = T.Text
+    type AttrLabel TerminalWordCharExceptionsPropertyInfo = "Terminal::word-char-exceptions"
+    attrGet _ = getTerminalWordCharExceptions
+    attrSet _ = undefined
+    attrConstruct _ = undefined
+
+type instance AttributeList Terminal = '[ '("allow-bold", TerminalAllowBoldPropertyInfo), '("app-paintable", GtkA.WidgetAppPaintablePropertyInfo), '("audible-bell", TerminalAudibleBellPropertyInfo), '("backspace-binding", TerminalBackspaceBindingPropertyInfo), '("can-default", GtkA.WidgetCanDefaultPropertyInfo), '("can-focus", GtkA.WidgetCanFocusPropertyInfo), '("cjk-ambiguous-width", TerminalCjkAmbiguousWidthPropertyInfo), '("composite-child", GtkA.WidgetCompositeChildPropertyInfo), '("current-directory-uri", TerminalCurrentDirectoryUriPropertyInfo), '("current-file-uri", TerminalCurrentFileUriPropertyInfo), '("cursor-blink-mode", TerminalCursorBlinkModePropertyInfo), '("cursor-shape", TerminalCursorShapePropertyInfo), '("delete-binding", TerminalDeleteBindingPropertyInfo), '("double-buffered", GtkA.WidgetDoubleBufferedPropertyInfo), '("encoding", TerminalEncodingPropertyInfo), '("events", GtkA.WidgetEventsPropertyInfo), '("expand", GtkA.WidgetExpandPropertyInfo), '("font-desc", TerminalFontDescPropertyInfo), '("font-scale", TerminalFontScalePropertyInfo), '("hadjustment", GtkA.ScrollableHadjustmentPropertyInfo), '("halign", GtkA.WidgetHalignPropertyInfo), '("has-default", GtkA.WidgetHasDefaultPropertyInfo), '("has-focus", GtkA.WidgetHasFocusPropertyInfo), '("has-tooltip", GtkA.WidgetHasTooltipPropertyInfo), '("height-request", GtkA.WidgetHeightRequestPropertyInfo), '("hexpand", GtkA.WidgetHexpandPropertyInfo), '("hexpand-set", GtkA.WidgetHexpandSetPropertyInfo), '("hscroll-policy", GtkA.ScrollableHscrollPolicyPropertyInfo), '("icon-title", TerminalIconTitlePropertyInfo), '("input-enabled", TerminalInputEnabledPropertyInfo), '("is-focus", GtkA.WidgetIsFocusPropertyInfo), '("margin", GtkA.WidgetMarginPropertyInfo), '("margin-bottom", GtkA.WidgetMarginBottomPropertyInfo), '("margin-end", GtkA.WidgetMarginEndPropertyInfo), '("margin-left", GtkA.WidgetMarginLeftPropertyInfo), '("margin-right", GtkA.WidgetMarginRightPropertyInfo), '("margin-start", GtkA.WidgetMarginStartPropertyInfo), '("margin-top", GtkA.WidgetMarginTopPropertyInfo), '("name", GtkA.WidgetNamePropertyInfo), '("no-show-all", GtkA.WidgetNoShowAllPropertyInfo), '("opacity", GtkA.WidgetOpacityPropertyInfo), '("parent", GtkA.WidgetParentPropertyInfo), '("pointer-autohide", TerminalPointerAutohidePropertyInfo), '("pty", TerminalPtyPropertyInfo), '("receives-default", GtkA.WidgetReceivesDefaultPropertyInfo), '("rewrap-on-resize", TerminalRewrapOnResizePropertyInfo), '("scale-factor", GtkA.WidgetScaleFactorPropertyInfo), '("scroll-on-keystroke", TerminalScrollOnKeystrokePropertyInfo), '("scroll-on-output", TerminalScrollOnOutputPropertyInfo), '("scrollback-lines", TerminalScrollbackLinesPropertyInfo), '("sensitive", GtkA.WidgetSensitivePropertyInfo), '("style", GtkA.WidgetStylePropertyInfo), '("tooltip-markup", GtkA.WidgetTooltipMarkupPropertyInfo), '("tooltip-text", GtkA.WidgetTooltipTextPropertyInfo), '("vadjustment", GtkA.ScrollableVadjustmentPropertyInfo), '("valign", GtkA.WidgetValignPropertyInfo), '("vexpand", GtkA.WidgetVexpandPropertyInfo), '("vexpand-set", GtkA.WidgetVexpandSetPropertyInfo), '("visible", GtkA.WidgetVisiblePropertyInfo), '("vscroll-policy", GtkA.ScrollableVscrollPolicyPropertyInfo), '("width-request", GtkA.WidgetWidthRequestPropertyInfo), '("window", GtkA.WidgetWindowPropertyInfo), '("window-title", TerminalWindowTitlePropertyInfo), '("word-char-exceptions", TerminalWordCharExceptionsPropertyInfo)]
+
diff --git a/GI/VteSignals.hs b/GI/VteSignals.hs
new file mode 100644
--- /dev/null
+++ b/GI/VteSignals.hs
@@ -0,0 +1,177 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+{-# LANGUAGE DataKinds,    FlexibleInstances,
+             TypeFamilies, MultiParamTypeClasses,
+               TypeOperators #-}
+
+module GI.VteSignals where
+
+import Data.GI.Base.Properties (GObjectNotifySignalInfo)
+import Data.GI.Base.Signals
+import Data.GI.Base.Overloading
+
+import qualified GI.GObjectSignals as GObject
+import qualified GI.GtkSignals as Gtk
+import GI.Vte
+
+type instance SignalList Pty = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+data TerminalBellSignalInfo
+instance SignalInfo TerminalBellSignalInfo where
+    type HaskellCallbackType TerminalBellSignalInfo = TerminalBellCallback
+    connectSignal _ = connectTerminalBell
+
+data TerminalCharSizeChangedSignalInfo
+instance SignalInfo TerminalCharSizeChangedSignalInfo where
+    type HaskellCallbackType TerminalCharSizeChangedSignalInfo = TerminalCharSizeChangedCallback
+    connectSignal _ = connectTerminalCharSizeChanged
+
+data TerminalChildExitedSignalInfo
+instance SignalInfo TerminalChildExitedSignalInfo where
+    type HaskellCallbackType TerminalChildExitedSignalInfo = TerminalChildExitedCallback
+    connectSignal _ = connectTerminalChildExited
+
+data TerminalCommitSignalInfo
+instance SignalInfo TerminalCommitSignalInfo where
+    type HaskellCallbackType TerminalCommitSignalInfo = TerminalCommitCallback
+    connectSignal _ = connectTerminalCommit
+
+data TerminalContentsChangedSignalInfo
+instance SignalInfo TerminalContentsChangedSignalInfo where
+    type HaskellCallbackType TerminalContentsChangedSignalInfo = TerminalContentsChangedCallback
+    connectSignal _ = connectTerminalContentsChanged
+
+data TerminalCopyClipboardSignalInfo
+instance SignalInfo TerminalCopyClipboardSignalInfo where
+    type HaskellCallbackType TerminalCopyClipboardSignalInfo = TerminalCopyClipboardCallback
+    connectSignal _ = connectTerminalCopyClipboard
+
+data TerminalCurrentDirectoryUriChangedSignalInfo
+instance SignalInfo TerminalCurrentDirectoryUriChangedSignalInfo where
+    type HaskellCallbackType TerminalCurrentDirectoryUriChangedSignalInfo = TerminalCurrentDirectoryUriChangedCallback
+    connectSignal _ = connectTerminalCurrentDirectoryUriChanged
+
+data TerminalCurrentFileUriChangedSignalInfo
+instance SignalInfo TerminalCurrentFileUriChangedSignalInfo where
+    type HaskellCallbackType TerminalCurrentFileUriChangedSignalInfo = TerminalCurrentFileUriChangedCallback
+    connectSignal _ = connectTerminalCurrentFileUriChanged
+
+data TerminalCursorMovedSignalInfo
+instance SignalInfo TerminalCursorMovedSignalInfo where
+    type HaskellCallbackType TerminalCursorMovedSignalInfo = TerminalCursorMovedCallback
+    connectSignal _ = connectTerminalCursorMoved
+
+data TerminalDecreaseFontSizeSignalInfo
+instance SignalInfo TerminalDecreaseFontSizeSignalInfo where
+    type HaskellCallbackType TerminalDecreaseFontSizeSignalInfo = TerminalDecreaseFontSizeCallback
+    connectSignal _ = connectTerminalDecreaseFontSize
+
+data TerminalDeiconifyWindowSignalInfo
+instance SignalInfo TerminalDeiconifyWindowSignalInfo where
+    type HaskellCallbackType TerminalDeiconifyWindowSignalInfo = TerminalDeiconifyWindowCallback
+    connectSignal _ = connectTerminalDeiconifyWindow
+
+data TerminalEncodingChangedSignalInfo
+instance SignalInfo TerminalEncodingChangedSignalInfo where
+    type HaskellCallbackType TerminalEncodingChangedSignalInfo = TerminalEncodingChangedCallback
+    connectSignal _ = connectTerminalEncodingChanged
+
+data TerminalEofSignalInfo
+instance SignalInfo TerminalEofSignalInfo where
+    type HaskellCallbackType TerminalEofSignalInfo = TerminalEofCallback
+    connectSignal _ = connectTerminalEof
+
+data TerminalIconTitleChangedSignalInfo
+instance SignalInfo TerminalIconTitleChangedSignalInfo where
+    type HaskellCallbackType TerminalIconTitleChangedSignalInfo = TerminalIconTitleChangedCallback
+    connectSignal _ = connectTerminalIconTitleChanged
+
+data TerminalIconifyWindowSignalInfo
+instance SignalInfo TerminalIconifyWindowSignalInfo where
+    type HaskellCallbackType TerminalIconifyWindowSignalInfo = TerminalIconifyWindowCallback
+    connectSignal _ = connectTerminalIconifyWindow
+
+data TerminalIncreaseFontSizeSignalInfo
+instance SignalInfo TerminalIncreaseFontSizeSignalInfo where
+    type HaskellCallbackType TerminalIncreaseFontSizeSignalInfo = TerminalIncreaseFontSizeCallback
+    connectSignal _ = connectTerminalIncreaseFontSize
+
+data TerminalLowerWindowSignalInfo
+instance SignalInfo TerminalLowerWindowSignalInfo where
+    type HaskellCallbackType TerminalLowerWindowSignalInfo = TerminalLowerWindowCallback
+    connectSignal _ = connectTerminalLowerWindow
+
+data TerminalMaximizeWindowSignalInfo
+instance SignalInfo TerminalMaximizeWindowSignalInfo where
+    type HaskellCallbackType TerminalMaximizeWindowSignalInfo = TerminalMaximizeWindowCallback
+    connectSignal _ = connectTerminalMaximizeWindow
+
+data TerminalMoveWindowSignalInfo
+instance SignalInfo TerminalMoveWindowSignalInfo where
+    type HaskellCallbackType TerminalMoveWindowSignalInfo = TerminalMoveWindowCallback
+    connectSignal _ = connectTerminalMoveWindow
+
+data TerminalNotificationReceivedSignalInfo
+instance SignalInfo TerminalNotificationReceivedSignalInfo where
+    type HaskellCallbackType TerminalNotificationReceivedSignalInfo = TerminalNotificationReceivedCallback
+    connectSignal _ = connectTerminalNotificationReceived
+
+data TerminalPasteClipboardSignalInfo
+instance SignalInfo TerminalPasteClipboardSignalInfo where
+    type HaskellCallbackType TerminalPasteClipboardSignalInfo = TerminalPasteClipboardCallback
+    connectSignal _ = connectTerminalPasteClipboard
+
+data TerminalRaiseWindowSignalInfo
+instance SignalInfo TerminalRaiseWindowSignalInfo where
+    type HaskellCallbackType TerminalRaiseWindowSignalInfo = TerminalRaiseWindowCallback
+    connectSignal _ = connectTerminalRaiseWindow
+
+data TerminalRefreshWindowSignalInfo
+instance SignalInfo TerminalRefreshWindowSignalInfo where
+    type HaskellCallbackType TerminalRefreshWindowSignalInfo = TerminalRefreshWindowCallback
+    connectSignal _ = connectTerminalRefreshWindow
+
+data TerminalResizeWindowSignalInfo
+instance SignalInfo TerminalResizeWindowSignalInfo where
+    type HaskellCallbackType TerminalResizeWindowSignalInfo = TerminalResizeWindowCallback
+    connectSignal _ = connectTerminalResizeWindow
+
+data TerminalRestoreWindowSignalInfo
+instance SignalInfo TerminalRestoreWindowSignalInfo where
+    type HaskellCallbackType TerminalRestoreWindowSignalInfo = TerminalRestoreWindowCallback
+    connectSignal _ = connectTerminalRestoreWindow
+
+data TerminalSelectionChangedSignalInfo
+instance SignalInfo TerminalSelectionChangedSignalInfo where
+    type HaskellCallbackType TerminalSelectionChangedSignalInfo = TerminalSelectionChangedCallback
+    connectSignal _ = connectTerminalSelectionChanged
+
+data TerminalTextDeletedSignalInfo
+instance SignalInfo TerminalTextDeletedSignalInfo where
+    type HaskellCallbackType TerminalTextDeletedSignalInfo = TerminalTextDeletedCallback
+    connectSignal _ = connectTerminalTextDeleted
+
+data TerminalTextInsertedSignalInfo
+instance SignalInfo TerminalTextInsertedSignalInfo where
+    type HaskellCallbackType TerminalTextInsertedSignalInfo = TerminalTextInsertedCallback
+    connectSignal _ = connectTerminalTextInserted
+
+data TerminalTextModifiedSignalInfo
+instance SignalInfo TerminalTextModifiedSignalInfo where
+    type HaskellCallbackType TerminalTextModifiedSignalInfo = TerminalTextModifiedCallback
+    connectSignal _ = connectTerminalTextModified
+
+data TerminalTextScrolledSignalInfo
+instance SignalInfo TerminalTextScrolledSignalInfo where
+    type HaskellCallbackType TerminalTextScrolledSignalInfo = TerminalTextScrolledCallback
+    connectSignal _ = connectTerminalTextScrolled
+
+data TerminalWindowTitleChangedSignalInfo
+instance SignalInfo TerminalWindowTitleChangedSignalInfo where
+    type HaskellCallbackType TerminalWindowTitleChangedSignalInfo = TerminalWindowTitleChangedCallback
+    connectSignal _ = connectTerminalWindowTitleChanged
+
+type instance SignalList Terminal = '[ '("accel-closures-changed", Gtk.WidgetAccelClosuresChangedSignalInfo), '("bell", TerminalBellSignalInfo), '("button-press-event", Gtk.WidgetButtonPressEventSignalInfo), '("button-release-event", Gtk.WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", Gtk.WidgetCanActivateAccelSignalInfo), '("char-size-changed", TerminalCharSizeChangedSignalInfo), '("child-exited", TerminalChildExitedSignalInfo), '("child-notify", Gtk.WidgetChildNotifySignalInfo), '("commit", TerminalCommitSignalInfo), '("composited-changed", Gtk.WidgetCompositedChangedSignalInfo), '("configure-event", Gtk.WidgetConfigureEventSignalInfo), '("contents-changed", TerminalContentsChangedSignalInfo), '("copy-clipboard", TerminalCopyClipboardSignalInfo), '("current-directory-uri-changed", TerminalCurrentDirectoryUriChangedSignalInfo), '("current-file-uri-changed", TerminalCurrentFileUriChangedSignalInfo), '("cursor-moved", TerminalCursorMovedSignalInfo), '("damage-event", Gtk.WidgetDamageEventSignalInfo), '("decrease-font-size", TerminalDecreaseFontSizeSignalInfo), '("deiconify-window", TerminalDeiconifyWindowSignalInfo), '("delete-event", Gtk.WidgetDeleteEventSignalInfo), '("destroy", Gtk.WidgetDestroySignalInfo), '("destroy-event", Gtk.WidgetDestroyEventSignalInfo), '("direction-changed", Gtk.WidgetDirectionChangedSignalInfo), '("drag-begin", Gtk.WidgetDragBeginSignalInfo), '("drag-data-delete", Gtk.WidgetDragDataDeleteSignalInfo), '("drag-data-get", Gtk.WidgetDragDataGetSignalInfo), '("drag-data-received", Gtk.WidgetDragDataReceivedSignalInfo), '("drag-drop", Gtk.WidgetDragDropSignalInfo), '("drag-end", Gtk.WidgetDragEndSignalInfo), '("drag-failed", Gtk.WidgetDragFailedSignalInfo), '("drag-leave", Gtk.WidgetDragLeaveSignalInfo), '("drag-motion", Gtk.WidgetDragMotionSignalInfo), '("draw", Gtk.WidgetDrawSignalInfo), '("encoding-changed", TerminalEncodingChangedSignalInfo), '("enter-notify-event", Gtk.WidgetEnterNotifyEventSignalInfo), '("eof", TerminalEofSignalInfo), '("event", Gtk.WidgetEventSignalInfo), '("event-after", Gtk.WidgetEventAfterSignalInfo), '("focus", Gtk.WidgetFocusSignalInfo), '("focus-in-event", Gtk.WidgetFocusInEventSignalInfo), '("focus-out-event", Gtk.WidgetFocusOutEventSignalInfo), '("grab-broken-event", Gtk.WidgetGrabBrokenEventSignalInfo), '("grab-focus", Gtk.WidgetGrabFocusSignalInfo), '("grab-notify", Gtk.WidgetGrabNotifySignalInfo), '("hide", Gtk.WidgetHideSignalInfo), '("hierarchy-changed", Gtk.WidgetHierarchyChangedSignalInfo), '("icon-title-changed", TerminalIconTitleChangedSignalInfo), '("iconify-window", TerminalIconifyWindowSignalInfo), '("increase-font-size", TerminalIncreaseFontSizeSignalInfo), '("key-press-event", Gtk.WidgetKeyPressEventSignalInfo), '("key-release-event", Gtk.WidgetKeyReleaseEventSignalInfo), '("keynav-failed", Gtk.WidgetKeynavFailedSignalInfo), '("leave-notify-event", Gtk.WidgetLeaveNotifyEventSignalInfo), '("lower-window", TerminalLowerWindowSignalInfo), '("map", Gtk.WidgetMapSignalInfo), '("map-event", Gtk.WidgetMapEventSignalInfo), '("maximize-window", TerminalMaximizeWindowSignalInfo), '("mnemonic-activate", Gtk.WidgetMnemonicActivateSignalInfo), '("motion-notify-event", Gtk.WidgetMotionNotifyEventSignalInfo), '("move-focus", Gtk.WidgetMoveFocusSignalInfo), '("move-window", TerminalMoveWindowSignalInfo), '("notification-received", TerminalNotificationReceivedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", Gtk.WidgetParentSetSignalInfo), '("paste-clipboard", TerminalPasteClipboardSignalInfo), '("popup-menu", Gtk.WidgetPopupMenuSignalInfo), '("property-notify-event", Gtk.WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", Gtk.WidgetProximityInEventSignalInfo), '("proximity-out-event", Gtk.WidgetProximityOutEventSignalInfo), '("query-tooltip", Gtk.WidgetQueryTooltipSignalInfo), '("raise-window", TerminalRaiseWindowSignalInfo), '("realize", Gtk.WidgetRealizeSignalInfo), '("refresh-window", TerminalRefreshWindowSignalInfo), '("resize-window", TerminalResizeWindowSignalInfo), '("restore-window", TerminalRestoreWindowSignalInfo), '("screen-changed", Gtk.WidgetScreenChangedSignalInfo), '("scroll-event", Gtk.WidgetScrollEventSignalInfo), '("selection-changed", TerminalSelectionChangedSignalInfo), '("selection-clear-event", Gtk.WidgetSelectionClearEventSignalInfo), '("selection-get", Gtk.WidgetSelectionGetSignalInfo), '("selection-notify-event", Gtk.WidgetSelectionNotifyEventSignalInfo), '("selection-received", Gtk.WidgetSelectionReceivedSignalInfo), '("selection-request-event", Gtk.WidgetSelectionRequestEventSignalInfo), '("show", Gtk.WidgetShowSignalInfo), '("show-help", Gtk.WidgetShowHelpSignalInfo), '("size-allocate", Gtk.WidgetSizeAllocateSignalInfo), '("state-changed", Gtk.WidgetStateChangedSignalInfo), '("state-flags-changed", Gtk.WidgetStateFlagsChangedSignalInfo), '("style-set", Gtk.WidgetStyleSetSignalInfo), '("style-updated", Gtk.WidgetStyleUpdatedSignalInfo), '("text-deleted", TerminalTextDeletedSignalInfo), '("text-inserted", TerminalTextInsertedSignalInfo), '("text-modified", TerminalTextModifiedSignalInfo), '("text-scrolled", TerminalTextScrolledSignalInfo), '("touch-event", Gtk.WidgetTouchEventSignalInfo), '("unmap", Gtk.WidgetUnmapSignalInfo), '("unmap-event", Gtk.WidgetUnmapEventSignalInfo), '("unrealize", Gtk.WidgetUnrealizeSignalInfo), '("visibility-notify-event", Gtk.WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", Gtk.WidgetWindowStateEventSignalInfo), '("window-title-changed", TerminalWindowTitleChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+import Distribution.Simple
+main = defaultMain
diff --git a/gi-vte.cabal b/gi-vte.cabal
new file mode 100644
--- /dev/null
+++ b/gi-vte.cabal
@@ -0,0 +1,31 @@
+-- Autogenerated, do not edit.
+name:               gi-vte
+version:            0.0.40.8
+synopsis:           Vte bindings
+description:        Bindings for Vte, autogenerated by haskell-gi.
+homepage:           https://github.com/haskell-gi/haskell-gi
+license:            LGPL-2.1
+license-file:       LICENSE
+author:             Will Thompson, Iñaki García Etxebarria and Jonas Platte
+maintainer:         Iñaki García Etxebarria (garetxe@gmail.com)
+category:           Bindings
+build-type:         Simple
+cabal-version:      >=1.10
+
+library
+    default-language:   Haskell2010
+    exposed-modules:    GI.Vte, GI.VteAttributes, GI.VteSignals
+    pkgconfig-depends:  vte-2.91 >= 0.40
+    build-depends: base >= 4.6 && <4.9,
+        haskell-gi-base >= 0.8 && < 1,
+        gi-atk >= 0.2.16.8 && < 0.3,
+        gi-glib >= 0.2.44.8 && < 0.3,
+        gi-gobject >= 0.2.44.8 && < 0.3,
+        gi-gdk >= 0.3.16.8 && < 0.4,
+        gi-gio >= 0.2.44.8 && < 0.3,
+        gi-gtk >= 0.3.16.8 && < 0.4,
+        gi-pango >= 0.1.36.8 && < 0.2,
+        bytestring >= 0.10,
+        containers >= 0.5,
+        text >= 1.0,
+        transformers >= 0.3
