vte_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use cairo_sys as cairo;
16use gdk4_sys as gdk;
17use gio_sys as gio;
18use glib_sys as glib;
19use gtk4_sys as gtk;
20use pango_sys as pango;
21
22#[allow(unused_imports)]
23use libc::{
24    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
25    intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE,
26};
27#[cfg(unix)]
28#[allow(unused_imports)]
29use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
30
31#[allow(unused_imports)]
32use glib::{gboolean, gconstpointer, gpointer, GType};
33
34// Enums
35pub type VteAlign = c_int;
36pub const VTE_ALIGN_START: VteAlign = 0;
37pub const VTE_ALIGN_CENTER: VteAlign = 1;
38pub const VTE_ALIGN_END: VteAlign = 2;
39
40pub type VteCursorBlinkMode = c_int;
41pub const VTE_CURSOR_BLINK_SYSTEM: VteCursorBlinkMode = 0;
42pub const VTE_CURSOR_BLINK_ON: VteCursorBlinkMode = 1;
43pub const VTE_CURSOR_BLINK_OFF: VteCursorBlinkMode = 2;
44
45pub type VteCursorShape = c_int;
46pub const VTE_CURSOR_SHAPE_BLOCK: VteCursorShape = 0;
47pub const VTE_CURSOR_SHAPE_IBEAM: VteCursorShape = 1;
48pub const VTE_CURSOR_SHAPE_UNDERLINE: VteCursorShape = 2;
49
50pub type VteEraseBinding = c_int;
51pub const VTE_ERASE_AUTO: VteEraseBinding = 0;
52pub const VTE_ERASE_ASCII_BACKSPACE: VteEraseBinding = 1;
53pub const VTE_ERASE_ASCII_DELETE: VteEraseBinding = 2;
54pub const VTE_ERASE_DELETE_SEQUENCE: VteEraseBinding = 3;
55pub const VTE_ERASE_TTY: VteEraseBinding = 4;
56
57pub type VteFormat = c_int;
58pub const VTE_FORMAT_TEXT: VteFormat = 1;
59pub const VTE_FORMAT_HTML: VteFormat = 2;
60
61pub type VtePtyError = c_int;
62pub const VTE_PTY_ERROR_PTY_HELPER_FAILED: VtePtyError = 0;
63pub const VTE_PTY_ERROR_PTY98_FAILED: VtePtyError = 1;
64
65pub type VteRegexError = c_int;
66pub const VTE_REGEX_ERROR_INCOMPATIBLE: VteRegexError = 2147483646;
67pub const VTE_REGEX_ERROR_NOT_SUPPORTED: VteRegexError = 2147483647;
68
69pub type VteTextBlinkMode = c_int;
70pub const VTE_TEXT_BLINK_NEVER: VteTextBlinkMode = 0;
71pub const VTE_TEXT_BLINK_FOCUSED: VteTextBlinkMode = 1;
72pub const VTE_TEXT_BLINK_UNFOCUSED: VteTextBlinkMode = 2;
73pub const VTE_TEXT_BLINK_ALWAYS: VteTextBlinkMode = 3;
74
75pub type VteWriteFlags = c_int;
76pub const VTE_WRITE_DEFAULT: VteWriteFlags = 0;
77
78// Constants
79pub const VTE_REGEX_FLAGS_DEFAULT: c_int = 1075314688;
80pub const VTE_SPAWN_NO_PARENT_ENVV: c_int = 33554432;
81pub const VTE_SPAWN_NO_SYSTEMD_SCOPE: c_int = 67108864;
82pub const VTE_SPAWN_REQUIRE_SYSTEMD_SCOPE: c_int = 134217728;
83pub const VTE_TEST_FLAGS_ALL: u64 = 18446744073709551615;
84pub const VTE_TEST_FLAGS_NONE: u64 = 0;
85
86// Flags
87pub type VteFeatureFlags = c_uint;
88pub const VTE_FEATURE_FLAG_BIDI: VteFeatureFlags = 1;
89pub const VTE_FEATURE_FLAG_ICU: VteFeatureFlags = 2;
90pub const VTE_FEATURE_FLAG_SYSTEMD: VteFeatureFlags = 4;
91pub const VTE_FEATURE_FLAG_SIXEL: VteFeatureFlags = 8;
92
93pub type VtePtyFlags = c_uint;
94pub const VTE_PTY_NO_LASTLOG: VtePtyFlags = 1;
95pub const VTE_PTY_NO_UTMP: VtePtyFlags = 2;
96pub const VTE_PTY_NO_WTMP: VtePtyFlags = 4;
97pub const VTE_PTY_NO_HELPER: VtePtyFlags = 8;
98pub const VTE_PTY_NO_FALLBACK: VtePtyFlags = 16;
99pub const VTE_PTY_NO_SESSION: VtePtyFlags = 32;
100pub const VTE_PTY_NO_CTTY: VtePtyFlags = 64;
101pub const VTE_PTY_DEFAULT: VtePtyFlags = 0;
102
103// Callbacks
104pub type VteSelectionFunc =
105    Option<unsafe extern "C" fn(*mut VteTerminal, c_long, c_long, gpointer) -> gboolean>;
106pub type VteTerminalSpawnAsyncCallback =
107    Option<unsafe extern "C" fn(*mut VteTerminal, glib::GPid, *mut glib::GError, gpointer)>;
108
109// Records
110#[repr(C)]
111pub struct VteCharAttributes {
112    pub row: c_long,
113    pub column: c_long,
114    pub fore: pango::PangoColor,
115    pub back: pango::PangoColor,
116    pub underline: c_uint,
117    _truncated_record_marker: c_void,
118    // field strikethrough has incomplete type
119}
120
121impl ::std::fmt::Debug for VteCharAttributes {
122    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
123        f.debug_struct(&format!("VteCharAttributes @ {self:p}"))
124            .finish()
125    }
126}
127
128#[repr(C)]
129pub struct _VteEventContext {
130    _data: [u8; 0],
131    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
132}
133
134pub type VteEventContext = _VteEventContext;
135
136#[repr(C)]
137pub struct _VtePtyClass {
138    _data: [u8; 0],
139    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
140}
141
142pub type VtePtyClass = _VtePtyClass;
143
144#[repr(C)]
145pub struct VteRegex {
146    _data: [u8; 0],
147    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
148}
149
150impl ::std::fmt::Debug for VteRegex {
151    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
152        f.debug_struct(&format!("VteRegex @ {self:p}")).finish()
153    }
154}
155
156#[derive(Copy, Clone)]
157#[repr(C)]
158pub struct VteTerminalClass {
159    pub parent_class: gtk::GtkWidgetClass,
160    pub eof: Option<unsafe extern "C" fn(*mut VteTerminal)>,
161    pub child_exited: Option<unsafe extern "C" fn(*mut VteTerminal, c_int)>,
162    pub encoding_changed: Option<unsafe extern "C" fn(*mut VteTerminal)>,
163    pub char_size_changed: Option<unsafe extern "C" fn(*mut VteTerminal, c_uint, c_uint)>,
164    pub window_title_changed: Option<unsafe extern "C" fn(*mut VteTerminal)>,
165    pub icon_title_changed: Option<unsafe extern "C" fn(*mut VteTerminal)>,
166    pub selection_changed: Option<unsafe extern "C" fn(*mut VteTerminal)>,
167    pub contents_changed: Option<unsafe extern "C" fn(*mut VteTerminal)>,
168    pub cursor_moved: Option<unsafe extern "C" fn(*mut VteTerminal)>,
169    pub commit: Option<unsafe extern "C" fn(*mut VteTerminal, *const c_char, c_uint)>,
170    pub deiconify_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
171    pub iconify_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
172    pub raise_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
173    pub lower_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
174    pub refresh_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
175    pub restore_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
176    pub maximize_window: Option<unsafe extern "C" fn(*mut VteTerminal)>,
177    pub resize_window: Option<unsafe extern "C" fn(*mut VteTerminal, c_uint, c_uint)>,
178    pub move_window: Option<unsafe extern "C" fn(*mut VteTerminal, c_uint, c_uint)>,
179    pub increase_font_size: Option<unsafe extern "C" fn(*mut VteTerminal)>,
180    pub decrease_font_size: Option<unsafe extern "C" fn(*mut VteTerminal)>,
181    pub copy_clipboard: Option<unsafe extern "C" fn(*mut VteTerminal)>,
182    pub paste_clipboard: Option<unsafe extern "C" fn(*mut VteTerminal)>,
183    pub bell: Option<unsafe extern "C" fn(*mut VteTerminal)>,
184    pub setup_context_menu: Option<unsafe extern "C" fn(*mut VteTerminal, *const VteEventContext)>,
185    pub _padding: [gpointer; 15],
186    pub priv_: *mut VteTerminalClassPrivate,
187}
188
189impl ::std::fmt::Debug for VteTerminalClass {
190    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
191        f.debug_struct(&format!("VteTerminalClass @ {self:p}"))
192            .field("parent_class", &self.parent_class)
193            .field("eof", &self.eof)
194            .field("child_exited", &self.child_exited)
195            .field("encoding_changed", &self.encoding_changed)
196            .field("char_size_changed", &self.char_size_changed)
197            .field("window_title_changed", &self.window_title_changed)
198            .field("icon_title_changed", &self.icon_title_changed)
199            .field("selection_changed", &self.selection_changed)
200            .field("contents_changed", &self.contents_changed)
201            .field("cursor_moved", &self.cursor_moved)
202            .field("commit", &self.commit)
203            .field("deiconify_window", &self.deiconify_window)
204            .field("iconify_window", &self.iconify_window)
205            .field("raise_window", &self.raise_window)
206            .field("lower_window", &self.lower_window)
207            .field("refresh_window", &self.refresh_window)
208            .field("restore_window", &self.restore_window)
209            .field("maximize_window", &self.maximize_window)
210            .field("resize_window", &self.resize_window)
211            .field("move_window", &self.move_window)
212            .field("increase_font_size", &self.increase_font_size)
213            .field("decrease_font_size", &self.decrease_font_size)
214            .field("copy_clipboard", &self.copy_clipboard)
215            .field("paste_clipboard", &self.paste_clipboard)
216            .field("bell", &self.bell)
217            .field("setup_context_menu", &self.setup_context_menu)
218            .field("_padding", &self._padding)
219            .field("priv_", &self.priv_)
220            .finish()
221    }
222}
223
224#[repr(C)]
225pub struct _VteTerminalClassPrivate {
226    _data: [u8; 0],
227    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
228}
229
230pub type VteTerminalClassPrivate = _VteTerminalClassPrivate;
231
232// Classes
233#[repr(C)]
234pub struct VtePty {
235    _data: [u8; 0],
236    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
237}
238
239impl ::std::fmt::Debug for VtePty {
240    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
241        f.debug_struct(&format!("VtePty @ {self:p}")).finish()
242    }
243}
244
245#[derive(Copy, Clone)]
246#[repr(C)]
247pub struct VteTerminal {
248    pub widget: gtk::GtkWidget,
249}
250
251impl ::std::fmt::Debug for VteTerminal {
252    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
253        f.debug_struct(&format!("VteTerminal @ {self:p}"))
254            .field("widget", &self.widget)
255            .finish()
256    }
257}
258
259#[link(name = "vte-2.91-gtk4")]
260extern "C" {
261
262    //=========================================================================
263    // VteAlign
264    //=========================================================================
265    #[cfg(feature = "v0_76")]
266    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
267    pub fn vte_align_get_type() -> GType;
268
269    //=========================================================================
270    // VteCursorBlinkMode
271    //=========================================================================
272    pub fn vte_cursor_blink_mode_get_type() -> GType;
273
274    //=========================================================================
275    // VteCursorShape
276    //=========================================================================
277    pub fn vte_cursor_shape_get_type() -> GType;
278
279    //=========================================================================
280    // VteEraseBinding
281    //=========================================================================
282    pub fn vte_erase_binding_get_type() -> GType;
283
284    //=========================================================================
285    // VteFormat
286    //=========================================================================
287    pub fn vte_format_get_type() -> GType;
288
289    //=========================================================================
290    // VtePtyError
291    //=========================================================================
292    pub fn vte_pty_error_get_type() -> GType;
293    pub fn vte_pty_error_quark() -> glib::GQuark;
294
295    //=========================================================================
296    // VteRegexError
297    //=========================================================================
298    pub fn vte_regex_error_get_type() -> GType;
299    pub fn vte_regex_error_quark() -> glib::GQuark;
300
301    //=========================================================================
302    // VteTextBlinkMode
303    //=========================================================================
304    pub fn vte_text_blink_mode_get_type() -> GType;
305
306    //=========================================================================
307    // VteWriteFlags
308    //=========================================================================
309    pub fn vte_write_flags_get_type() -> GType;
310
311    //=========================================================================
312    // VtePtyFlags
313    //=========================================================================
314    pub fn vte_pty_flags_get_type() -> GType;
315
316    //=========================================================================
317    // VteEventContext
318    //=========================================================================
319    #[cfg(feature = "v0_76")]
320    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
321    pub fn vte_event_context_get_coordinates(
322        context: *const VteEventContext,
323        x: *mut c_double,
324        y: *mut c_double,
325    ) -> gboolean;
326
327    //=========================================================================
328    // VteRegex
329    //=========================================================================
330    pub fn vte_regex_get_type() -> GType;
331    pub fn vte_regex_new_for_match(
332        pattern: *const c_char,
333        pattern_length: ssize_t,
334        flags: u32,
335        error: *mut *mut glib::GError,
336    ) -> *mut VteRegex;
337    #[cfg(feature = "v0_76")]
338    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
339    pub fn vte_regex_new_for_match_full(
340        pattern: *const c_char,
341        pattern_length: ssize_t,
342        flags: u32,
343        extra_flags: u32,
344        error_offset: *mut size_t,
345        error: *mut *mut glib::GError,
346    ) -> *mut VteRegex;
347    pub fn vte_regex_new_for_search(
348        pattern: *const c_char,
349        pattern_length: ssize_t,
350        flags: u32,
351        error: *mut *mut glib::GError,
352    ) -> *mut VteRegex;
353    #[cfg(feature = "v0_76")]
354    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
355    pub fn vte_regex_new_for_search_full(
356        pattern: *const c_char,
357        pattern_length: ssize_t,
358        flags: u32,
359        extra_flags: u32,
360        error_offset: *mut size_t,
361        error: *mut *mut glib::GError,
362    ) -> *mut VteRegex;
363    pub fn vte_regex_jit(
364        regex: *mut VteRegex,
365        flags: u32,
366        error: *mut *mut glib::GError,
367    ) -> gboolean;
368    pub fn vte_regex_ref(regex: *mut VteRegex) -> *mut VteRegex;
369    pub fn vte_regex_substitute(
370        regex: *mut VteRegex,
371        subject: *const c_char,
372        replacement: *const c_char,
373        flags: u32,
374        error: *mut *mut glib::GError,
375    ) -> *mut c_char;
376    pub fn vte_regex_unref(regex: *mut VteRegex) -> *mut VteRegex;
377
378    //=========================================================================
379    // VtePty
380    //=========================================================================
381    pub fn vte_pty_get_type() -> GType;
382    pub fn vte_pty_new_foreign_sync(
383        fd: c_int,
384        cancellable: *mut gio::GCancellable,
385        error: *mut *mut glib::GError,
386    ) -> *mut VtePty;
387    pub fn vte_pty_new_sync(
388        flags: VtePtyFlags,
389        cancellable: *mut gio::GCancellable,
390        error: *mut *mut glib::GError,
391    ) -> *mut VtePty;
392    pub fn vte_pty_child_setup(pty: *mut VtePty);
393    pub fn vte_pty_close(pty: *mut VtePty);
394    pub fn vte_pty_get_fd(pty: *mut VtePty) -> c_int;
395    pub fn vte_pty_get_size(
396        pty: *mut VtePty,
397        rows: *mut c_int,
398        columns: *mut c_int,
399        error: *mut *mut glib::GError,
400    ) -> gboolean;
401    pub fn vte_pty_set_size(
402        pty: *mut VtePty,
403        rows: c_int,
404        columns: c_int,
405        error: *mut *mut glib::GError,
406    ) -> gboolean;
407    pub fn vte_pty_set_utf8(
408        pty: *mut VtePty,
409        utf8: gboolean,
410        error: *mut *mut glib::GError,
411    ) -> gboolean;
412    pub fn vte_pty_spawn_async(
413        pty: *mut VtePty,
414        working_directory: *const c_char,
415        argv: *mut *mut c_char,
416        envv: *mut *mut c_char,
417        spawn_flags: glib::GSpawnFlags,
418        child_setup: glib::GSpawnChildSetupFunc,
419        child_setup_data: gpointer,
420        child_setup_data_destroy: glib::GDestroyNotify,
421        timeout: c_int,
422        cancellable: *mut gio::GCancellable,
423        callback: gio::GAsyncReadyCallback,
424        user_data: gpointer,
425    );
426    pub fn vte_pty_spawn_finish(
427        pty: *mut VtePty,
428        result: *mut gio::GAsyncResult,
429        child_pid: *mut glib::GPid,
430        error: *mut *mut glib::GError,
431    ) -> gboolean;
432    pub fn vte_pty_spawn_with_fds_async(
433        pty: *mut VtePty,
434        working_directory: *const c_char,
435        argv: *const *const c_char,
436        envv: *const *const c_char,
437        fds: *const c_int,
438        n_fds: c_int,
439        map_fds: *const c_int,
440        n_map_fds: c_int,
441        spawn_flags: glib::GSpawnFlags,
442        child_setup: glib::GSpawnChildSetupFunc,
443        child_setup_data: gpointer,
444        child_setup_data_destroy: glib::GDestroyNotify,
445        timeout: c_int,
446        cancellable: *mut gio::GCancellable,
447        callback: gio::GAsyncReadyCallback,
448        user_data: gpointer,
449    );
450
451    //=========================================================================
452    // VteTerminal
453    //=========================================================================
454    pub fn vte_terminal_get_type() -> GType;
455    pub fn vte_terminal_new() -> *mut VteTerminal;
456    #[cfg(feature = "v0_70")]
457    #[cfg_attr(docsrs, doc(cfg(feature = "v0_70")))]
458    pub fn vte_terminal_check_hyperlink_at(
459        terminal: *mut VteTerminal,
460        x: c_double,
461        y: c_double,
462    ) -> *mut c_char;
463    #[cfg(feature = "v0_70")]
464    #[cfg_attr(docsrs, doc(cfg(feature = "v0_70")))]
465    pub fn vte_terminal_check_match_at(
466        terminal: *mut VteTerminal,
467        x: c_double,
468        y: c_double,
469        tag: *mut c_int,
470    ) -> *mut c_char;
471    #[cfg(feature = "v0_70")]
472    #[cfg_attr(docsrs, doc(cfg(feature = "v0_70")))]
473    pub fn vte_terminal_check_regex_array_at(
474        terminal: *mut VteTerminal,
475        x: c_double,
476        y: c_double,
477        regexes: *mut *mut VteRegex,
478        n_regexes: size_t,
479        match_flags: u32,
480        n_matches: *mut size_t,
481    ) -> *mut *mut c_char;
482    #[cfg(feature = "v0_70")]
483    #[cfg_attr(docsrs, doc(cfg(feature = "v0_70")))]
484    pub fn vte_terminal_check_regex_simple_at(
485        terminal: *mut VteTerminal,
486        x: c_double,
487        y: c_double,
488        regexes: *mut *mut VteRegex,
489        n_regexes: size_t,
490        match_flags: u32,
491        matches: *mut *mut c_char,
492    ) -> gboolean;
493    pub fn vte_terminal_copy_clipboard(terminal: *mut VteTerminal);
494    pub fn vte_terminal_copy_clipboard_format(terminal: *mut VteTerminal, format: VteFormat);
495    pub fn vte_terminal_copy_primary(terminal: *mut VteTerminal);
496    pub fn vte_terminal_feed(terminal: *mut VteTerminal, data: *const u8, length: ssize_t);
497    pub fn vte_terminal_feed_child(terminal: *mut VteTerminal, text: *const u8, length: ssize_t);
498    pub fn vte_terminal_feed_child_binary(
499        terminal: *mut VteTerminal,
500        data: *const u8,
501        length: size_t,
502    );
503    pub fn vte_terminal_get_allow_bold(terminal: *mut VteTerminal) -> gboolean;
504    pub fn vte_terminal_get_allow_hyperlink(terminal: *mut VteTerminal) -> gboolean;
505    pub fn vte_terminal_get_audible_bell(terminal: *mut VteTerminal) -> gboolean;
506    pub fn vte_terminal_get_bold_is_bright(terminal: *mut VteTerminal) -> gboolean;
507    pub fn vte_terminal_get_cell_height_scale(terminal: *mut VteTerminal) -> c_double;
508    pub fn vte_terminal_get_cell_width_scale(terminal: *mut VteTerminal) -> c_double;
509    pub fn vte_terminal_get_char_height(terminal: *mut VteTerminal) -> c_long;
510    pub fn vte_terminal_get_char_width(terminal: *mut VteTerminal) -> c_long;
511    pub fn vte_terminal_get_cjk_ambiguous_width(terminal: *mut VteTerminal) -> c_int;
512    pub fn vte_terminal_get_color_background_for_draw(
513        terminal: *mut VteTerminal,
514        color: *mut gdk::GdkRGBA,
515    );
516    pub fn vte_terminal_get_column_count(terminal: *mut VteTerminal) -> c_long;
517    #[cfg(feature = "v0_76")]
518    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
519    pub fn vte_terminal_get_context_menu(terminal: *mut VteTerminal) -> *mut gtk::GtkWidget;
520    #[cfg(feature = "v0_76")]
521    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
522    pub fn vte_terminal_get_context_menu_model(terminal: *mut VteTerminal) -> *mut gio::GMenuModel;
523    pub fn vte_terminal_get_current_container_name(terminal: *mut VteTerminal) -> *const c_char;
524    pub fn vte_terminal_get_current_container_runtime(terminal: *mut VteTerminal) -> *const c_char;
525    pub fn vte_terminal_get_current_directory_uri(terminal: *mut VteTerminal) -> *const c_char;
526    pub fn vte_terminal_get_current_file_uri(terminal: *mut VteTerminal) -> *const c_char;
527    pub fn vte_terminal_get_cursor_blink_mode(terminal: *mut VteTerminal) -> VteCursorBlinkMode;
528    pub fn vte_terminal_get_cursor_position(
529        terminal: *mut VteTerminal,
530        column: *mut c_long,
531        row: *mut c_long,
532    );
533    pub fn vte_terminal_get_cursor_shape(terminal: *mut VteTerminal) -> VteCursorShape;
534    #[cfg(feature = "v0_78")]
535    #[cfg_attr(docsrs, doc(cfg(feature = "v0_78")))]
536    pub fn vte_terminal_get_enable_a11y(terminal: *mut VteTerminal) -> gboolean;
537    pub fn vte_terminal_get_enable_bidi(terminal: *mut VteTerminal) -> gboolean;
538    pub fn vte_terminal_get_enable_fallback_scrolling(terminal: *mut VteTerminal) -> gboolean;
539    pub fn vte_terminal_get_enable_shaping(terminal: *mut VteTerminal) -> gboolean;
540    pub fn vte_terminal_get_enable_sixel(terminal: *mut VteTerminal) -> gboolean;
541    pub fn vte_terminal_get_encoding(terminal: *mut VteTerminal) -> *const c_char;
542    pub fn vte_terminal_get_font(terminal: *mut VteTerminal) -> *const pango::PangoFontDescription;
543    #[cfg(feature = "v0_74")]
544    #[cfg_attr(docsrs, doc(cfg(feature = "v0_74")))]
545    pub fn vte_terminal_get_font_options(
546        terminal: *mut VteTerminal,
547    ) -> *const cairo::cairo_font_options_t;
548    pub fn vte_terminal_get_font_scale(terminal: *mut VteTerminal) -> c_double;
549    pub fn vte_terminal_get_has_selection(terminal: *mut VteTerminal) -> gboolean;
550    pub fn vte_terminal_get_icon_title(terminal: *mut VteTerminal) -> *const c_char;
551    pub fn vte_terminal_get_input_enabled(terminal: *mut VteTerminal) -> gboolean;
552    pub fn vte_terminal_get_mouse_autohide(terminal: *mut VteTerminal) -> gboolean;
553    pub fn vte_terminal_get_pty(terminal: *mut VteTerminal) -> *mut VtePty;
554    pub fn vte_terminal_get_rewrap_on_resize(terminal: *mut VteTerminal) -> gboolean;
555    pub fn vte_terminal_get_row_count(terminal: *mut VteTerminal) -> c_long;
556    #[cfg(feature = "v0_76")]
557    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
558    pub fn vte_terminal_get_scroll_on_insert(terminal: *mut VteTerminal) -> gboolean;
559    pub fn vte_terminal_get_scroll_on_keystroke(terminal: *mut VteTerminal) -> gboolean;
560    pub fn vte_terminal_get_scroll_on_output(terminal: *mut VteTerminal) -> gboolean;
561    pub fn vte_terminal_get_scroll_unit_is_pixels(terminal: *mut VteTerminal) -> gboolean;
562    pub fn vte_terminal_get_scrollback_lines(terminal: *mut VteTerminal) -> c_long;
563    pub fn vte_terminal_get_text(
564        terminal: *mut VteTerminal,
565        is_selected: VteSelectionFunc,
566        user_data: gpointer,
567        attributes: *mut glib::GArray,
568    ) -> *mut c_char;
569    pub fn vte_terminal_get_text_blink_mode(terminal: *mut VteTerminal) -> VteTextBlinkMode;
570    #[cfg(feature = "v0_76")]
571    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
572    pub fn vte_terminal_get_text_format(
573        terminal: *mut VteTerminal,
574        format: VteFormat,
575    ) -> *mut c_char;
576    pub fn vte_terminal_get_text_include_trailing_spaces(
577        terminal: *mut VteTerminal,
578        is_selected: VteSelectionFunc,
579        user_data: gpointer,
580        attributes: *mut glib::GArray,
581    ) -> *mut c_char;
582    pub fn vte_terminal_get_text_range(
583        terminal: *mut VteTerminal,
584        start_row: c_long,
585        start_col: c_long,
586        end_row: c_long,
587        end_col: c_long,
588        is_selected: VteSelectionFunc,
589        user_data: gpointer,
590        attributes: *mut glib::GArray,
591    ) -> *mut c_char;
592    #[cfg(feature = "v0_72")]
593    #[cfg_attr(docsrs, doc(cfg(feature = "v0_72")))]
594    pub fn vte_terminal_get_text_range_format(
595        terminal: *mut VteTerminal,
596        format: VteFormat,
597        start_row: c_long,
598        start_col: c_long,
599        end_row: c_long,
600        end_col: c_long,
601        length: *mut size_t,
602    ) -> *mut c_char;
603    #[cfg(feature = "v0_70")]
604    #[cfg_attr(docsrs, doc(cfg(feature = "v0_70")))]
605    pub fn vte_terminal_get_text_selected(
606        terminal: *mut VteTerminal,
607        format: VteFormat,
608    ) -> *mut c_char;
609    #[cfg(feature = "v0_72")]
610    #[cfg_attr(docsrs, doc(cfg(feature = "v0_72")))]
611    pub fn vte_terminal_get_text_selected_full(
612        terminal: *mut VteTerminal,
613        format: VteFormat,
614        length: *mut size_t,
615    ) -> *mut c_char;
616    pub fn vte_terminal_get_window_title(terminal: *mut VteTerminal) -> *const c_char;
617    pub fn vte_terminal_get_word_char_exceptions(terminal: *mut VteTerminal) -> *const c_char;
618    #[cfg(feature = "v0_76")]
619    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
620    pub fn vte_terminal_get_xalign(terminal: *mut VteTerminal) -> VteAlign;
621    #[cfg(feature = "v0_76")]
622    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
623    pub fn vte_terminal_get_xfill(terminal: *mut VteTerminal) -> gboolean;
624    #[cfg(feature = "v0_76")]
625    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
626    pub fn vte_terminal_get_yalign(terminal: *mut VteTerminal) -> VteAlign;
627    #[cfg(feature = "v0_76")]
628    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
629    pub fn vte_terminal_get_yfill(terminal: *mut VteTerminal) -> gboolean;
630    pub fn vte_terminal_match_add_regex(
631        terminal: *mut VteTerminal,
632        regex: *mut VteRegex,
633        flags: u32,
634    ) -> c_int;
635    pub fn vte_terminal_match_check(
636        terminal: *mut VteTerminal,
637        column: c_long,
638        row: c_long,
639        tag: *mut c_int,
640    ) -> *mut c_char;
641    pub fn vte_terminal_match_remove(terminal: *mut VteTerminal, tag: c_int);
642    pub fn vte_terminal_match_remove_all(terminal: *mut VteTerminal);
643    pub fn vte_terminal_match_set_cursor(
644        terminal: *mut VteTerminal,
645        tag: c_int,
646        cursor: *mut gdk::GdkCursor,
647    );
648    pub fn vte_terminal_match_set_cursor_name(
649        terminal: *mut VteTerminal,
650        tag: c_int,
651        cursor_name: *const c_char,
652    );
653    pub fn vte_terminal_paste_clipboard(terminal: *mut VteTerminal);
654    pub fn vte_terminal_paste_primary(terminal: *mut VteTerminal);
655    pub fn vte_terminal_paste_text(terminal: *mut VteTerminal, text: *const c_char);
656    pub fn vte_terminal_pty_new_sync(
657        terminal: *mut VteTerminal,
658        flags: VtePtyFlags,
659        cancellable: *mut gio::GCancellable,
660        error: *mut *mut glib::GError,
661    ) -> *mut VtePty;
662    pub fn vte_terminal_reset(
663        terminal: *mut VteTerminal,
664        clear_tabstops: gboolean,
665        clear_history: gboolean,
666    );
667    pub fn vte_terminal_search_find_next(terminal: *mut VteTerminal) -> gboolean;
668    pub fn vte_terminal_search_find_previous(terminal: *mut VteTerminal) -> gboolean;
669    pub fn vte_terminal_search_get_regex(terminal: *mut VteTerminal) -> *mut VteRegex;
670    pub fn vte_terminal_search_get_wrap_around(terminal: *mut VteTerminal) -> gboolean;
671    pub fn vte_terminal_search_set_regex(
672        terminal: *mut VteTerminal,
673        regex: *mut VteRegex,
674        flags: u32,
675    );
676    pub fn vte_terminal_search_set_wrap_around(terminal: *mut VteTerminal, wrap_around: gboolean);
677    pub fn vte_terminal_select_all(terminal: *mut VteTerminal);
678    pub fn vte_terminal_set_allow_bold(terminal: *mut VteTerminal, allow_bold: gboolean);
679    pub fn vte_terminal_set_allow_hyperlink(terminal: *mut VteTerminal, allow_hyperlink: gboolean);
680    pub fn vte_terminal_set_audible_bell(terminal: *mut VteTerminal, is_audible: gboolean);
681    pub fn vte_terminal_set_backspace_binding(terminal: *mut VteTerminal, binding: VteEraseBinding);
682    pub fn vte_terminal_set_bold_is_bright(terminal: *mut VteTerminal, bold_is_bright: gboolean);
683    pub fn vte_terminal_set_cell_height_scale(terminal: *mut VteTerminal, scale: c_double);
684    pub fn vte_terminal_set_cell_width_scale(terminal: *mut VteTerminal, scale: c_double);
685    pub fn vte_terminal_set_cjk_ambiguous_width(terminal: *mut VteTerminal, width: c_int);
686    pub fn vte_terminal_set_clear_background(terminal: *mut VteTerminal, setting: gboolean);
687    pub fn vte_terminal_set_color_background(
688        terminal: *mut VteTerminal,
689        background: *const gdk::GdkRGBA,
690    );
691    pub fn vte_terminal_set_color_bold(terminal: *mut VteTerminal, bold: *const gdk::GdkRGBA);
692    pub fn vte_terminal_set_color_cursor(
693        terminal: *mut VteTerminal,
694        cursor_background: *const gdk::GdkRGBA,
695    );
696    pub fn vte_terminal_set_color_cursor_foreground(
697        terminal: *mut VteTerminal,
698        cursor_foreground: *const gdk::GdkRGBA,
699    );
700    pub fn vte_terminal_set_color_foreground(
701        terminal: *mut VteTerminal,
702        foreground: *const gdk::GdkRGBA,
703    );
704    pub fn vte_terminal_set_color_highlight(
705        terminal: *mut VteTerminal,
706        highlight_background: *const gdk::GdkRGBA,
707    );
708    pub fn vte_terminal_set_color_highlight_foreground(
709        terminal: *mut VteTerminal,
710        highlight_foreground: *const gdk::GdkRGBA,
711    );
712    pub fn vte_terminal_set_colors(
713        terminal: *mut VteTerminal,
714        foreground: *const gdk::GdkRGBA,
715        background: *const gdk::GdkRGBA,
716        palette: *const gdk::GdkRGBA,
717        palette_size: size_t,
718    );
719    #[cfg(feature = "v0_76")]
720    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
721    pub fn vte_terminal_set_context_menu(terminal: *mut VteTerminal, menu: *mut gtk::GtkWidget);
722    #[cfg(feature = "v0_76")]
723    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
724    pub fn vte_terminal_set_context_menu_model(
725        terminal: *mut VteTerminal,
726        model: *mut gio::GMenuModel,
727    );
728    pub fn vte_terminal_set_cursor_blink_mode(terminal: *mut VteTerminal, mode: VteCursorBlinkMode);
729    pub fn vte_terminal_set_cursor_shape(terminal: *mut VteTerminal, shape: VteCursorShape);
730    pub fn vte_terminal_set_default_colors(terminal: *mut VteTerminal);
731    pub fn vte_terminal_set_delete_binding(terminal: *mut VteTerminal, binding: VteEraseBinding);
732    #[cfg(feature = "v0_78")]
733    #[cfg_attr(docsrs, doc(cfg(feature = "v0_78")))]
734    pub fn vte_terminal_set_enable_a11y(terminal: *mut VteTerminal, enable_a11y: gboolean);
735    pub fn vte_terminal_set_enable_bidi(terminal: *mut VteTerminal, enable_bidi: gboolean);
736    pub fn vte_terminal_set_enable_fallback_scrolling(terminal: *mut VteTerminal, enable: gboolean);
737    pub fn vte_terminal_set_enable_shaping(terminal: *mut VteTerminal, enable_shaping: gboolean);
738    pub fn vte_terminal_set_enable_sixel(terminal: *mut VteTerminal, enabled: gboolean);
739    pub fn vte_terminal_set_encoding(
740        terminal: *mut VteTerminal,
741        codeset: *const c_char,
742        error: *mut *mut glib::GError,
743    ) -> gboolean;
744    pub fn vte_terminal_set_font(
745        terminal: *mut VteTerminal,
746        font_desc: *const pango::PangoFontDescription,
747    );
748    #[cfg(feature = "v0_74")]
749    #[cfg_attr(docsrs, doc(cfg(feature = "v0_74")))]
750    pub fn vte_terminal_set_font_options(
751        terminal: *mut VteTerminal,
752        font_options: *const cairo::cairo_font_options_t,
753    );
754    pub fn vte_terminal_set_font_scale(terminal: *mut VteTerminal, scale: c_double);
755    pub fn vte_terminal_set_input_enabled(terminal: *mut VteTerminal, enabled: gboolean);
756    pub fn vte_terminal_set_mouse_autohide(terminal: *mut VteTerminal, setting: gboolean);
757    pub fn vte_terminal_set_pty(terminal: *mut VteTerminal, pty: *mut VtePty);
758    pub fn vte_terminal_set_rewrap_on_resize(terminal: *mut VteTerminal, rewrap: gboolean);
759    #[cfg(feature = "v0_76")]
760    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
761    pub fn vte_terminal_set_scroll_on_insert(terminal: *mut VteTerminal, scroll: gboolean);
762    pub fn vte_terminal_set_scroll_on_keystroke(terminal: *mut VteTerminal, scroll: gboolean);
763    pub fn vte_terminal_set_scroll_on_output(terminal: *mut VteTerminal, scroll: gboolean);
764    pub fn vte_terminal_set_scroll_unit_is_pixels(terminal: *mut VteTerminal, enable: gboolean);
765    pub fn vte_terminal_set_scrollback_lines(terminal: *mut VteTerminal, lines: c_long);
766    pub fn vte_terminal_set_size(terminal: *mut VteTerminal, columns: c_long, rows: c_long);
767    pub fn vte_terminal_set_text_blink_mode(
768        terminal: *mut VteTerminal,
769        text_blink_mode: VteTextBlinkMode,
770    );
771    pub fn vte_terminal_set_word_char_exceptions(
772        terminal: *mut VteTerminal,
773        exceptions: *const c_char,
774    );
775    #[cfg(feature = "v0_76")]
776    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
777    pub fn vte_terminal_set_xalign(terminal: *mut VteTerminal, align: VteAlign);
778    #[cfg(feature = "v0_76")]
779    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
780    pub fn vte_terminal_set_xfill(terminal: *mut VteTerminal, fill: gboolean);
781    #[cfg(feature = "v0_76")]
782    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
783    pub fn vte_terminal_set_yalign(terminal: *mut VteTerminal, align: VteAlign);
784    #[cfg(feature = "v0_76")]
785    #[cfg_attr(docsrs, doc(cfg(feature = "v0_76")))]
786    pub fn vte_terminal_set_yfill(terminal: *mut VteTerminal, fill: gboolean);
787    pub fn vte_terminal_spawn_async(
788        terminal: *mut VteTerminal,
789        pty_flags: VtePtyFlags,
790        working_directory: *const c_char,
791        argv: *mut *mut c_char,
792        envv: *mut *mut c_char,
793        spawn_flags: glib::GSpawnFlags,
794        child_setup: glib::GSpawnChildSetupFunc,
795        child_setup_data: gpointer,
796        child_setup_data_destroy: glib::GDestroyNotify,
797        timeout: c_int,
798        cancellable: *mut gio::GCancellable,
799        callback: VteTerminalSpawnAsyncCallback,
800        user_data: gpointer,
801    );
802    pub fn vte_terminal_spawn_sync(
803        terminal: *mut VteTerminal,
804        pty_flags: VtePtyFlags,
805        working_directory: *const c_char,
806        argv: *mut *mut c_char,
807        envv: *mut *mut c_char,
808        spawn_flags: glib::GSpawnFlags,
809        child_setup: glib::GSpawnChildSetupFunc,
810        child_setup_data: gpointer,
811        child_pid: *mut glib::GPid,
812        cancellable: *mut gio::GCancellable,
813        error: *mut *mut glib::GError,
814    ) -> gboolean;
815    pub fn vte_terminal_spawn_with_fds_async(
816        terminal: *mut VteTerminal,
817        pty_flags: VtePtyFlags,
818        working_directory: *const c_char,
819        argv: *const *const c_char,
820        envv: *const *const c_char,
821        fds: *const c_int,
822        n_fds: c_int,
823        map_fds: *const c_int,
824        n_map_fds: c_int,
825        spawn_flags: glib::GSpawnFlags,
826        child_setup: glib::GSpawnChildSetupFunc,
827        child_setup_data: gpointer,
828        child_setup_data_destroy: glib::GDestroyNotify,
829        timeout: c_int,
830        cancellable: *mut gio::GCancellable,
831        callback: VteTerminalSpawnAsyncCallback,
832        user_data: gpointer,
833    );
834    pub fn vte_terminal_unselect_all(terminal: *mut VteTerminal);
835    pub fn vte_terminal_watch_child(terminal: *mut VteTerminal, child_pid: glib::GPid);
836    pub fn vte_terminal_write_contents_sync(
837        terminal: *mut VteTerminal,
838        stream: *mut gio::GOutputStream,
839        flags: VteWriteFlags,
840        cancellable: *mut gio::GCancellable,
841        error: *mut *mut glib::GError,
842    ) -> gboolean;
843
844    //=========================================================================
845    // Other functions
846    //=========================================================================
847    pub fn vte_event_context_get_type() -> GType;
848    pub fn vte_get_encoding_supported(encoding: *const c_char) -> gboolean;
849    pub fn vte_get_encodings(include_aliases: gboolean) -> *mut *mut c_char;
850    pub fn vte_get_feature_flags() -> VteFeatureFlags;
851    pub fn vte_get_features() -> *const c_char;
852    pub fn vte_get_major_version() -> c_uint;
853    pub fn vte_get_micro_version() -> c_uint;
854    pub fn vte_get_minor_version() -> c_uint;
855    pub fn vte_get_user_shell() -> *mut c_char;
856    pub fn vte_set_test_flags(flags: u64);
857
858}