// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/class.Terminal.html).
pub type Terminal

///|
pub(open) trait ITerminal {
  fn as_terminal(Self) -> Terminal
  fn check_hyperlink_at(Self, Double, Double) -> String? = _
  fn check_match_at(Self, Double, Double) -> (String?, Int) = _
  fn copy_clipboard_format(Self, Format) -> Unit = _
  fn copy_primary(Self) -> Unit = _
  fn dup_termprop_string(Self, String) -> (String?, UInt64) = _
  fn dup_termprop_string_by_id(Self, Int) -> (String?, UInt64) = _
  fn dup_termprop_uuid(Self, String) -> Uuid? = _
  fn dup_termprop_uuid_by_id(Self, Int) -> Uuid? = _
  fn get_allow_hyperlink(Self) -> Bool = _
  fn get_audible_bell(Self) -> Bool = _
  fn get_bold_is_bright(Self) -> Bool = _
  fn get_cell_height_scale(Self) -> Double = _
  fn get_cell_width_scale(Self) -> Double = _
  fn get_char_height(Self) -> Int64 = _
  fn get_char_width(Self) -> Int64 = _
  fn get_cjk_ambiguous_width(Self) -> Int = _
  fn get_color_background_for_draw(Self) -> @gdk.RGBA = _
  fn get_column_count(Self) -> Int64 = _
  fn get_context_menu(Self) -> @gtk.Widget? = _
  fn get_context_menu_model(Self) -> @gio.MenuModel? = _
  fn get_cursor_blink_mode(Self) -> CursorBlinkMode = _
  fn get_cursor_position(Self) -> (Int64, Int64) = _
  fn get_cursor_shape(Self) -> CursorShape = _
  fn get_enable_a11y(Self) -> Bool = _
  fn get_enable_bidi(Self) -> Bool = _
  fn get_enable_fallback_scrolling(Self) -> Bool = _
  fn get_enable_legacy_osc777(Self) -> Bool = _
  fn get_enable_shaping(Self) -> Bool = _
  fn get_enable_sixel(Self) -> Bool = _
  fn get_font(Self) -> @pango.FontDescription = _
  fn get_font_scale(Self) -> Double = _
  fn get_has_selection(Self) -> Bool = _
  fn get_input_enabled(Self) -> Bool = _
  fn get_mouse_autohide(Self) -> Bool = _
  fn get_pty(Self) -> Pty? = _
  fn get_row_count(Self) -> Int64 = _
  fn get_scroll_on_insert(Self) -> Bool = _
  fn get_scroll_on_keystroke(Self) -> Bool = _
  fn get_scroll_on_output(Self) -> Bool = _
  fn get_scroll_unit_is_pixels(Self) -> Bool = _
  fn get_scrollback_lines(Self) -> Int64 = _
  fn get_termprop_bool(Self, String) -> (Bool, Bool) = _
  fn get_termprop_bool_by_id(Self, Int) -> (Bool, Bool) = _
  fn get_termprop_double(Self, String) -> (Bool, Double) = _
  fn get_termprop_double_by_id(Self, Int) -> (Bool, Double) = _
  fn get_termprop_int(Self, String) -> (Bool, Int64) = _
  fn get_termprop_int_by_id(Self, Int) -> (Bool, Int64) = _
  fn get_termprop_rgba(Self, String) -> (@gdk.RGBA, Bool) = _
  fn get_termprop_rgba_by_id(Self, Int) -> (@gdk.RGBA, Bool) = _
  fn get_termprop_string(Self, String) -> (String?, UInt64) = _
  fn get_termprop_string_by_id(Self, Int) -> (String?, UInt64) = _
  fn get_termprop_uint(Self, String) -> (Bool, UInt64) = _
  fn get_termprop_uint_by_id(Self, Int) -> (Bool, UInt64) = _
  fn get_text_blink_mode(Self) -> TextBlinkMode = _
  fn get_text_format(Self, Format) -> String? = _
  fn get_text_range_format(Self, Format, Int64, Int64, Int64, Int64) -> (
    String?,
    UInt64,
  ) = _
  fn get_text_selected(Self, Format) -> String? = _
  fn get_text_selected_full(Self, Format) -> (String?, UInt64) = _
  fn get_word_char_exceptions(Self) -> String? = _
  fn get_xalign(Self) -> Align = _
  fn get_xfill(Self) -> Bool = _
  fn get_yalign(Self) -> Align = _
  fn get_yfill(Self) -> Bool = _
  fn match_add_regex(Self, Regex, UInt) -> Int = _
  fn match_remove(Self, Int) -> Unit = _
  fn match_remove_all(Self) -> Unit = _
  fn match_set_cursor_name(Self, Int, String) -> Unit = _
  fn paste_clipboard(Self) -> Unit = _
  fn paste_primary(Self) -> Unit = _
  fn paste_text(Self, String) -> Unit = _
  fn pty_new_sync(Self, PtyFlags, &@gio.ICancellable?) -> Pty raise @glib.Error_ = _
  fn ref_termprop_data_bytes(Self, String) -> Bytes = _
  fn ref_termprop_data_bytes_by_id(Self, Int) -> Bytes = _
  fn ref_termprop_image_texture(Self, String) -> @gdk.Texture? = _
  fn ref_termprop_image_texture_by_id(Self, Int) -> @gdk.Texture? = _
  fn ref_termprop_variant(Self, String) -> @glib.Variant? = _
  fn ref_termprop_variant_by_id(Self, Int) -> @glib.Variant? = _
  fn reset(Self, Bool, Bool) -> Unit = _
  fn search_find_next(Self) -> Bool = _
  fn search_find_previous(Self) -> Bool = _
  fn search_get_regex(Self) -> Regex = _
  fn search_get_wrap_around(Self) -> Bool = _
  fn search_set_regex(Self, Regex?, UInt) -> Unit = _
  fn search_set_wrap_around(Self, Bool) -> Unit = _
  fn select_all(Self) -> Unit = _
  fn set_allow_hyperlink(Self, Bool) -> Unit = _
  fn set_audible_bell(Self, Bool) -> Unit = _
  fn set_backspace_binding(Self, EraseBinding) -> Unit = _
  fn set_bold_is_bright(Self, Bool) -> Unit = _
  fn set_cell_height_scale(Self, Double) -> Unit = _
  fn set_cell_width_scale(Self, Double) -> Unit = _
  fn set_cjk_ambiguous_width(Self, Int) -> Unit = _
  fn set_clear_background(Self, Bool) -> Unit = _
  fn set_color_background(Self, @gdk.RGBA) -> Unit = _
  fn set_color_bold(Self, @gdk.RGBA?) -> Unit = _
  fn set_color_cursor(Self, @gdk.RGBA?) -> Unit = _
  fn set_color_cursor_foreground(Self, @gdk.RGBA?) -> Unit = _
  fn set_color_foreground(Self, @gdk.RGBA) -> Unit = _
  fn set_color_highlight(Self, @gdk.RGBA?) -> Unit = _
  fn set_color_highlight_foreground(Self, @gdk.RGBA?) -> Unit = _
  fn set_context_menu(Self, &@gtk.IWidget?) -> Unit = _
  fn set_context_menu_model(Self, &@gio.IMenuModel?) -> Unit = _
  fn set_cursor_blink_mode(Self, CursorBlinkMode) -> Unit = _
  fn set_cursor_shape(Self, CursorShape) -> Unit = _
  fn set_default_colors(Self) -> Unit = _
  fn set_delete_binding(Self, EraseBinding) -> Unit = _
  fn set_enable_a11y(Self, Bool) -> Unit = _
  fn set_enable_bidi(Self, Bool) -> Unit = _
  fn set_enable_fallback_scrolling(Self, Bool) -> Unit = _
  fn set_enable_legacy_osc777(Self, Bool) -> Unit = _
  fn set_enable_shaping(Self, Bool) -> Unit = _
  fn set_enable_sixel(Self, Bool) -> Unit = _
  fn set_font(Self, @pango.FontDescription?) -> Unit = _
  fn set_font_scale(Self, Double) -> Unit = _
  fn set_input_enabled(Self, Bool) -> Unit = _
  fn set_mouse_autohide(Self, Bool) -> Unit = _
  fn set_pty(Self, &IPty?) -> Unit = _
  fn set_scroll_on_insert(Self, Bool) -> Unit = _
  fn set_scroll_on_keystroke(Self, Bool) -> Unit = _
  fn set_scroll_on_output(Self, Bool) -> Unit = _
  fn set_scroll_unit_is_pixels(Self, Bool) -> Unit = _
  fn set_scrollback_lines(Self, Int64) -> Unit = _
  fn set_size(Self, Int64, Int64) -> Unit = _
  fn set_suppress_legacy_signals(Self) -> Unit = _
  fn set_text_blink_mode(Self, TextBlinkMode) -> Unit = _
  fn set_word_char_exceptions(Self, String) -> Unit = _
  fn set_xalign(Self, Align) -> Unit = _
  fn set_xfill(Self, Bool) -> Unit = _
  fn set_yalign(Self, Align) -> Unit = _
  fn set_yfill(Self, Bool) -> Unit = _
  fn unselect_all(Self) -> Unit = _
  fn write_contents_sync(
    Self,
    &@gio.IOutputStream,
    WriteFlags,
    &@gio.ICancellable?,
  ) -> Bool raise @glib.Error_ = _
  fn connect_bell(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_char_size_changed(Self, (Terminal, UInt, UInt) -> Unit) -> UInt64 = _
  fn connect_child_exited(Self, (Terminal, Int) -> Unit) -> UInt64 = _
  fn connect_commit(Self, (Terminal, String, UInt) -> Unit) -> UInt64 = _
  fn connect_contents_changed(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_copy_clipboard(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_cursor_moved(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_decrease_font_size(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_encoding_changed(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_eof(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_hyperlink_hover_uri_changed(
    Self,
    (Terminal, String, @gdk.Rectangle) -> Unit,
  ) -> UInt64 = _
  fn connect_increase_font_size(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_paste_clipboard(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_resize_window(Self, (Terminal, UInt, UInt) -> Unit) -> UInt64 = _
  fn connect_selection_changed(Self, (Terminal) -> Unit) -> UInt64 = _
  fn connect_setup_context_menu(Self, (Terminal, EventContext?) -> Unit) -> UInt64 = _
  fn connect_termprop_changed(Self, (Terminal, String) -> Unit) -> UInt64 = _
}

///|
pub impl ITerminal for Terminal with fn as_terminal(self) {
  self
}

///|
/// Implementation contract for Terminal.bell. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalBell {
  fn bell(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.char_size_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalCharSizeChanged {
  fn char_size_changed(Self, Terminal, UInt, UInt) -> Unit
}

///|
/// Implementation contract for Terminal.child_exited. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalChildExited {
  fn child_exited(Self, Terminal, Int) -> Unit
}

///|
/// Implementation contract for Terminal.commit. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalCommit {
  fn commit(Self, Terminal, String, UInt) -> Unit
}

///|
/// Implementation contract for Terminal.contents_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalContentsChanged {
  fn contents_changed(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.cursor_moved. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalCursorMoved {
  fn cursor_moved(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.decrease_font_size. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalDecreaseFontSize {
  fn decrease_font_size(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.deiconify_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalDeiconifyWindow {
  fn deiconify_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.encoding_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalEncodingChanged {
  fn encoding_changed(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.eof. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalEof {
  fn eof(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.icon_title_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalIconTitleChanged {
  fn icon_title_changed(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.iconify_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalIconifyWindow {
  fn iconify_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.increase_font_size. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalIncreaseFontSize {
  fn increase_font_size(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.lower_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalLowerWindow {
  fn lower_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.maximize_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalMaximizeWindow {
  fn maximize_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.move_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalMoveWindow {
  fn move_window(Self, Terminal, UInt, UInt) -> Unit
}

///|
/// Implementation contract for Terminal.paste_clipboard. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalPasteClipboard {
  fn paste_clipboard(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.raise_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalRaiseWindow {
  fn raise_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.refresh_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalRefreshWindow {
  fn refresh_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.resize_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalResizeWindow {
  fn resize_window(Self, Terminal, UInt, UInt) -> Unit
}

///|
/// Implementation contract for Terminal.restore_window. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalRestoreWindow {
  fn restore_window(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.selection_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalSelectionChanged {
  fn selection_changed(Self, Terminal) -> Unit
}

///|
/// Implementation contract for Terminal.setup_context_menu. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalSetupContextMenu {
  fn setup_context_menu(Self, Terminal, EventContext) -> Unit
}

///|
/// Implementation contract for Terminal.termprop_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalTermpropChanged {
  fn termprop_changed(Self, Terminal, String) -> Unit
}

///|
/// Implementation contract for Terminal.window_title_changed. Self is the retained MoonBit state; the second parameter is the invoked Terminal object.
pub(open) trait VTerminalWindowTitleChanged {
  fn window_title_changed(Self, Terminal) -> Unit
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/ctor.Terminal.new.html).
pub extern "c" fn Terminal::new() -> Terminal = "moonbit_vte_terminal_new"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_check_hyperlink_at(
  self_ : Terminal,
  x : Double,
  y : Double,
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_check_hyperlink_at"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.check_hyperlink_at.html).
pub fn Terminal::check_hyperlink_at(
  self : Terminal,
  x : Double,
  y : Double,
) -> String? {
  let result = moonbit_vte_terminal_check_hyperlink_at(self, x, y)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
#borrow(self_, tag)
extern "c" fn moonbit_vte_terminal_check_match_at(
  self_ : Terminal,
  x : Double,
  y : Double,
  tag : Ref[Int],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_check_match_at"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.check_match_at.html).
pub fn Terminal::check_match_at(
  self : Terminal,
  x : Double,
  y : Double,
) -> (String?, Int) {
  let tag = Ref(0)
  let result_ = moonbit_vte_terminal_check_match_at(self, x, y, tag)
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, tag.val)
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.copy_clipboard_format.html).
#borrow(self)
pub extern "c" fn Terminal::copy_clipboard_format(
  self : Terminal,
  format : Format,
) = "moonbit_vte_terminal_copy_clipboard_format"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.copy_primary.html).
#borrow(self)
pub extern "c" fn Terminal::copy_primary(self : Terminal) = "moonbit_vte_terminal_copy_primary"

///|
#borrow(self_, prop, size)
extern "c" fn moonbit_vte_terminal_dup_termprop_string(
  self_ : Terminal,
  prop : Bytes,
  size : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_dup_termprop_string"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.dup_termprop_string.html).
pub fn Terminal::dup_termprop_string(
  self : Terminal,
  prop : String,
) -> (String?, UInt64) {
  let size = Ref(0UL)
  let result_ = moonbit_vte_terminal_dup_termprop_string(
    self,
    @encoding/utf8.encode(prop),
    size,
  )
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, size.val)
}

///|
#borrow(self_, size)
extern "c" fn moonbit_vte_terminal_dup_termprop_string_by_id(
  self_ : Terminal,
  prop : Int,
  size : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_dup_termprop_string_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.dup_termprop_string_by_id.html).
pub fn Terminal::dup_termprop_string_by_id(
  self : Terminal,
  prop : Int,
) -> (String?, UInt64) {
  let size = Ref(0UL)
  let result_ = moonbit_vte_terminal_dup_termprop_string_by_id(self, prop, size)
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, size.val)
}

///|
#borrow(self_, prop)
extern "c" fn moonbit_vte_terminal_dup_termprop_uuid(
  self_ : Terminal,
  prop : Bytes,
) -> @glib.Nullable[Uuid] = "moonbit_vte_terminal_dup_termprop_uuid"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.dup_termprop_uuid.html).
pub fn Terminal::dup_termprop_uuid(self : Terminal, prop : String) -> Uuid? {
  let raw_result = moonbit_vte_terminal_dup_termprop_uuid(
    self,
    @encoding/utf8.encode(prop),
  )
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_dup_termprop_uuid_by_id(
  self_ : Terminal,
  prop : Int,
) -> @glib.Nullable[Uuid] = "moonbit_vte_terminal_dup_termprop_uuid_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.dup_termprop_uuid_by_id.html).
pub fn Terminal::dup_termprop_uuid_by_id(self : Terminal, prop : Int) -> Uuid? {
  let raw_result = moonbit_vte_terminal_dup_termprop_uuid_by_id(self, prop)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_allow_hyperlink.html).
#borrow(self)
pub extern "c" fn Terminal::get_allow_hyperlink(self : Terminal) -> Bool = "moonbit_vte_terminal_get_allow_hyperlink"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_audible_bell.html).
#borrow(self)
pub extern "c" fn Terminal::get_audible_bell(self : Terminal) -> Bool = "moonbit_vte_terminal_get_audible_bell"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_bold_is_bright.html).
#borrow(self)
pub extern "c" fn Terminal::get_bold_is_bright(self : Terminal) -> Bool = "moonbit_vte_terminal_get_bold_is_bright"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cell_height_scale.html).
#borrow(self)
pub extern "c" fn Terminal::get_cell_height_scale(self : Terminal) -> Double = "moonbit_vte_terminal_get_cell_height_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cell_width_scale.html).
#borrow(self)
pub extern "c" fn Terminal::get_cell_width_scale(self : Terminal) -> Double = "moonbit_vte_terminal_get_cell_width_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_char_height.html).
#borrow(self)
pub extern "c" fn Terminal::get_char_height(self : Terminal) -> Int64 = "moonbit_vte_terminal_get_char_height"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_char_width.html).
#borrow(self)
pub extern "c" fn Terminal::get_char_width(self : Terminal) -> Int64 = "moonbit_vte_terminal_get_char_width"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cjk_ambiguous_width.html).
#borrow(self)
pub extern "c" fn Terminal::get_cjk_ambiguous_width(self : Terminal) -> Int = "moonbit_vte_terminal_get_cjk_ambiguous_width"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_color_background_for_draw(
  self_ : Terminal,
) -> @gdk.RGBA = "moonbit_vte_terminal_get_color_background_for_draw"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_color_background_for_draw.html).
pub fn Terminal::get_color_background_for_draw(self : Terminal) -> @gdk.RGBA {
  let __result = moonbit_vte_terminal_get_color_background_for_draw(self)
  __result
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_column_count.html).
#borrow(self)
pub extern "c" fn Terminal::get_column_count(self : Terminal) -> Int64 = "moonbit_vte_terminal_get_column_count"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_context_menu(
  self_ : Terminal,
) -> @glib.Nullable[@gtk.Widget] = "moonbit_vte_terminal_get_context_menu"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_context_menu.html).
pub fn Terminal::get_context_menu(self : Terminal) -> @gtk.Widget? {
  let raw_result = moonbit_vte_terminal_get_context_menu(self)
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_context_menu_model(
  self_ : Terminal,
) -> @glib.Nullable[@gio.MenuModel] = "moonbit_vte_terminal_get_context_menu_model"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_context_menu_model.html).
pub fn Terminal::get_context_menu_model(self : Terminal) -> @gio.MenuModel? {
  let raw_result = moonbit_vte_terminal_get_context_menu_model(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cursor_blink_mode.html).
#borrow(self)
pub extern "c" fn Terminal::get_cursor_blink_mode(
  self : Terminal,
) -> CursorBlinkMode = "moonbit_vte_terminal_get_cursor_blink_mode"

///|
#borrow(self_, column, row)
extern "c" fn moonbit_vte_terminal_get_cursor_position(
  self_ : Terminal,
  column : Ref[Int64],
  row : Ref[Int64],
) = "moonbit_vte_terminal_get_cursor_position"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cursor_position.html).
pub fn Terminal::get_cursor_position(self : Terminal) -> (Int64, Int64) {
  let column = Ref(0L)
  let row = Ref(0L)
  moonbit_vte_terminal_get_cursor_position(self, column, row)
  (column.val, row.val)
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_cursor_shape.html).
#borrow(self)
pub extern "c" fn Terminal::get_cursor_shape(self : Terminal) -> CursorShape = "moonbit_vte_terminal_get_cursor_shape"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_a11y.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_a11y(self : Terminal) -> Bool = "moonbit_vte_terminal_get_enable_a11y"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_bidi.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_bidi(self : Terminal) -> Bool = "moonbit_vte_terminal_get_enable_bidi"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_fallback_scrolling.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_fallback_scrolling(
  self : Terminal,
) -> Bool = "moonbit_vte_terminal_get_enable_fallback_scrolling"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_legacy_osc777.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_legacy_osc777(self : Terminal) -> Bool = "moonbit_vte_terminal_get_enable_legacy_osc777"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_shaping.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_shaping(self : Terminal) -> Bool = "moonbit_vte_terminal_get_enable_shaping"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_enable_sixel.html).
#borrow(self)
pub extern "c" fn Terminal::get_enable_sixel(self : Terminal) -> Bool = "moonbit_vte_terminal_get_enable_sixel"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_font.html).
#borrow(self)
pub extern "c" fn Terminal::get_font(self : Terminal) -> @pango.FontDescription = "moonbit_vte_terminal_get_font"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_font_scale.html).
#borrow(self)
pub extern "c" fn Terminal::get_font_scale(self : Terminal) -> Double = "moonbit_vte_terminal_get_font_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_has_selection.html).
#borrow(self)
pub extern "c" fn Terminal::get_has_selection(self : Terminal) -> Bool = "moonbit_vte_terminal_get_has_selection"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_input_enabled.html).
#borrow(self)
pub extern "c" fn Terminal::get_input_enabled(self : Terminal) -> Bool = "moonbit_vte_terminal_get_input_enabled"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_mouse_autohide.html).
#borrow(self)
pub extern "c" fn Terminal::get_mouse_autohide(self : Terminal) -> Bool = "moonbit_vte_terminal_get_mouse_autohide"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_pty(
  self_ : Terminal,
) -> @glib.Nullable[Pty] = "moonbit_vte_terminal_get_pty"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_pty.html).
pub fn Terminal::get_pty(self : Terminal) -> Pty? {
  let raw_result = moonbit_vte_terminal_get_pty(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_row_count.html).
#borrow(self)
pub extern "c" fn Terminal::get_row_count(self : Terminal) -> Int64 = "moonbit_vte_terminal_get_row_count"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_scroll_on_insert.html).
#borrow(self)
pub extern "c" fn Terminal::get_scroll_on_insert(self : Terminal) -> Bool = "moonbit_vte_terminal_get_scroll_on_insert"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_scroll_on_keystroke.html).
#borrow(self)
pub extern "c" fn Terminal::get_scroll_on_keystroke(self : Terminal) -> Bool = "moonbit_vte_terminal_get_scroll_on_keystroke"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_scroll_on_output.html).
#borrow(self)
pub extern "c" fn Terminal::get_scroll_on_output(self : Terminal) -> Bool = "moonbit_vte_terminal_get_scroll_on_output"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_scroll_unit_is_pixels.html).
#borrow(self)
pub extern "c" fn Terminal::get_scroll_unit_is_pixels(self : Terminal) -> Bool = "moonbit_vte_terminal_get_scroll_unit_is_pixels"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_scrollback_lines.html).
#borrow(self)
pub extern "c" fn Terminal::get_scrollback_lines(self : Terminal) -> Int64 = "moonbit_vte_terminal_get_scrollback_lines"

///|
#borrow(self_, prop, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_bool(
  self_ : Terminal,
  prop : Bytes,
  valuep : Ref[Bool],
) -> Bool = "moonbit_vte_terminal_get_termprop_bool"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_bool.html).
pub fn Terminal::get_termprop_bool(
  self : Terminal,
  prop : String,
) -> (Bool, Bool) {
  let valuep = Ref(false)
  let result = moonbit_vte_terminal_get_termprop_bool(
    self,
    @encoding/utf8.encode(prop),
    valuep,
  )
  (result, valuep.val)
}

///|
#borrow(self_, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_bool_by_id(
  self_ : Terminal,
  prop : Int,
  valuep : Ref[Bool],
) -> Bool = "moonbit_vte_terminal_get_termprop_bool_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_bool_by_id.html).
pub fn Terminal::get_termprop_bool_by_id(
  self : Terminal,
  prop : Int,
) -> (Bool, Bool) {
  let valuep = Ref(false)
  let result = moonbit_vte_terminal_get_termprop_bool_by_id(self, prop, valuep)
  (result, valuep.val)
}

///|
#borrow(self_, prop, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_double(
  self_ : Terminal,
  prop : Bytes,
  valuep : Ref[Double],
) -> Bool = "moonbit_vte_terminal_get_termprop_double"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_double.html).
pub fn Terminal::get_termprop_double(
  self : Terminal,
  prop : String,
) -> (Bool, Double) {
  let valuep = Ref(0.0)
  let result = moonbit_vte_terminal_get_termprop_double(
    self,
    @encoding/utf8.encode(prop),
    valuep,
  )
  (result, valuep.val)
}

///|
#borrow(self_, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_double_by_id(
  self_ : Terminal,
  prop : Int,
  valuep : Ref[Double],
) -> Bool = "moonbit_vte_terminal_get_termprop_double_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_double_by_id.html).
pub fn Terminal::get_termprop_double_by_id(
  self : Terminal,
  prop : Int,
) -> (Bool, Double) {
  let valuep = Ref(0.0)
  let result = moonbit_vte_terminal_get_termprop_double_by_id(
    self, prop, valuep,
  )
  (result, valuep.val)
}

///|
#borrow(self_, prop, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_int(
  self_ : Terminal,
  prop : Bytes,
  valuep : Ref[Int64],
) -> Bool = "moonbit_vte_terminal_get_termprop_int"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_int.html).
pub fn Terminal::get_termprop_int(
  self : Terminal,
  prop : String,
) -> (Bool, Int64) {
  let valuep = Ref(0L)
  let result = moonbit_vte_terminal_get_termprop_int(
    self,
    @encoding/utf8.encode(prop),
    valuep,
  )
  (result, valuep.val)
}

///|
#borrow(self_, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_int_by_id(
  self_ : Terminal,
  prop : Int,
  valuep : Ref[Int64],
) -> Bool = "moonbit_vte_terminal_get_termprop_int_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_int_by_id.html).
pub fn Terminal::get_termprop_int_by_id(
  self : Terminal,
  prop : Int,
) -> (Bool, Int64) {
  let valuep = Ref(0L)
  let result = moonbit_vte_terminal_get_termprop_int_by_id(self, prop, valuep)
  (result, valuep.val)
}

///|
#borrow(self_, prop, native_result)
extern "c" fn moonbit_vte_terminal_get_termprop_rgba(
  self_ : Terminal,
  prop : Bytes,
  native_result : Ref[Int],
) -> @gdk.RGBA = "moonbit_vte_terminal_get_termprop_rgba"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_rgba.html).
pub fn Terminal::get_termprop_rgba(
  self : Terminal,
  prop : String,
) -> (@gdk.RGBA, Bool) {
  let native_result = Ref(0)
  let __result = moonbit_vte_terminal_get_termprop_rgba(
    self,
    @encoding/utf8.encode(prop),
    native_result,
  )
  (__result, native_result.val != 0)
}

///|
#borrow(self_, native_result)
extern "c" fn moonbit_vte_terminal_get_termprop_rgba_by_id(
  self_ : Terminal,
  prop : Int,
  native_result : Ref[Int],
) -> @gdk.RGBA = "moonbit_vte_terminal_get_termprop_rgba_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_rgba_by_id.html).
pub fn Terminal::get_termprop_rgba_by_id(
  self : Terminal,
  prop : Int,
) -> (@gdk.RGBA, Bool) {
  let native_result = Ref(0)
  let __result = moonbit_vte_terminal_get_termprop_rgba_by_id(
    self, prop, native_result,
  )
  (__result, native_result.val != 0)
}

///|
#borrow(self_, prop, size)
extern "c" fn moonbit_vte_terminal_get_termprop_string(
  self_ : Terminal,
  prop : Bytes,
  size : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_termprop_string"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_string.html).
pub fn Terminal::get_termprop_string(
  self : Terminal,
  prop : String,
) -> (String?, UInt64) {
  let size = Ref(0UL)
  let result_ = moonbit_vte_terminal_get_termprop_string(
    self,
    @encoding/utf8.encode(prop),
    size,
  )
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, size.val)
}

///|
#borrow(self_, size)
extern "c" fn moonbit_vte_terminal_get_termprop_string_by_id(
  self_ : Terminal,
  prop : Int,
  size : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_termprop_string_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_string_by_id.html).
pub fn Terminal::get_termprop_string_by_id(
  self : Terminal,
  prop : Int,
) -> (String?, UInt64) {
  let size = Ref(0UL)
  let result_ = moonbit_vte_terminal_get_termprop_string_by_id(self, prop, size)
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, size.val)
}

///|
#borrow(self_, prop, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_uint(
  self_ : Terminal,
  prop : Bytes,
  valuep : Ref[UInt64],
) -> Bool = "moonbit_vte_terminal_get_termprop_uint"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_uint.html).
pub fn Terminal::get_termprop_uint(
  self : Terminal,
  prop : String,
) -> (Bool, UInt64) {
  let valuep = Ref(0UL)
  let result = moonbit_vte_terminal_get_termprop_uint(
    self,
    @encoding/utf8.encode(prop),
    valuep,
  )
  (result, valuep.val)
}

///|
#borrow(self_, valuep)
extern "c" fn moonbit_vte_terminal_get_termprop_uint_by_id(
  self_ : Terminal,
  prop : Int,
  valuep : Ref[UInt64],
) -> Bool = "moonbit_vte_terminal_get_termprop_uint_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_termprop_uint_by_id.html).
pub fn Terminal::get_termprop_uint_by_id(
  self : Terminal,
  prop : Int,
) -> (Bool, UInt64) {
  let valuep = Ref(0UL)
  let result = moonbit_vte_terminal_get_termprop_uint_by_id(self, prop, valuep)
  (result, valuep.val)
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_text_blink_mode.html).
#borrow(self)
pub extern "c" fn Terminal::get_text_blink_mode(
  self : Terminal,
) -> TextBlinkMode = "moonbit_vte_terminal_get_text_blink_mode"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_text_format(
  self_ : Terminal,
  format : Format,
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_text_format"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_text_format.html).
pub fn Terminal::get_text_format(self : Terminal, format : Format) -> String? {
  let result = moonbit_vte_terminal_get_text_format(self, format)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
#borrow(self_, length)
extern "c" fn moonbit_vte_terminal_get_text_range_format(
  self_ : Terminal,
  format : Format,
  start_row : Int64,
  start_col : Int64,
  end_row : Int64,
  end_col : Int64,
  length : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_text_range_format"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_text_range_format.html).
pub fn Terminal::get_text_range_format(
  self : Terminal,
  format : Format,
  start_row : Int64,
  start_col : Int64,
  end_row : Int64,
  end_col : Int64,
) -> (String?, UInt64) {
  let length = Ref(0UL)
  let result_ = moonbit_vte_terminal_get_text_range_format(
    self, format, start_row, start_col, end_row, end_col, length,
  )
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, length.val)
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_text_selected(
  self_ : Terminal,
  format : Format,
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_text_selected"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_text_selected.html).
pub fn Terminal::get_text_selected(self : Terminal, format : Format) -> String? {
  let result = moonbit_vte_terminal_get_text_selected(self, format)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
#borrow(self_, length)
extern "c" fn moonbit_vte_terminal_get_text_selected_full(
  self_ : Terminal,
  format : Format,
  length : Ref[UInt64],
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_text_selected_full"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_text_selected_full.html).
pub fn Terminal::get_text_selected_full(
  self : Terminal,
  format : Format,
) -> (String?, UInt64) {
  let length = Ref(0UL)
  let result_ = moonbit_vte_terminal_get_text_selected_full(
    self, format, length,
  )
  let result = match result_.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
  (result, length.val)
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_word_char_exceptions(
  self_ : Terminal,
) -> @glib.Nullable[Bytes] = "moonbit_vte_terminal_get_word_char_exceptions"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_word_char_exceptions.html).
pub fn Terminal::get_word_char_exceptions(self : Terminal) -> String? {
  let result = moonbit_vte_terminal_get_word_char_exceptions(self)
  match result.to_option() {
    Some(bytes) => Some(@encoding/utf8.decode_lossy(bytes))
    None => None
  }
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_xalign.html).
#borrow(self)
pub extern "c" fn Terminal::get_xalign(self : Terminal) -> Align = "moonbit_vte_terminal_get_xalign"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_xfill.html).
#borrow(self)
pub extern "c" fn Terminal::get_xfill(self : Terminal) -> Bool = "moonbit_vte_terminal_get_xfill"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_yalign.html).
#borrow(self)
pub extern "c" fn Terminal::get_yalign(self : Terminal) -> Align = "moonbit_vte_terminal_get_yalign"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.get_yfill.html).
#borrow(self)
pub extern "c" fn Terminal::get_yfill(self : Terminal) -> Bool = "moonbit_vte_terminal_get_yfill"

///|
#borrow(self_, regex)
extern "c" fn moonbit_vte_terminal_match_add_regex(
  self_ : Terminal,
  regex : Regex,
  flags : UInt,
) -> Int = "moonbit_vte_terminal_match_add_regex"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.match_add_regex.html).
pub fn Terminal::match_add_regex(
  self : Terminal,
  regex : Regex,
  flags : UInt,
) -> Int {
  moonbit_vte_terminal_match_add_regex(self, regex, flags)
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.match_remove.html).
#borrow(self)
pub extern "c" fn Terminal::match_remove(self : Terminal, tag : Int) = "moonbit_vte_terminal_match_remove"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.match_remove_all.html).
#borrow(self)
pub extern "c" fn Terminal::match_remove_all(self : Terminal) = "moonbit_vte_terminal_match_remove_all"

///|
#borrow(self_, cursor_name)
extern "c" fn moonbit_vte_terminal_match_set_cursor_name(
  self_ : Terminal,
  tag : Int,
  cursor_name : Bytes,
) = "moonbit_vte_terminal_match_set_cursor_name"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.match_set_cursor_name.html).
pub fn Terminal::match_set_cursor_name(
  self : Terminal,
  tag : Int,
  cursor_name : String,
) -> Unit {
  moonbit_vte_terminal_match_set_cursor_name(
    self,
    tag,
    @encoding/utf8.encode(cursor_name),
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.paste_clipboard.html).
#borrow(self)
pub extern "c" fn Terminal::paste_clipboard(self : Terminal) = "moonbit_vte_terminal_paste_clipboard"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.paste_primary.html).
#borrow(self)
pub extern "c" fn Terminal::paste_primary(self : Terminal) = "moonbit_vte_terminal_paste_primary"

///|
#borrow(self_, text)
extern "c" fn moonbit_vte_terminal_paste_text(self_ : Terminal, text : Bytes) = "moonbit_vte_terminal_paste_text"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.paste_text.html).
pub fn Terminal::paste_text(self : Terminal, text : String) -> Unit {
  moonbit_vte_terminal_paste_text(self, @encoding/utf8.encode(text))
}

///|
#borrow(self_, cancellable, error)
extern "c" fn moonbit_vte_terminal_pty_new_sync(
  self_ : Terminal,
  flags : Int,
  cancellable : @glib.Nullable[@gio.Cancellable],
  error : Ref[@glib.Nullable[@glib.Error_]],
) -> Pty = "moonbit_vte_terminal_pty_new_sync"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.pty_new_sync.html).
pub fn Terminal::pty_new_sync(
  self : Terminal,
  flags : PtyFlags,
  cancellable : &@gio.ICancellable?,
) -> Pty raise @glib.Error_ {
  let error_ : Ref[@glib.Nullable[@glib.Error_]] = Ref(@glib.Nullable::null())
  let result = moonbit_vte_terminal_pty_new_sync(
    self,
    flags.to_int(),
    match cancellable {
      Some(v) => @glib.Nullable::some(v.as_cancellable())
      None => @glib.Nullable::null()
    },
    error_,
  )
  match error_.val.to_option() {
    Some(e) => raise e
    None => ()
  }
  result
}

///|
#borrow(self_, prop)
extern "c" fn moonbit_vte_terminal_ref_termprop_data_bytes(
  self_ : Terminal,
  prop : Bytes,
) -> Bytes = "moonbit_vte_terminal_ref_termprop_data_bytes"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_data_bytes.html).
pub fn Terminal::ref_termprop_data_bytes(
  self : Terminal,
  prop : String,
) -> Bytes {
  moonbit_vte_terminal_ref_termprop_data_bytes(
    self,
    @encoding/utf8.encode(prop),
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_data_bytes_by_id.html).
#borrow(self)
pub extern "c" fn Terminal::ref_termprop_data_bytes_by_id(
  self : Terminal,
  prop : Int,
) -> Bytes = "moonbit_vte_terminal_ref_termprop_data_bytes_by_id"

///|
#borrow(self_, prop)
extern "c" fn moonbit_vte_terminal_ref_termprop_image_texture(
  self_ : Terminal,
  prop : Bytes,
) -> @glib.Nullable[@gdk.Texture] = "moonbit_vte_terminal_ref_termprop_image_texture"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_image_texture.html).
pub fn Terminal::ref_termprop_image_texture(
  self : Terminal,
  prop : String,
) -> @gdk.Texture? {
  let raw_result = moonbit_vte_terminal_ref_termprop_image_texture(
    self,
    @encoding/utf8.encode(prop),
  )
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_ref_termprop_image_texture_by_id(
  self_ : Terminal,
  prop : Int,
) -> @glib.Nullable[@gdk.Texture] = "moonbit_vte_terminal_ref_termprop_image_texture_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_image_texture_by_id.html).
pub fn Terminal::ref_termprop_image_texture_by_id(
  self : Terminal,
  prop : Int,
) -> @gdk.Texture? {
  let raw_result = moonbit_vte_terminal_ref_termprop_image_texture_by_id(
    self, prop,
  )
  raw_result.to_option()
}

///|
#borrow(self_, prop)
extern "c" fn moonbit_vte_terminal_ref_termprop_variant(
  self_ : Terminal,
  prop : Bytes,
) -> @glib.Nullable[@glib.Variant] = "moonbit_vte_terminal_ref_termprop_variant"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_variant.html).
pub fn Terminal::ref_termprop_variant(
  self : Terminal,
  prop : String,
) -> @glib.Variant? {
  let raw_result = moonbit_vte_terminal_ref_termprop_variant(
    self,
    @encoding/utf8.encode(prop),
  )
  raw_result.to_option()
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_ref_termprop_variant_by_id(
  self_ : Terminal,
  prop : Int,
) -> @glib.Nullable[@glib.Variant] = "moonbit_vte_terminal_ref_termprop_variant_by_id"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.ref_termprop_variant_by_id.html).
pub fn Terminal::ref_termprop_variant_by_id(
  self : Terminal,
  prop : Int,
) -> @glib.Variant? {
  let raw_result = moonbit_vte_terminal_ref_termprop_variant_by_id(self, prop)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.reset.html).
#borrow(self)
pub extern "c" fn Terminal::reset(
  self : Terminal,
  clear_tabstops : Bool,
  clear_history : Bool,
) = "moonbit_vte_terminal_reset"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_find_next.html).
#borrow(self)
pub extern "c" fn Terminal::search_find_next(self : Terminal) -> Bool = "moonbit_vte_terminal_search_find_next"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_find_previous.html).
#borrow(self)
pub extern "c" fn Terminal::search_find_previous(self : Terminal) -> Bool = "moonbit_vte_terminal_search_find_previous"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_get_regex.html).
#borrow(self)
pub extern "c" fn Terminal::search_get_regex(self : Terminal) -> Regex = "moonbit_vte_terminal_search_get_regex"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_get_wrap_around.html).
#borrow(self)
pub extern "c" fn Terminal::search_get_wrap_around(self : Terminal) -> Bool = "moonbit_vte_terminal_search_get_wrap_around"

///|
#borrow(self_, regex)
extern "c" fn moonbit_vte_terminal_search_set_regex(
  self_ : Terminal,
  regex : @glib.Nullable[Regex],
  flags : UInt,
) = "moonbit_vte_terminal_search_set_regex"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_set_regex.html).
pub fn Terminal::search_set_regex(
  self : Terminal,
  regex : Regex?,
  flags : UInt,
) -> Unit {
  moonbit_vte_terminal_search_set_regex(
    self,
    match regex {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
    flags,
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.search_set_wrap_around.html).
#borrow(self)
pub extern "c" fn Terminal::search_set_wrap_around(
  self : Terminal,
  wrap_around : Bool,
) = "moonbit_vte_terminal_search_set_wrap_around"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.select_all.html).
#borrow(self)
pub extern "c" fn Terminal::select_all(self : Terminal) = "moonbit_vte_terminal_select_all"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_allow_hyperlink.html).
#borrow(self)
pub extern "c" fn Terminal::set_allow_hyperlink(
  self : Terminal,
  allow_hyperlink : Bool,
) = "moonbit_vte_terminal_set_allow_hyperlink"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_audible_bell.html).
#borrow(self)
pub extern "c" fn Terminal::set_audible_bell(
  self : Terminal,
  is_audible : Bool,
) = "moonbit_vte_terminal_set_audible_bell"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_backspace_binding.html).
#borrow(self)
pub extern "c" fn Terminal::set_backspace_binding(
  self : Terminal,
  binding : EraseBinding,
) = "moonbit_vte_terminal_set_backspace_binding"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_bold_is_bright.html).
#borrow(self)
pub extern "c" fn Terminal::set_bold_is_bright(
  self : Terminal,
  bold_is_bright : Bool,
) = "moonbit_vte_terminal_set_bold_is_bright"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_cell_height_scale.html).
#borrow(self)
pub extern "c" fn Terminal::set_cell_height_scale(
  self : Terminal,
  scale : Double,
) = "moonbit_vte_terminal_set_cell_height_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_cell_width_scale.html).
#borrow(self)
pub extern "c" fn Terminal::set_cell_width_scale(
  self : Terminal,
  scale : Double,
) = "moonbit_vte_terminal_set_cell_width_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_cjk_ambiguous_width.html).
#borrow(self)
pub extern "c" fn Terminal::set_cjk_ambiguous_width(
  self : Terminal,
  width : Int,
) = "moonbit_vte_terminal_set_cjk_ambiguous_width"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_clear_background.html).
#borrow(self)
pub extern "c" fn Terminal::set_clear_background(
  self : Terminal,
  setting : Bool,
) = "moonbit_vte_terminal_set_clear_background"

///|
#borrow(self_, background)
extern "c" fn moonbit_vte_terminal_set_color_background(
  self_ : Terminal,
  background : @gdk.RGBA,
) = "moonbit_vte_terminal_set_color_background"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_background.html).
pub fn Terminal::set_color_background(
  self : Terminal,
  background : @gdk.RGBA,
) -> Unit {
  moonbit_vte_terminal_set_color_background(self, background)
}

///|
#borrow(self_, bold)
extern "c" fn moonbit_vte_terminal_set_color_bold(
  self_ : Terminal,
  bold : @glib.Nullable[@gdk.RGBA],
) = "moonbit_vte_terminal_set_color_bold"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_bold.html).
pub fn Terminal::set_color_bold(self : Terminal, bold : @gdk.RGBA?) -> Unit {
  moonbit_vte_terminal_set_color_bold(
    self,
    match bold {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, cursor_background)
extern "c" fn moonbit_vte_terminal_set_color_cursor(
  self_ : Terminal,
  cursor_background : @glib.Nullable[@gdk.RGBA],
) = "moonbit_vte_terminal_set_color_cursor"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_cursor.html).
pub fn Terminal::set_color_cursor(
  self : Terminal,
  cursor_background : @gdk.RGBA?,
) -> Unit {
  moonbit_vte_terminal_set_color_cursor(
    self,
    match cursor_background {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, cursor_foreground)
extern "c" fn moonbit_vte_terminal_set_color_cursor_foreground(
  self_ : Terminal,
  cursor_foreground : @glib.Nullable[@gdk.RGBA],
) = "moonbit_vte_terminal_set_color_cursor_foreground"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_cursor_foreground.html).
pub fn Terminal::set_color_cursor_foreground(
  self : Terminal,
  cursor_foreground : @gdk.RGBA?,
) -> Unit {
  moonbit_vte_terminal_set_color_cursor_foreground(
    self,
    match cursor_foreground {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, foreground)
extern "c" fn moonbit_vte_terminal_set_color_foreground(
  self_ : Terminal,
  foreground : @gdk.RGBA,
) = "moonbit_vte_terminal_set_color_foreground"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_foreground.html).
pub fn Terminal::set_color_foreground(
  self : Terminal,
  foreground : @gdk.RGBA,
) -> Unit {
  moonbit_vte_terminal_set_color_foreground(self, foreground)
}

///|
#borrow(self_, highlight_background)
extern "c" fn moonbit_vte_terminal_set_color_highlight(
  self_ : Terminal,
  highlight_background : @glib.Nullable[@gdk.RGBA],
) = "moonbit_vte_terminal_set_color_highlight"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_highlight.html).
pub fn Terminal::set_color_highlight(
  self : Terminal,
  highlight_background : @gdk.RGBA?,
) -> Unit {
  moonbit_vte_terminal_set_color_highlight(
    self,
    match highlight_background {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, highlight_foreground)
extern "c" fn moonbit_vte_terminal_set_color_highlight_foreground(
  self_ : Terminal,
  highlight_foreground : @glib.Nullable[@gdk.RGBA],
) = "moonbit_vte_terminal_set_color_highlight_foreground"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_color_highlight_foreground.html).
pub fn Terminal::set_color_highlight_foreground(
  self : Terminal,
  highlight_foreground : @gdk.RGBA?,
) -> Unit {
  moonbit_vte_terminal_set_color_highlight_foreground(
    self,
    match highlight_foreground {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, menu)
extern "c" fn moonbit_vte_terminal_set_context_menu(
  self_ : Terminal,
  menu : @glib.Nullable[@gtk.Widget],
) = "moonbit_vte_terminal_set_context_menu"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_context_menu.html).
pub fn Terminal::set_context_menu(
  self : Terminal,
  menu : &@gtk.IWidget?,
) -> Unit {
  moonbit_vte_terminal_set_context_menu(
    self,
    match menu {
      Some(v) => @glib.Nullable::some(v.as_widget())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, model)
extern "c" fn moonbit_vte_terminal_set_context_menu_model(
  self_ : Terminal,
  model : @glib.Nullable[@gio.MenuModel],
) = "moonbit_vte_terminal_set_context_menu_model"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_context_menu_model.html).
pub fn Terminal::set_context_menu_model(
  self : Terminal,
  model : &@gio.IMenuModel?,
) -> Unit {
  moonbit_vte_terminal_set_context_menu_model(
    self,
    match model {
      Some(v) => @glib.Nullable::some(v.as_menu_model())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_cursor_blink_mode.html).
#borrow(self)
pub extern "c" fn Terminal::set_cursor_blink_mode(
  self : Terminal,
  mode : CursorBlinkMode,
) = "moonbit_vte_terminal_set_cursor_blink_mode"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_cursor_shape.html).
#borrow(self)
pub extern "c" fn Terminal::set_cursor_shape(
  self : Terminal,
  shape : CursorShape,
) = "moonbit_vte_terminal_set_cursor_shape"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_default_colors.html).
#borrow(self)
pub extern "c" fn Terminal::set_default_colors(self : Terminal) = "moonbit_vte_terminal_set_default_colors"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_delete_binding.html).
#borrow(self)
pub extern "c" fn Terminal::set_delete_binding(
  self : Terminal,
  binding : EraseBinding,
) = "moonbit_vte_terminal_set_delete_binding"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_a11y.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_a11y(
  self : Terminal,
  enable_a11y : Bool,
) = "moonbit_vte_terminal_set_enable_a11y"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_bidi.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_bidi(
  self : Terminal,
  enable_bidi : Bool,
) = "moonbit_vte_terminal_set_enable_bidi"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_fallback_scrolling.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_fallback_scrolling(
  self : Terminal,
  enable : Bool,
) = "moonbit_vte_terminal_set_enable_fallback_scrolling"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_legacy_osc777.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_legacy_osc777(
  self : Terminal,
  enable : Bool,
) = "moonbit_vte_terminal_set_enable_legacy_osc777"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_shaping.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_shaping(
  self : Terminal,
  enable_shaping : Bool,
) = "moonbit_vte_terminal_set_enable_shaping"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_enable_sixel.html).
#borrow(self)
pub extern "c" fn Terminal::set_enable_sixel(self : Terminal, enabled : Bool) = "moonbit_vte_terminal_set_enable_sixel"

///|
#borrow(self_, font_desc)
extern "c" fn moonbit_vte_terminal_set_font(
  self_ : Terminal,
  font_desc : @glib.Nullable[@pango.FontDescription],
) = "moonbit_vte_terminal_set_font"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_font.html).
pub fn Terminal::set_font(
  self : Terminal,
  font_desc : @pango.FontDescription?,
) -> Unit {
  moonbit_vte_terminal_set_font(
    self,
    match font_desc {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_font_scale.html).
#borrow(self)
pub extern "c" fn Terminal::set_font_scale(self : Terminal, scale : Double) = "moonbit_vte_terminal_set_font_scale"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_input_enabled.html).
#borrow(self)
pub extern "c" fn Terminal::set_input_enabled(self : Terminal, enabled : Bool) = "moonbit_vte_terminal_set_input_enabled"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_mouse_autohide.html).
#borrow(self)
pub extern "c" fn Terminal::set_mouse_autohide(self : Terminal, setting : Bool) = "moonbit_vte_terminal_set_mouse_autohide"

///|
#borrow(self_, pty)
extern "c" fn moonbit_vte_terminal_set_pty(
  self_ : Terminal,
  pty : @glib.Nullable[Pty],
) = "moonbit_vte_terminal_set_pty"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_pty.html).
pub fn Terminal::set_pty(self : Terminal, pty : &IPty?) -> Unit {
  moonbit_vte_terminal_set_pty(
    self,
    match pty {
      Some(v) => @glib.Nullable::some(v.as_pty())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_scroll_on_insert.html).
#borrow(self)
pub extern "c" fn Terminal::set_scroll_on_insert(
  self : Terminal,
  scroll : Bool,
) = "moonbit_vte_terminal_set_scroll_on_insert"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_scroll_on_keystroke.html).
#borrow(self)
pub extern "c" fn Terminal::set_scroll_on_keystroke(
  self : Terminal,
  scroll : Bool,
) = "moonbit_vte_terminal_set_scroll_on_keystroke"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_scroll_on_output.html).
#borrow(self)
pub extern "c" fn Terminal::set_scroll_on_output(
  self : Terminal,
  scroll : Bool,
) = "moonbit_vte_terminal_set_scroll_on_output"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_scroll_unit_is_pixels.html).
#borrow(self)
pub extern "c" fn Terminal::set_scroll_unit_is_pixels(
  self : Terminal,
  enable : Bool,
) = "moonbit_vte_terminal_set_scroll_unit_is_pixels"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_scrollback_lines.html).
#borrow(self)
pub extern "c" fn Terminal::set_scrollback_lines(
  self : Terminal,
  lines : Int64,
) = "moonbit_vte_terminal_set_scrollback_lines"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_size.html).
#borrow(self)
pub extern "c" fn Terminal::set_size(
  self : Terminal,
  columns : Int64,
  rows : Int64,
) = "moonbit_vte_terminal_set_size"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_suppress_legacy_signals.html).
#borrow(self)
pub extern "c" fn Terminal::set_suppress_legacy_signals(self : Terminal) = "moonbit_vte_terminal_set_suppress_legacy_signals"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_text_blink_mode.html).
#borrow(self)
pub extern "c" fn Terminal::set_text_blink_mode(
  self : Terminal,
  text_blink_mode : TextBlinkMode,
) = "moonbit_vte_terminal_set_text_blink_mode"

///|
#borrow(self_, exceptions)
extern "c" fn moonbit_vte_terminal_set_word_char_exceptions(
  self_ : Terminal,
  exceptions : Bytes,
) = "moonbit_vte_terminal_set_word_char_exceptions"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_word_char_exceptions.html).
pub fn Terminal::set_word_char_exceptions(
  self : Terminal,
  exceptions : String,
) -> Unit {
  moonbit_vte_terminal_set_word_char_exceptions(
    self,
    @encoding/utf8.encode(exceptions),
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_xalign.html).
#borrow(self)
pub extern "c" fn Terminal::set_xalign(self : Terminal, align : Align) = "moonbit_vte_terminal_set_xalign"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_xfill.html).
#borrow(self)
pub extern "c" fn Terminal::set_xfill(self : Terminal, fill : Bool) = "moonbit_vte_terminal_set_xfill"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_yalign.html).
#borrow(self)
pub extern "c" fn Terminal::set_yalign(self : Terminal, align : Align) = "moonbit_vte_terminal_set_yalign"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.set_yfill.html).
#borrow(self)
pub extern "c" fn Terminal::set_yfill(self : Terminal, fill : Bool) = "moonbit_vte_terminal_set_yfill"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.unselect_all.html).
#borrow(self)
pub extern "c" fn Terminal::unselect_all(self : Terminal) = "moonbit_vte_terminal_unselect_all"

///|
#borrow(self_, stream, cancellable, error)
extern "c" fn moonbit_vte_terminal_write_contents_sync(
  self_ : Terminal,
  stream : @gio.OutputStream,
  flags : WriteFlags,
  cancellable : @glib.Nullable[@gio.Cancellable],
  error : Ref[@glib.Nullable[@glib.Error_]],
) -> Bool = "moonbit_vte_terminal_write_contents_sync"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/method.Terminal.write_contents_sync.html).
pub fn Terminal::write_contents_sync(
  self : Terminal,
  stream : &@gio.IOutputStream,
  flags : WriteFlags,
  cancellable : &@gio.ICancellable?,
) -> Bool raise @glib.Error_ {
  let error_ : Ref[@glib.Nullable[@glib.Error_]] = Ref(@glib.Nullable::null())
  let result = moonbit_vte_terminal_write_contents_sync(
    self,
    stream.as_output_stream(),
    flags,
    match cancellable {
      Some(v) => @glib.Nullable::some(v.as_cancellable())
      None => @glib.Nullable::null()
    },
    error_,
  )
  match error_.val.to_option() {
    Some(e) => raise e
    None => ()
  }
  result
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_bell(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_bell"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.bell.html).
pub fn Terminal::connect_bell(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_bell(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_char_size_changed(
  instance : Terminal,
  function : FuncRef[
    (Terminal, UInt, UInt, (Terminal, UInt, UInt) -> Unit) -> Unit,
  ],
  closure : (Terminal, UInt, UInt) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_char_size_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.char-size-changed.html).
pub fn Terminal::connect_char_size_changed(
  self : Terminal,
  f : (Terminal, UInt, UInt) -> Unit,
) -> UInt64 {
  vte_terminal_connect_char_size_changed(
    self,
    fn(instance_, width, height, f) { f(instance_, width, height) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_child_exited(
  instance : Terminal,
  function : FuncRef[(Terminal, Int, (Terminal, Int) -> Unit) -> Unit],
  closure : (Terminal, Int) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_child_exited"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.child-exited.html).
pub fn Terminal::connect_child_exited(
  self : Terminal,
  f : (Terminal, Int) -> Unit,
) -> UInt64 {
  vte_terminal_connect_child_exited(
    self,
    fn(instance_, status, f) { f(instance_, status) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_commit(
  instance : Terminal,
  function : FuncRef[
    (Terminal, Bytes, UInt, (Terminal, String, UInt) -> Unit) -> Unit,
  ],
  closure : (Terminal, String, UInt) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_commit"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.commit.html).
pub fn Terminal::connect_commit(
  self : Terminal,
  f : (Terminal, String, UInt) -> Unit,
) -> UInt64 {
  vte_terminal_connect_commit(
    self,
    fn(instance_, text, size, f) {
      f(instance_, @encoding/utf8.decode_lossy(text), size)
    },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_contents_changed(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_contents_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.contents-changed.html).
pub fn Terminal::connect_contents_changed(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_contents_changed(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_copy_clipboard(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_copy_clipboard"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.copy-clipboard.html).
pub fn Terminal::connect_copy_clipboard(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_copy_clipboard(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_cursor_moved(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_cursor_moved"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.cursor-moved.html).
pub fn Terminal::connect_cursor_moved(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_cursor_moved(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_decrease_font_size(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_decrease_font_size"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.decrease-font-size.html).
pub fn Terminal::connect_decrease_font_size(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_decrease_font_size(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_encoding_changed(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_encoding_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.encoding-changed.html).
pub fn Terminal::connect_encoding_changed(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_encoding_changed(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_eof(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_eof"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.eof.html).
pub fn Terminal::connect_eof(self : Terminal, f : (Terminal) -> Unit) -> UInt64 {
  vte_terminal_connect_eof(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_hyperlink_hover_uri_changed(
  instance : Terminal,
  function : FuncRef[
    (
      Terminal,
      Bytes,
      @gdk.Rectangle,
      (Terminal, String, @gdk.Rectangle) -> Unit,
    ) -> Unit,
  ],
  closure : (Terminal, String, @gdk.Rectangle) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_hyperlink_hover_uri_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.hyperlink-hover-uri-changed.html).
pub fn Terminal::connect_hyperlink_hover_uri_changed(
  self : Terminal,
  f : (Terminal, String, @gdk.Rectangle) -> Unit,
) -> UInt64 {
  vte_terminal_connect_hyperlink_hover_uri_changed(
    self,
    fn(instance_, object, p0, f) {
      f(instance_, @encoding/utf8.decode_lossy(object), p0)
    },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_increase_font_size(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_increase_font_size"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.increase-font-size.html).
pub fn Terminal::connect_increase_font_size(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_increase_font_size(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_paste_clipboard(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_paste_clipboard"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.paste-clipboard.html).
pub fn Terminal::connect_paste_clipboard(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_paste_clipboard(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_resize_window(
  instance : Terminal,
  function : FuncRef[
    (Terminal, UInt, UInt, (Terminal, UInt, UInt) -> Unit) -> Unit,
  ],
  closure : (Terminal, UInt, UInt) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_resize_window"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.resize-window.html).
pub fn Terminal::connect_resize_window(
  self : Terminal,
  f : (Terminal, UInt, UInt) -> Unit,
) -> UInt64 {
  vte_terminal_connect_resize_window(
    self,
    fn(instance_, width, height, f) { f(instance_, width, height) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_selection_changed(
  instance : Terminal,
  function : FuncRef[(Terminal, (Terminal) -> Unit) -> Unit],
  closure : (Terminal) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_selection_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.selection-changed.html).
pub fn Terminal::connect_selection_changed(
  self : Terminal,
  f : (Terminal) -> Unit,
) -> UInt64 {
  vte_terminal_connect_selection_changed(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_setup_context_menu(
  instance : Terminal,
  function : FuncRef[
    (Terminal, EventContext?, (Terminal, EventContext?) -> Unit) -> Unit,
  ],
  closure : (Terminal, EventContext?) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_setup_context_menu"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.setup-context-menu.html).
pub fn Terminal::connect_setup_context_menu(
  self : Terminal,
  f : (Terminal, EventContext?) -> Unit,
) -> UInt64 {
  vte_terminal_connect_setup_context_menu(
    self,
    fn(instance_, context, f) { f(instance_, context) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn vte_terminal_connect_termprop_changed(
  instance : Terminal,
  function : FuncRef[(Terminal, Bytes, (Terminal, String) -> Unit) -> Unit],
  closure : (Terminal, String) -> Unit,
) -> UInt64 = "moonbit_vte_terminal_connect_termprop_changed"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/signal.Terminal.termprop-changed.html).
pub fn Terminal::connect_termprop_changed(
  self : Terminal,
  f : (Terminal, String) -> Unit,
) -> UInt64 {
  vte_terminal_connect_termprop_changed(
    self,
    fn(instance_, name, f) { f(instance_, @encoding/utf8.decode_lossy(name)) },
    f,
  )
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/property.Terminal.backspace-binding.html).
#borrow(self_)
pub extern "c" fn Terminal::get_backspace_binding(
  self_ : Terminal,
) -> EraseBinding = "moonbit_vte_terminal_get_backspace_binding"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/property.Terminal.delete-binding.html).
#borrow(self_)
pub extern "c" fn Terminal::get_delete_binding(
  self_ : Terminal,
) -> EraseBinding = "moonbit_vte_terminal_get_delete_binding"

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_hyperlink_hover_uri(
  self_ : Terminal,
) -> Bytes = "moonbit_vte_terminal_get_hyperlink_hover_uri"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/property.Terminal.hyperlink-hover-uri.html).
pub fn Terminal::get_hyperlink_hover_uri(self : Terminal) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_vte_terminal_get_hyperlink_hover_uri(self),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_get_pointer_autohide(
  self_ : Terminal,
) -> Int = "moonbit_vte_terminal_get_pointer_autohide"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/vte/gtk4/property.Terminal.pointer-autohide.html).
pub fn Terminal::get_pointer_autohide(self : Terminal) -> Bool {
  moonbit_vte_terminal_get_pointer_autohide(self) != 0
}

///|
#borrow(self_)
extern "c" fn moonbit_vte_terminal_set_pointer_autohide(
  self_ : Terminal,
  value : Int,
) = "moonbit_vte_terminal_set_pointer_autohide"

///|
pub fn Terminal::set_pointer_autohide(self : Terminal, value : Bool) -> Unit {
  moonbit_vte_terminal_set_pointer_autohide(self, if value { 1 } else { 0 })
}

///|
impl ITerminal with fn check_hyperlink_at(self, x, y) -> String? {
  self.as_terminal().check_hyperlink_at(x, y)
}

///|
impl ITerminal with fn check_match_at(self, x, y) -> (String?, Int) {
  self.as_terminal().check_match_at(x, y)
}

///|
impl ITerminal with fn copy_clipboard_format(self, format) -> Unit {
  self.as_terminal().copy_clipboard_format(format)
}

///|
impl ITerminal with fn copy_primary(self) -> Unit {
  self.as_terminal().copy_primary()
}

///|
impl ITerminal with fn dup_termprop_string(self, prop) -> (String?, UInt64) {
  self.as_terminal().dup_termprop_string(prop)
}

///|
impl ITerminal with fn dup_termprop_string_by_id(self, prop) -> (
  String?,
  UInt64,
) {
  self.as_terminal().dup_termprop_string_by_id(prop)
}

///|
impl ITerminal with fn dup_termprop_uuid(self, prop) -> Uuid? {
  self.as_terminal().dup_termprop_uuid(prop)
}

///|
impl ITerminal with fn dup_termprop_uuid_by_id(self, prop) -> Uuid? {
  self.as_terminal().dup_termprop_uuid_by_id(prop)
}

///|
impl ITerminal with fn get_allow_hyperlink(self) -> Bool {
  self.as_terminal().get_allow_hyperlink()
}

///|
impl ITerminal with fn get_audible_bell(self) -> Bool {
  self.as_terminal().get_audible_bell()
}

///|
impl ITerminal with fn get_bold_is_bright(self) -> Bool {
  self.as_terminal().get_bold_is_bright()
}

///|
impl ITerminal with fn get_cell_height_scale(self) -> Double {
  self.as_terminal().get_cell_height_scale()
}

///|
impl ITerminal with fn get_cell_width_scale(self) -> Double {
  self.as_terminal().get_cell_width_scale()
}

///|
impl ITerminal with fn get_char_height(self) -> Int64 {
  self.as_terminal().get_char_height()
}

///|
impl ITerminal with fn get_char_width(self) -> Int64 {
  self.as_terminal().get_char_width()
}

///|
impl ITerminal with fn get_cjk_ambiguous_width(self) -> Int {
  self.as_terminal().get_cjk_ambiguous_width()
}

///|
impl ITerminal with fn get_color_background_for_draw(self) -> @gdk.RGBA {
  self.as_terminal().get_color_background_for_draw()
}

///|
impl ITerminal with fn get_column_count(self) -> Int64 {
  self.as_terminal().get_column_count()
}

///|
impl ITerminal with fn get_context_menu(self) -> @gtk.Widget? {
  self.as_terminal().get_context_menu()
}

///|
impl ITerminal with fn get_context_menu_model(self) -> @gio.MenuModel? {
  self.as_terminal().get_context_menu_model()
}

///|
impl ITerminal with fn get_cursor_blink_mode(self) -> CursorBlinkMode {
  self.as_terminal().get_cursor_blink_mode()
}

///|
impl ITerminal with fn get_cursor_position(self) -> (Int64, Int64) {
  self.as_terminal().get_cursor_position()
}

///|
impl ITerminal with fn get_cursor_shape(self) -> CursorShape {
  self.as_terminal().get_cursor_shape()
}

///|
impl ITerminal with fn get_enable_a11y(self) -> Bool {
  self.as_terminal().get_enable_a11y()
}

///|
impl ITerminal with fn get_enable_bidi(self) -> Bool {
  self.as_terminal().get_enable_bidi()
}

///|
impl ITerminal with fn get_enable_fallback_scrolling(self) -> Bool {
  self.as_terminal().get_enable_fallback_scrolling()
}

///|
impl ITerminal with fn get_enable_legacy_osc777(self) -> Bool {
  self.as_terminal().get_enable_legacy_osc777()
}

///|
impl ITerminal with fn get_enable_shaping(self) -> Bool {
  self.as_terminal().get_enable_shaping()
}

///|
impl ITerminal with fn get_enable_sixel(self) -> Bool {
  self.as_terminal().get_enable_sixel()
}

///|
impl ITerminal with fn get_font(self) -> @pango.FontDescription {
  self.as_terminal().get_font()
}

///|
impl ITerminal with fn get_font_scale(self) -> Double {
  self.as_terminal().get_font_scale()
}

///|
impl ITerminal with fn get_has_selection(self) -> Bool {
  self.as_terminal().get_has_selection()
}

///|
impl ITerminal with fn get_input_enabled(self) -> Bool {
  self.as_terminal().get_input_enabled()
}

///|
impl ITerminal with fn get_mouse_autohide(self) -> Bool {
  self.as_terminal().get_mouse_autohide()
}

///|
impl ITerminal with fn get_pty(self) -> Pty? {
  self.as_terminal().get_pty()
}

///|
impl ITerminal with fn get_row_count(self) -> Int64 {
  self.as_terminal().get_row_count()
}

///|
impl ITerminal with fn get_scroll_on_insert(self) -> Bool {
  self.as_terminal().get_scroll_on_insert()
}

///|
impl ITerminal with fn get_scroll_on_keystroke(self) -> Bool {
  self.as_terminal().get_scroll_on_keystroke()
}

///|
impl ITerminal with fn get_scroll_on_output(self) -> Bool {
  self.as_terminal().get_scroll_on_output()
}

///|
impl ITerminal with fn get_scroll_unit_is_pixels(self) -> Bool {
  self.as_terminal().get_scroll_unit_is_pixels()
}

///|
impl ITerminal with fn get_scrollback_lines(self) -> Int64 {
  self.as_terminal().get_scrollback_lines()
}

///|
impl ITerminal with fn get_termprop_bool(self, prop) -> (Bool, Bool) {
  self.as_terminal().get_termprop_bool(prop)
}

///|
impl ITerminal with fn get_termprop_bool_by_id(self, prop) -> (Bool, Bool) {
  self.as_terminal().get_termprop_bool_by_id(prop)
}

///|
impl ITerminal with fn get_termprop_double(self, prop) -> (Bool, Double) {
  self.as_terminal().get_termprop_double(prop)
}

///|
impl ITerminal with fn get_termprop_double_by_id(self, prop) -> (Bool, Double) {
  self.as_terminal().get_termprop_double_by_id(prop)
}

///|
impl ITerminal with fn get_termprop_int(self, prop) -> (Bool, Int64) {
  self.as_terminal().get_termprop_int(prop)
}

///|
impl ITerminal with fn get_termprop_int_by_id(self, prop) -> (Bool, Int64) {
  self.as_terminal().get_termprop_int_by_id(prop)
}

///|
impl ITerminal with fn get_termprop_rgba(self, prop) -> (@gdk.RGBA, Bool) {
  self.as_terminal().get_termprop_rgba(prop)
}

///|
impl ITerminal with fn get_termprop_rgba_by_id(self, prop) -> (@gdk.RGBA, Bool) {
  self.as_terminal().get_termprop_rgba_by_id(prop)
}

///|
impl ITerminal with fn get_termprop_string(self, prop) -> (String?, UInt64) {
  self.as_terminal().get_termprop_string(prop)
}

///|
impl ITerminal with fn get_termprop_string_by_id(self, prop) -> (
  String?,
  UInt64,
) {
  self.as_terminal().get_termprop_string_by_id(prop)
}

///|
impl ITerminal with fn get_termprop_uint(self, prop) -> (Bool, UInt64) {
  self.as_terminal().get_termprop_uint(prop)
}

///|
impl ITerminal with fn get_termprop_uint_by_id(self, prop) -> (Bool, UInt64) {
  self.as_terminal().get_termprop_uint_by_id(prop)
}

///|
impl ITerminal with fn get_text_blink_mode(self) -> TextBlinkMode {
  self.as_terminal().get_text_blink_mode()
}

///|
impl ITerminal with fn get_text_format(self, format) -> String? {
  self.as_terminal().get_text_format(format)
}

///|
impl ITerminal with fn get_text_range_format(
  self,
  format,
  start_row,
  start_col,
  end_row,
  end_col,
) -> (String?, UInt64) {
  self
  .as_terminal()
  .get_text_range_format(format, start_row, start_col, end_row, end_col)
}

///|
impl ITerminal with fn get_text_selected(self, format) -> String? {
  self.as_terminal().get_text_selected(format)
}

///|
impl ITerminal with fn get_text_selected_full(self, format) -> (String?, UInt64) {
  self.as_terminal().get_text_selected_full(format)
}

///|
impl ITerminal with fn get_word_char_exceptions(self) -> String? {
  self.as_terminal().get_word_char_exceptions()
}

///|
impl ITerminal with fn get_xalign(self) -> Align {
  self.as_terminal().get_xalign()
}

///|
impl ITerminal with fn get_xfill(self) -> Bool {
  self.as_terminal().get_xfill()
}

///|
impl ITerminal with fn get_yalign(self) -> Align {
  self.as_terminal().get_yalign()
}

///|
impl ITerminal with fn get_yfill(self) -> Bool {
  self.as_terminal().get_yfill()
}

///|
impl ITerminal with fn match_add_regex(self, regex, flags) -> Int {
  self.as_terminal().match_add_regex(regex, flags)
}

///|
impl ITerminal with fn match_remove(self, tag) -> Unit {
  self.as_terminal().match_remove(tag)
}

///|
impl ITerminal with fn match_remove_all(self) -> Unit {
  self.as_terminal().match_remove_all()
}

///|
impl ITerminal with fn match_set_cursor_name(self, tag, cursor_name) -> Unit {
  self.as_terminal().match_set_cursor_name(tag, cursor_name)
}

///|
impl ITerminal with fn paste_clipboard(self) -> Unit {
  self.as_terminal().paste_clipboard()
}

///|
impl ITerminal with fn paste_primary(self) -> Unit {
  self.as_terminal().paste_primary()
}

///|
impl ITerminal with fn paste_text(self, text) -> Unit {
  self.as_terminal().paste_text(text)
}

///|
impl ITerminal with fn pty_new_sync(self, flags, cancellable) -> Pty raise @glib.Error_ {
  self.as_terminal().pty_new_sync(flags, cancellable)
}

///|
impl ITerminal with fn ref_termprop_data_bytes(self, prop) -> Bytes {
  self.as_terminal().ref_termprop_data_bytes(prop)
}

///|
impl ITerminal with fn ref_termprop_data_bytes_by_id(self, prop) -> Bytes {
  self.as_terminal().ref_termprop_data_bytes_by_id(prop)
}

///|
impl ITerminal with fn ref_termprop_image_texture(self, prop) -> @gdk.Texture? {
  self.as_terminal().ref_termprop_image_texture(prop)
}

///|
impl ITerminal with fn ref_termprop_image_texture_by_id(self, prop) -> @gdk.Texture? {
  self.as_terminal().ref_termprop_image_texture_by_id(prop)
}

///|
impl ITerminal with fn ref_termprop_variant(self, prop) -> @glib.Variant? {
  self.as_terminal().ref_termprop_variant(prop)
}

///|
impl ITerminal with fn ref_termprop_variant_by_id(self, prop) -> @glib.Variant? {
  self.as_terminal().ref_termprop_variant_by_id(prop)
}

///|
impl ITerminal with fn reset(self, clear_tabstops, clear_history) -> Unit {
  self.as_terminal().reset(clear_tabstops, clear_history)
}

///|
impl ITerminal with fn search_find_next(self) -> Bool {
  self.as_terminal().search_find_next()
}

///|
impl ITerminal with fn search_find_previous(self) -> Bool {
  self.as_terminal().search_find_previous()
}

///|
impl ITerminal with fn search_get_regex(self) -> Regex {
  self.as_terminal().search_get_regex()
}

///|
impl ITerminal with fn search_get_wrap_around(self) -> Bool {
  self.as_terminal().search_get_wrap_around()
}

///|
impl ITerminal with fn search_set_regex(self, regex, flags) -> Unit {
  self.as_terminal().search_set_regex(regex, flags)
}

///|
impl ITerminal with fn search_set_wrap_around(self, wrap_around) -> Unit {
  self.as_terminal().search_set_wrap_around(wrap_around)
}

///|
impl ITerminal with fn select_all(self) -> Unit {
  self.as_terminal().select_all()
}

///|
impl ITerminal with fn set_allow_hyperlink(self, allow_hyperlink) -> Unit {
  self.as_terminal().set_allow_hyperlink(allow_hyperlink)
}

///|
impl ITerminal with fn set_audible_bell(self, is_audible) -> Unit {
  self.as_terminal().set_audible_bell(is_audible)
}

///|
impl ITerminal with fn set_backspace_binding(self, binding) -> Unit {
  self.as_terminal().set_backspace_binding(binding)
}

///|
impl ITerminal with fn set_bold_is_bright(self, bold_is_bright) -> Unit {
  self.as_terminal().set_bold_is_bright(bold_is_bright)
}

///|
impl ITerminal with fn set_cell_height_scale(self, scale) -> Unit {
  self.as_terminal().set_cell_height_scale(scale)
}

///|
impl ITerminal with fn set_cell_width_scale(self, scale) -> Unit {
  self.as_terminal().set_cell_width_scale(scale)
}

///|
impl ITerminal with fn set_cjk_ambiguous_width(self, width) -> Unit {
  self.as_terminal().set_cjk_ambiguous_width(width)
}

///|
impl ITerminal with fn set_clear_background(self, setting) -> Unit {
  self.as_terminal().set_clear_background(setting)
}

///|
impl ITerminal with fn set_color_background(self, background) -> Unit {
  self.as_terminal().set_color_background(background)
}

///|
impl ITerminal with fn set_color_bold(self, bold) -> Unit {
  self.as_terminal().set_color_bold(bold)
}

///|
impl ITerminal with fn set_color_cursor(self, cursor_background) -> Unit {
  self.as_terminal().set_color_cursor(cursor_background)
}

///|
impl ITerminal with fn set_color_cursor_foreground(self, cursor_foreground) -> Unit {
  self.as_terminal().set_color_cursor_foreground(cursor_foreground)
}

///|
impl ITerminal with fn set_color_foreground(self, foreground) -> Unit {
  self.as_terminal().set_color_foreground(foreground)
}

///|
impl ITerminal with fn set_color_highlight(self, highlight_background) -> Unit {
  self.as_terminal().set_color_highlight(highlight_background)
}

///|
impl ITerminal with fn set_color_highlight_foreground(
  self,
  highlight_foreground,
) -> Unit {
  self.as_terminal().set_color_highlight_foreground(highlight_foreground)
}

///|
impl ITerminal with fn set_context_menu(self, menu) -> Unit {
  self.as_terminal().set_context_menu(menu)
}

///|
impl ITerminal with fn set_context_menu_model(self, model) -> Unit {
  self.as_terminal().set_context_menu_model(model)
}

///|
impl ITerminal with fn set_cursor_blink_mode(self, mode) -> Unit {
  self.as_terminal().set_cursor_blink_mode(mode)
}

///|
impl ITerminal with fn set_cursor_shape(self, shape) -> Unit {
  self.as_terminal().set_cursor_shape(shape)
}

///|
impl ITerminal with fn set_default_colors(self) -> Unit {
  self.as_terminal().set_default_colors()
}

///|
impl ITerminal with fn set_delete_binding(self, binding) -> Unit {
  self.as_terminal().set_delete_binding(binding)
}

///|
impl ITerminal with fn set_enable_a11y(self, enable_a11y) -> Unit {
  self.as_terminal().set_enable_a11y(enable_a11y)
}

///|
impl ITerminal with fn set_enable_bidi(self, enable_bidi) -> Unit {
  self.as_terminal().set_enable_bidi(enable_bidi)
}

///|
impl ITerminal with fn set_enable_fallback_scrolling(self, enable) -> Unit {
  self.as_terminal().set_enable_fallback_scrolling(enable)
}

///|
impl ITerminal with fn set_enable_legacy_osc777(self, enable) -> Unit {
  self.as_terminal().set_enable_legacy_osc777(enable)
}

///|
impl ITerminal with fn set_enable_shaping(self, enable_shaping) -> Unit {
  self.as_terminal().set_enable_shaping(enable_shaping)
}

///|
impl ITerminal with fn set_enable_sixel(self, enabled) -> Unit {
  self.as_terminal().set_enable_sixel(enabled)
}

///|
impl ITerminal with fn set_font(self, font_desc) -> Unit {
  self.as_terminal().set_font(font_desc)
}

///|
impl ITerminal with fn set_font_scale(self, scale) -> Unit {
  self.as_terminal().set_font_scale(scale)
}

///|
impl ITerminal with fn set_input_enabled(self, enabled) -> Unit {
  self.as_terminal().set_input_enabled(enabled)
}

///|
impl ITerminal with fn set_mouse_autohide(self, setting) -> Unit {
  self.as_terminal().set_mouse_autohide(setting)
}

///|
impl ITerminal with fn set_pty(self, pty) -> Unit {
  self.as_terminal().set_pty(pty)
}

///|
impl ITerminal with fn set_scroll_on_insert(self, scroll) -> Unit {
  self.as_terminal().set_scroll_on_insert(scroll)
}

///|
impl ITerminal with fn set_scroll_on_keystroke(self, scroll) -> Unit {
  self.as_terminal().set_scroll_on_keystroke(scroll)
}

///|
impl ITerminal with fn set_scroll_on_output(self, scroll) -> Unit {
  self.as_terminal().set_scroll_on_output(scroll)
}

///|
impl ITerminal with fn set_scroll_unit_is_pixels(self, enable) -> Unit {
  self.as_terminal().set_scroll_unit_is_pixels(enable)
}

///|
impl ITerminal with fn set_scrollback_lines(self, lines) -> Unit {
  self.as_terminal().set_scrollback_lines(lines)
}

///|
impl ITerminal with fn set_size(self, columns, rows) -> Unit {
  self.as_terminal().set_size(columns, rows)
}

///|
impl ITerminal with fn set_suppress_legacy_signals(self) -> Unit {
  self.as_terminal().set_suppress_legacy_signals()
}

///|
impl ITerminal with fn set_text_blink_mode(self, text_blink_mode) -> Unit {
  self.as_terminal().set_text_blink_mode(text_blink_mode)
}

///|
impl ITerminal with fn set_word_char_exceptions(self, exceptions) -> Unit {
  self.as_terminal().set_word_char_exceptions(exceptions)
}

///|
impl ITerminal with fn set_xalign(self, align) -> Unit {
  self.as_terminal().set_xalign(align)
}

///|
impl ITerminal with fn set_xfill(self, fill) -> Unit {
  self.as_terminal().set_xfill(fill)
}

///|
impl ITerminal with fn set_yalign(self, align) -> Unit {
  self.as_terminal().set_yalign(align)
}

///|
impl ITerminal with fn set_yfill(self, fill) -> Unit {
  self.as_terminal().set_yfill(fill)
}

///|
impl ITerminal with fn unselect_all(self) -> Unit {
  self.as_terminal().unselect_all()
}

///|
impl ITerminal with fn write_contents_sync(self, stream, flags, cancellable) -> Bool raise @glib.Error_ {
  self.as_terminal().write_contents_sync(stream, flags, cancellable)
}

///|
impl ITerminal with fn connect_bell(self, f) -> UInt64 {
  self.as_terminal().connect_bell(f)
}

///|
impl ITerminal with fn connect_char_size_changed(self, f) -> UInt64 {
  self.as_terminal().connect_char_size_changed(f)
}

///|
impl ITerminal with fn connect_child_exited(self, f) -> UInt64 {
  self.as_terminal().connect_child_exited(f)
}

///|
impl ITerminal with fn connect_commit(self, f) -> UInt64 {
  self.as_terminal().connect_commit(f)
}

///|
impl ITerminal with fn connect_contents_changed(self, f) -> UInt64 {
  self.as_terminal().connect_contents_changed(f)
}

///|
impl ITerminal with fn connect_copy_clipboard(self, f) -> UInt64 {
  self.as_terminal().connect_copy_clipboard(f)
}

///|
impl ITerminal with fn connect_cursor_moved(self, f) -> UInt64 {
  self.as_terminal().connect_cursor_moved(f)
}

///|
impl ITerminal with fn connect_decrease_font_size(self, f) -> UInt64 {
  self.as_terminal().connect_decrease_font_size(f)
}

///|
impl ITerminal with fn connect_encoding_changed(self, f) -> UInt64 {
  self.as_terminal().connect_encoding_changed(f)
}

///|
impl ITerminal with fn connect_eof(self, f) -> UInt64 {
  self.as_terminal().connect_eof(f)
}

///|
impl ITerminal with fn connect_hyperlink_hover_uri_changed(self, f) -> UInt64 {
  self.as_terminal().connect_hyperlink_hover_uri_changed(f)
}

///|
impl ITerminal with fn connect_increase_font_size(self, f) -> UInt64 {
  self.as_terminal().connect_increase_font_size(f)
}

///|
impl ITerminal with fn connect_paste_clipboard(self, f) -> UInt64 {
  self.as_terminal().connect_paste_clipboard(f)
}

///|
impl ITerminal with fn connect_resize_window(self, f) -> UInt64 {
  self.as_terminal().connect_resize_window(f)
}

///|
impl ITerminal with fn connect_selection_changed(self, f) -> UInt64 {
  self.as_terminal().connect_selection_changed(f)
}

///|
impl ITerminal with fn connect_setup_context_menu(self, f) -> UInt64 {
  self.as_terminal().connect_setup_context_menu(f)
}

///|
impl ITerminal with fn connect_termprop_changed(self, f) -> UInt64 {
  self.as_terminal().connect_termprop_changed(f)
}

///|
pub fn Terminal::as_gtk_widget(self : Terminal) -> @gtk.Widget = "%identity"

///|
pub impl @gtk.IWidget for Terminal with fn as_widget(self) {
  self.as_gtk_widget()
}

///|
pub fn Terminal::as_gobject_object(self : Terminal) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for Terminal with fn as_object(self) {
  self.as_gobject_object()
}