diff options
-rw-r--r-- | meson.build | 12 | ||||
-rw-r--r-- | po/meson.build | 6 | ||||
-rw-r--r-- | src/meson.build | 16 | ||||
-rw-r--r-- | src/tmate/session.vala | 111 | ||||
-rw-r--r-- | src/window.vala | 20 | ||||
-rw-r--r-- | vapi/vte-0.62/vte-2.91.vapi | 429 |
6 files changed, 542 insertions, 52 deletions
diff --git a/meson.build b/meson.build index faa901e..09fc662 100644 --- a/meson.build +++ b/meson.build @@ -32,6 +32,7 @@ conf = configuration_data () srcs = [] i18n_data = [] +vapi_overrides = [] conf.set_quoted ('GETTEXT_PACKAGE', application_name) conf.set_quoted ('DATADIR', get_option ('prefix') / get_option ('datadir')) @@ -53,3 +54,14 @@ config_dep = valac.find_library ('config', dirs: meson.current_source_dir() / subdir('data') subdir('src') subdir('po') + +foreach override : vapi_overrides + add_project_arguments('--vapidir=@0@'.format(meson.current_source_dir() / 'vapi' / override), language: 'vala') +endforeach + +executable(application_name, srcs + resources, + include_directories: config_h_dir, + vala_args: '--target-glib=2.50', dependencies: deps, + install: true, + c_args: ['-include', 'config.h'], +) diff --git a/po/meson.build b/po/meson.build index 05bb600..87704d4 100644 --- a/po/meson.build +++ b/po/meson.build @@ -12,10 +12,8 @@ potfiles = configure_file( }), ) -update_potfile = run_target('@0@-potfiles'.format(application_name), command: files('scripts/potfiles.py')) -gettext_deps = i18n.gettext(application_name, preset: 'glib', args: [ +run_target('@0@-potfiles'.format(application_name), command: files('scripts/potfiles.py')) +i18n.gettext(application_name, preset: 'glib', args: [ '--copyright-holder=JaduPc Ltd.', '--msgid-bugs-address=bugs+translations@jadupc.com' ],) - -alias_target('update-translations', update_potfile, gettext_deps[2]) diff --git a/src/meson.build b/src/meson.build index 930b210..9cac7f5 100644 --- a/src/meson.build +++ b/src/meson.build @@ -8,17 +8,15 @@ srcs += files( subdir('tmate') +vte_dep = dependency('vte-2.91') + +if vte_dep.version().version_compare('<0.63, >=0.62') + vapi_overrides += 'vte-0.62' +endif + deps = [ dependency('gtk+-3.0'), - dependency('vte-2.91'), - #meson.get_compiler('vala').find_library('posix'), + vte_dep, config_h, config_dep ] - -executable(application_name, srcs + resources, - include_directories: config_h_dir, - vala_args: '--target-glib=2.50', dependencies: deps, - install: true, - c_args: ['-include', 'config.h'], -) diff --git a/src/tmate/session.vala b/src/tmate/session.vala index 5571654..356aa66 100644 --- a/src/tmate/session.vala +++ b/src/tmate/session.vala @@ -2,6 +2,8 @@ namespace Tmate { public interface SessionInterface : Object { + public abstract signal void address (SessionType session, string address); + public abstract string? @get(SessionType session); public abstract bool start(string? config = null); public abstract bool stop(); @@ -16,6 +18,7 @@ namespace Tmate private string? _addr_http_ro = null; private IOChannel? stdout = null; private Pid? pid = null; + private uint error_count = 0; // Regex private Regex r_connect = /^Connecting to .+\.\.\.$/; @@ -26,9 +29,14 @@ namespace Tmate private Regex r_ssh_ro = /^ssh \w+ read \w+[:] .+ (.+)+$/; private Regex r_joined = /^.+ joined \(([^()]+)\) -- (\d+) clients? .+$/; private Regex r_left = /^.+ left \(([^()]+)\) -- (\d+) clients? .+$/; + private Regex r_closed = /^Session closed$/; + private Regex r_note = /^(Note: |Reconnecting)/; + private Regex r_restarted = /^Session shell restarted$/; + private Regex r_netfail= /^[^ ]+ lookup failure\..+ \((.+)\)$/; public SessionType flags { get; private set;} public string? socket { get; private set;} + public bool terminate = true; construct { reset(); } @@ -36,32 +44,47 @@ namespace Tmate { info (_("Session: unix://%s"), socket); } + + public virtual signal void network_error(string message) + { + if(error_count ++ > 5) stop(); + } + public virtual signal void stopped () { info (_("Session terminated.")); + reset(); } - public override signal void address (SessionType session, string address) + + private void address_set(SessionType session, string address) { info (_("%s address: %s"), session.to_string(), address); - switch(session) { - case SSH : - _addr_ssh = address; - break; - case HTTP: - _addr_http = address; - break; - case HTTP_READONLY: - _addr_http_ro = address; - break; - case SSH_READONLY : - _addr_ssh_ro = address; - break; - case DISCONNECTED : + + if (session in SessionType.SSH|SessionType.SSH_READONLY|SessionType.HTTP|SessionType.HTTP_READONLY) { + switch(session) { + case SSH: + _addr_ssh = address; + break; + case HTTP: + _addr_http = address; + break; + case HTTP_READONLY: + _addr_http_ro = address; + break; + case SSH_READONLY : + _addr_ssh_ro = address; + break; + default: + warn_if_reached(); + break; + } + + flags |= session; + this.address(session, address); + } else if (session == DISCONNECTED) { _addr_http = _addr_ssh = _addr_http_ro = _addr_ssh_ro = null; - break; - default: - warn_if_reached(); - break; + flags = DISCONNECTED; + this.address(DISCONNECTED, ""); } } public virtual signal void joined (string mate, int mates) @@ -83,6 +106,7 @@ namespace Tmate pid = null; socket = null; flags = DISCONNECTED; + error_count = 0; } private bool send(string[] args) @@ -129,10 +153,29 @@ namespace Tmate return null; } + public bool stop() + { + return send({"kill-server"}); + } + + private void restart() + { + if(terminate) { + stop(); + return; + } + + started(socket); + if((bool)_addr_ssh) address(SSH, _addr_ssh); + if((bool)_addr_ssh_ro) address(SSH_READONLY, _addr_ssh_ro); + if((bool)_addr_http) address(HTTP, _addr_http); + if((bool)_addr_http_ro) address(HTTP_READONLY, _addr_http_ro); + } + public bool start(string? config = null) { if(! (pid == null)) { - started.emit(socket); + started(socket); return true; } @@ -164,15 +207,22 @@ namespace Tmate if(r_socket.match(line, 0, out info)) socket = info.fetch(1); else if (r_connect.match(line) && socket != null) - started.emit(socket); + started(socket); else if(r_http.match(line, 0, out info)) - address.emit(HTTP, info.fetch(1)); + address_set(HTTP, info.fetch(1)); else if(r_http_ro.match(line, 0, out info)) - address.emit(HTTP_READONLY, info.fetch(1)); + address_set(HTTP_READONLY, info.fetch(1)); else if(r_ssh.match(line, 0, out info)) - address.emit(SSH, info.fetch(1)); + address_set(SSH, info.fetch(1)); else if(r_ssh_ro.match(line, 0, out info)) - address.emit(SSH_READONLY, info.fetch(1)); + address_set(SSH_READONLY, info.fetch(1)); + else if(r_restarted.match(line)) + restart(); + else if(r_closed.match(line)) + stopped(); + else if(r_netfail.match(line, 0, out info)) + network_error(info.fetch(1)); + else if(r_note.match(line)) unlikely(false); // Ignore line else debug("Unprocessed line: \"%s\"", line); } catch (IOChannelError e) { @@ -187,21 +237,16 @@ namespace Tmate ChildWatch.add(pid, (pid, status) => { Process.close_pid(pid); - reset(); - stopped.emit(); + if(flags != DISCONNECTED) + stopped(); }); return true; } catch (SpawnError e) { warning("Error: %s", e.message); - reset(); + stopped(); return false; } } - - public bool stop() - { - return false; - } } } diff --git a/src/window.vala b/src/window.vala index 5cdfc65..640e287 100644 --- a/src/window.vala +++ b/src/window.vala @@ -47,6 +47,11 @@ namespace JadupcSupport infobar.response.connect(() => infobar.set_revealed(false)); + tmate.network_error.connect((message) => { + show_in_infobar(ERROR, message); + }); + + tmate.stopped.connect(reset_window); tmate.address.connect((stype, addr) => { if(Tmate.SessionType.SSH in stype) on_session_connect(addr); @@ -63,6 +68,7 @@ namespace JadupcSupport configFactory.delete(config); tmate.disconnect(session_handler); }); + tmate.start(config); }); @@ -87,7 +93,11 @@ namespace JadupcSupport private void reset_window() { session.label = _("Disconnected..."); - Timeout.add_once(view.transition_duration, () => terminal.reset(true, true)); + Timeout.add(view.transition_duration, () => { + terminal.reset(true, true); + return false; + }); + view.visible_child_name = "session"; } @@ -100,14 +110,12 @@ namespace JadupcSupport private void on_session_connect(string url) { + terminal.spawn_async(Vte.PtyFlags.DEFAULT, "~", {"tmate", "-S", tmate.socket, "attach"}, {@"PATH=$(Config.SECURE_PATH)"}, + SpawnFlags.SEARCH_PATH_FROM_ENVP, null, -1, null, spawn_async_cb); + session.label = @"<a href=\"ssh://$url\">ssh://$url</a>"; view.visible_child_name = "terminal"; terminal.has_focus = true; - debug(url); - debug(tmate.socket); - - terminal.spawn_async(Vte.PtyFlags.DEFAULT, "~", {"tmate", "-S", tmate.socket, "attach"}, {@"PATH=$(Config.SECURE_PATH)"}, - SpawnFlags.SEARCH_PATH_FROM_ENVP, null, -1, null, spawn_async_cb); } } } diff --git a/vapi/vte-0.62/vte-2.91.vapi b/vapi/vte-0.62/vte-2.91.vapi new file mode 100644 index 0000000..aac7461 --- /dev/null +++ b/vapi/vte-0.62/vte-2.91.vapi @@ -0,0 +1,429 @@ +/* vte-2.91.vapi generated by vapigen, do not modify. */ + +[CCode (cprefix = "Vte", gir_namespace = "Vte", gir_version = "2.91", lower_case_cprefix = "vte_")] +namespace Vte { + [CCode (cheader_filename = "vte/vte.h", type_id = "vte_pty_get_type ()")] + public class Pty : GLib.Object, GLib.Initable { + [CCode (has_construct_function = false)] + protected Pty (); + public void child_setup (); + [Version (deprecated = true, deprecated_since = "0.42")] + public void close (); + [CCode (has_construct_function = false)] + public Pty.foreign_sync (int fd, GLib.Cancellable? cancellable = null) throws GLib.Error; + public int get_fd (); + public bool get_size (out int rows, out int columns) throws GLib.Error; + public bool set_size (int rows, int columns) throws GLib.Error; + public bool set_utf8 (bool utf8) throws GLib.Error; + [Version (since = "0.48")] + public async bool spawn_async (string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 5.33333, destroy_notify_pos = 5.66667)] owned GLib.SpawnChildSetupFunc? child_setup, int timeout, GLib.Cancellable? cancellable, out GLib.Pid child_pid) throws GLib.Error; + [Version (since = "0.62")] + public async void spawn_with_fds_async (string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, [CCode (array_length_cname = "n_fds", array_length_pos = 4.5)] int[]? fds, [CCode (array_length_cname = "n_map_fds", array_length_pos = 5.5)] int[]? map_fds, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 7.33333, destroy_notify_pos = 7.66667)] owned GLib.SpawnChildSetupFunc? child_setup, int timeout, GLib.Cancellable? cancellable); + [CCode (has_construct_function = false)] + public Pty.sync (Vte.PtyFlags flags, GLib.Cancellable? cancellable = null) throws GLib.Error; + public int fd { get; construct; } + [NoAccessorMethod] + public Vte.PtyFlags flags { get; construct; } + } + [CCode (cheader_filename = "vte/vte.h", ref_function = "vte_regex_ref", type_id = "vte_regex_get_type ()", unref_function = "vte_regex_unref")] + [Compact] + public class Regex { + [CCode (has_construct_function = false)] + public Regex.for_match (string pattern, ssize_t pattern_length, uint32 flags) throws GLib.Error; + [CCode (has_construct_function = false)] + public Regex.for_search (string pattern, ssize_t pattern_length, uint32 flags) throws GLib.Error; + public bool jit (uint32 flags) throws GLib.Error; + public Vte.Regex @ref (); + [Version (since = "0.56")] + public string substitute (string subject, string replacement, uint32 flags) throws GLib.Error; + [DestroysInstance] + public Vte.Regex unref (); + } + [CCode (cheader_filename = "vte/vte.h", type_id = "vte_terminal_get_type ()")] + public class Terminal : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable { + [CCode (has_construct_function = false, type = "GtkWidget*")] + public Terminal (); + [Version (since = "0.50")] + public void copy_clipboard_format (Vte.Format format); + public void copy_primary (); + [Version (deprecated = true, deprecated_since = "0.46", since = "0.44")] + public bool event_check_gregex_simple (Gdk.Event event, [CCode (array_length_cname = "n_regexes", array_length_pos = 2.5, array_length_type = "gsize")] GLib.Regex[] regexes, GLib.RegexMatchFlags match_flags, [CCode (array_length_cname = "n_regexes", array_length_pos = 2.5, array_length_type = "gsize")] out unowned string[] matches); + [CCode (array_length_pos = 3.1, array_length_type = "gsize")] + [Version (since = "0.62")] + public string[]? event_check_regex_array (Gdk.Event event, [CCode (array_length_cname = "n_regexes", array_length_pos = 2.5, array_length_type = "gsize")] Vte.Regex[] regexes, uint32 match_flags); + public void feed ([CCode (array_length_cname = "length", array_length_pos = 1.1, array_length_type = "gssize")] uint8[]? data); + public void feed_child ([CCode (array_length_cname = "length", array_length_pos = 1.1, array_length_type = "gssize")] uint8[]? text); + [Version (deprecated = true, deprecated_since = "0.60")] + public void feed_child_binary ([CCode (array_length_cname = "length", array_length_pos = 1.1, array_length_type = "gsize")] uint8[]? data); + [Version (deprecated = true, deprecated_since = "0.60")] + public bool get_allow_bold (); + [Version (since = "0.50")] + public bool get_allow_hyperlink (); + public bool get_audible_bell (); + [Version (since = "0.52")] + public bool get_bold_is_bright (); + [Version (since = "0.52")] + public double get_cell_height_scale (); + [Version (since = "0.52")] + public double get_cell_width_scale (); + public long get_char_height (); + public long get_char_width (); + public int get_cjk_ambiguous_width (); + [Version (since = "0.54")] + public Gdk.RGBA get_color_background_for_draw (); + public long get_column_count (); + public unowned string? get_current_directory_uri (); + public unowned string? get_current_file_uri (); + public Vte.CursorBlinkMode get_cursor_blink_mode (); + public void get_cursor_position (out long column, out long row); + public Vte.CursorShape get_cursor_shape (); + [Version (since = "0.58")] + public bool get_enable_bidi (); + [Version (since = "0.58")] + public bool get_enable_shaping (); + [Version (since = "0.62")] + public bool get_enable_sixel (); + [Version (deprecated = true, deprecated_since = "0.54")] + public unowned string? get_encoding (); + public unowned Pango.FontDescription get_font (); + public double get_font_scale (); + [Version (deprecated = true, deprecated_since = "0.52")] + public void get_geometry_hints (out Gdk.Geometry hints, int min_rows, int min_columns); + public bool get_has_selection (); + [Version (deprecated = true, deprecated_since = "0.54")] + public unowned string? get_icon_title (); + public bool get_input_enabled (); + public bool get_mouse_autohide (); + public unowned Vte.Pty get_pty (); + [Version (deprecated = true, deprecated_since = "0.58")] + public bool get_rewrap_on_resize (); + public long get_row_count (); + [Version (since = "0.52")] + public bool get_scroll_on_keystroke (); + [Version (since = "0.52")] + public bool get_scroll_on_output (); + [Version (since = "0.52")] + public long get_scrollback_lines (); + public string? get_text ([CCode (delegate_target_pos = 1.5)] Vte.SelectionFunc? is_selected, out GLib.Array<Vte.CharAttributes?>? attributes); + [Version (since = "0.52")] + public Vte.TextBlinkMode get_text_blink_mode (); + [Version (deprecated = true, deprecated_since = "0.56")] + public string get_text_include_trailing_spaces ([CCode (delegate_target_pos = 1.5)] Vte.SelectionFunc? is_selected, out GLib.Array<Vte.CharAttributes?>? attributes); + public string? get_text_range (long start_row, long start_col, long end_row, long end_col, [CCode (delegate_target_pos = 5.5)] Vte.SelectionFunc? is_selected, out GLib.Array<Vte.CharAttributes?>? attributes); + public unowned string? get_window_title (); + [Version (since = "0.40")] + public unowned string? get_word_char_exceptions (); + [Version (since = "0.50")] + public string? hyperlink_check_event (Gdk.Event event); + [Version (deprecated = true, deprecated_since = "0.46")] + public int match_add_gregex (GLib.Regex gregex, GLib.RegexMatchFlags gflags); + [Version (since = "0.46")] + public int match_add_regex (Vte.Regex regex, uint32 flags); + [Version (deprecated = true, deprecated_since = "0.46")] + public string? match_check (long column, long row, out int tag); + public string? match_check_event (Gdk.Event event, out int tag); + public void match_remove (int tag); + public void match_remove_all (); + [Version (deprecated = true, deprecated_since = "0.40")] + public void match_set_cursor (int tag, Gdk.Cursor? cursor); + public void match_set_cursor_name (int tag, string cursor_name); + [Version (deprecated = true, deprecated_since = "0.54")] + public void match_set_cursor_type (int tag, Gdk.CursorType cursor_type); + public void paste_primary (); + public Vte.Pty pty_new_sync (Vte.PtyFlags flags, GLib.Cancellable? cancellable = null) throws GLib.Error; + public void reset (bool clear_tabstops, bool clear_history); + public bool search_find_next (); + public bool search_find_previous (); + [Version (deprecated = true, deprecated_since = "0.46")] + public unowned GLib.Regex search_get_gregex (); + [Version (since = "0.46")] + public unowned Vte.Regex search_get_regex (); + public bool search_get_wrap_around (); + [Version (deprecated = true, deprecated_since = "0.46")] + public void search_set_gregex (GLib.Regex? gregex, GLib.RegexMatchFlags gflags); + [Version (since = "0.46")] + public void search_set_regex (Vte.Regex? regex, uint32 flags); + public void search_set_wrap_around (bool wrap_around); + public void select_all (); + [Version (deprecated = true, deprecated_since = "0.60")] + public void set_allow_bold (bool allow_bold); + [Version (since = "0.50")] + public void set_allow_hyperlink (bool allow_hyperlink); + public void set_audible_bell (bool is_audible); + public void set_backspace_binding (Vte.EraseBinding binding); + [Version (since = "0.52")] + public void set_bold_is_bright (bool bold_is_bright); + [Version (since = "0.52")] + public void set_cell_height_scale (double scale); + [Version (since = "0.52")] + public void set_cell_width_scale (double scale); + public void set_cjk_ambiguous_width (int width); + [Version (since = "0.52")] + public void set_clear_background (bool setting); + public void set_color_background (Gdk.RGBA background); + public void set_color_bold (Gdk.RGBA? bold); + public void set_color_cursor (Gdk.RGBA? cursor_background); + [Version (since = "0.44")] + public void set_color_cursor_foreground (Gdk.RGBA? cursor_foreground); + public void set_color_foreground (Gdk.RGBA foreground); + public void set_color_highlight (Gdk.RGBA? highlight_background); + public void set_color_highlight_foreground (Gdk.RGBA? highlight_foreground); + public void set_colors (Gdk.RGBA? foreground, Gdk.RGBA? background, [CCode (array_length_cname = "palette_size", array_length_pos = 3.1, array_length_type = "gsize")] Gdk.RGBA[]? palette); + public void set_cursor_blink_mode (Vte.CursorBlinkMode mode); + public void set_cursor_shape (Vte.CursorShape shape); + public void set_default_colors (); + public void set_delete_binding (Vte.EraseBinding binding); + [Version (since = "0.58")] + public void set_enable_bidi (bool enable_bidi); + [Version (since = "0.58")] + public void set_enable_shaping (bool enable_shaping); + [Version (since = "0.62")] + public void set_enable_sixel (bool enabled); + [Version (deprecated = true, deprecated_since = "0.54")] + public bool set_encoding (string? codeset) throws GLib.Error; + public void set_font (Pango.FontDescription? font_desc); + public void set_font_scale (double scale); + [Version (deprecated = true, deprecated_since = "0.52")] + public void set_geometry_hints_for_window (Gtk.Window window); + public void set_input_enabled (bool enabled); + public void set_mouse_autohide (bool setting); + public void set_pty (Vte.Pty? pty); + [Version (deprecated = true, deprecated_since = "0.58")] + public void set_rewrap_on_resize (bool rewrap); + public void set_scroll_on_keystroke (bool scroll); + public void set_scroll_on_output (bool scroll); + public void set_scrollback_lines (long lines); + public void set_size (long columns, long rows); + [Version (since = "0.52")] + public void set_text_blink_mode (Vte.TextBlinkMode text_blink_mode); + [Version (since = "0.40")] + public void set_word_char_exceptions (string exceptions); + [Version (since = "0.48")] + public void spawn_async (Vte.PtyFlags pty_flags, string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 6.33333, destroy_notify_pos = 6.66667)] owned GLib.SpawnChildSetupFunc? child_setup, int timeout, GLib.Cancellable? cancellable, [CCode (scope = "async")] Vte.TerminalSpawnAsyncCallback? callback); + [Version (deprecated = true, deprecated_since = "0.48")] + public bool spawn_sync (Vte.PtyFlags pty_flags, string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 6.5)] GLib.SpawnChildSetupFunc? child_setup, out GLib.Pid child_pid, GLib.Cancellable? cancellable = null) throws GLib.Error; + [Version (since = "0.62")] + public void spawn_with_fds_async (Vte.PtyFlags pty_flags, string? working_directory, [CCode (array_length = false, array_null_terminated = true)] string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, [CCode (array_length_cname = "n_fds", array_length_pos = 5.5)] int[]? fds, [CCode (array_length_cname = "n_map_fds", array_length_pos = 6.5)] int[]? map_fds, GLib.SpawnFlags spawn_flags, [CCode (delegate_target_pos = 8.33333, destroy_notify_pos = 8.66667)] owned GLib.SpawnChildSetupFunc? child_setup, int timeout, GLib.Cancellable? cancellable, [CCode (scope = "async")] Vte.TerminalSpawnAsyncCallback? callback); + public void unselect_all (); + public void watch_child (GLib.Pid child_pid); + public bool write_contents_sync (GLib.OutputStream stream, Vte.WriteFlags flags, GLib.Cancellable? cancellable = null) throws GLib.Error; + [Version (deprecated = true, deprecated_since = "0.60")] + public bool allow_bold { get; set; } + [Version (since = "0.50")] + public bool allow_hyperlink { get; set; } + public bool audible_bell { get; set; } + [NoAccessorMethod] + public Vte.EraseBinding backspace_binding { get; set; } + [Version (since = "0.52")] + public bool bold_is_bright { get; set; } + [Version (since = "0.52")] + public double cell_height_scale { get; set; } + [Version (since = "0.52")] + public double cell_width_scale { get; set; } + public int cjk_ambiguous_width { get; set; } + public string current_directory_uri { get; } + public string current_file_uri { get; } + public Vte.CursorBlinkMode cursor_blink_mode { get; set; } + public Vte.CursorShape cursor_shape { get; set; } + [NoAccessorMethod] + public Vte.EraseBinding delete_binding { get; set; } + [Version (since = "0.58")] + public bool enable_bidi { get; set; } + [Version (since = "0.58")] + public bool enable_shaping { get; set; } + [Version (since = "0.62")] + public bool enable_sixel { get; set; } + [NoAccessorMethod] + [Version (deprecated = true, deprecated_since = "0.54")] + public string encoding { owned get; set; } + [NoAccessorMethod] + public Pango.FontDescription font_desc { owned get; set; } + public double font_scale { get; set; } + [NoAccessorMethod] + [Version (since = "0.50")] + public string hyperlink_hover_uri { owned get; } + [Version (deprecated = true, deprecated_since = "0.54")] + public string icon_title { get; } + public bool input_enabled { get; set; } + [NoAccessorMethod] + public bool pointer_autohide { get; set; } + public Vte.Pty pty { get; set; } + [Version (deprecated = true, deprecated_since = "0.58")] + public bool rewrap_on_resize { get; set; } + public bool scroll_on_keystroke { get; set; } + public bool scroll_on_output { get; set; } + public uint scrollback_lines { get; set; } + [Version (since = "0.52")] + public Vte.TextBlinkMode text_blink_mode { get; set; } + public string window_title { get; } + [Version (since = "0.40")] + public string word_char_exceptions { get; } + public virtual signal void bell (); + public virtual signal void char_size_changed (uint char_width, uint char_height); + public virtual signal void child_exited (int status); + public virtual signal void commit (string text, uint size); + public virtual signal void contents_changed (); + [HasEmitter] + public virtual signal void copy_clipboard (); + public signal void current_directory_uri_changed (); + public signal void current_file_uri_changed (); + public virtual signal void cursor_moved (); + public virtual signal void decrease_font_size (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void deiconify_window (); + public virtual signal void encoding_changed (); + public virtual signal void eof (); + [Version (since = "0.50")] + public signal void hyperlink_hover_uri_changed (string uri, Gdk.Rectangle bbox); + [Version (deprecated = true, deprecated_since = "0.54")] + public virtual signal void icon_title_changed (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void iconify_window (); + public virtual signal void increase_font_size (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void lower_window (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void maximize_window (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void move_window (uint x, uint y); + [HasEmitter] + public virtual signal void paste_clipboard (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void raise_window (); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void refresh_window (); + public virtual signal void resize_window (uint width, uint height); + [Version (deprecated = true, deprecated_since = "0.60")] + public virtual signal void restore_window (); + public virtual signal void selection_changed (); + public virtual signal void text_deleted (); + public virtual signal void text_inserted (); + public virtual signal void text_modified (); + public virtual signal void text_scrolled (int delta); + public virtual signal void window_title_changed (); + } + [CCode (cheader_filename = "vte/vte.h", has_type_id = false)] + public struct CharAttributes { + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_CURSOR_BLINK_", type_id = "vte_cursor_blink_mode_get_type ()")] + public enum CursorBlinkMode { + SYSTEM, + ON, + OFF + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_CURSOR_SHAPE_", type_id = "vte_cursor_shape_get_type ()")] + public enum CursorShape { + BLOCK, + IBEAM, + UNDERLINE + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_ERASE_", type_id = "vte_erase_binding_get_type ()")] + public enum EraseBinding { + AUTO, + ASCII_BACKSPACE, + ASCII_DELETE, + DELETE_SEQUENCE, + TTY + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_FEATURE_", has_type_id = false)] + [Flags] + [Version (since = "0.62")] + public enum FeatureFlags { + FLAG_BIDI, + FLAG_ICU, + FLAG_SYSTEMD, + FLAG_SIXEL, + FLAGS_MASK + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_FORMAT_", type_id = "vte_format_get_type ()")] + [Version (since = "0.50")] + public enum Format { + TEXT, + HTML + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_PTY_", type_id = "vte_pty_flags_get_type ()")] + [Flags] + public enum PtyFlags { + NO_LASTLOG, + NO_UTMP, + NO_WTMP, + NO_HELPER, + NO_FALLBACK, + NO_SESSION, + NO_CTTY, + DEFAULT + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_TEXT_BLINK_", type_id = "vte_text_blink_mode_get_type ()")] + [Version (since = "0.52")] + public enum TextBlinkMode { + NEVER, + FOCUSED, + UNFOCUSED, + ALWAYS + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_WRITE_", type_id = "vte_write_flags_get_type ()")] + public enum WriteFlags { + DEFAULT + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_PTY_ERROR_")] + public errordomain PtyError { + PTY_HELPER_FAILED, + PTY98_FAILED; + public static GLib.Quark quark (); + } + [CCode (cheader_filename = "vte/vte.h", cprefix = "VTE_REGEX_ERROR_")] + [Version (since = "0.46")] + public errordomain RegexError { + INCOMPATIBLE, + NOT_SUPPORTED; + public static GLib.Quark quark (); + } + [CCode (cheader_filename = "vte/vte.h", instance_pos = 3.9)] + public delegate bool SelectionFunc (Vte.Terminal terminal, long column, long row); + [CCode (cheader_filename = "vte/vte.h", instance_pos = 3.9)] + [Version (since = "0.48")] + public delegate void TerminalSpawnAsyncCallback (Vte.Terminal terminal, GLib.Pid pid, GLib.Error error); + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_MAJOR_VERSION")] + public const int MAJOR_VERSION; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_MICRO_VERSION")] + public const int MICRO_VERSION; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_MINOR_VERSION")] + public const int MINOR_VERSION; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_REGEX_FLAGS_DEFAULT")] + public const int REGEX_FLAGS_DEFAULT; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_SPAWN_NO_PARENT_ENVV")] + public const int SPAWN_NO_PARENT_ENVV; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_SPAWN_NO_SYSTEMD_SCOPE")] + [Version (since = "0.60")] + public const int SPAWN_NO_SYSTEMD_SCOPE; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_SPAWN_REQUIRE_SYSTEMD_SCOPE")] + [Version (since = "0.60")] + public const int SPAWN_REQUIRE_SYSTEMD_SCOPE; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_TEST_FLAGS_ALL")] + public const uint64 TEST_FLAGS_ALL; + [CCode (cheader_filename = "vte/vte.h", cname = "VTE_TEST_FLAGS_NONE")] + public const uint64 TEST_FLAGS_NONE; + [CCode (cheader_filename = "vte/vte.h")] + [Version (deprecated = true, deprecated_since = "0.60", since = "0.60")] + public static bool get_encoding_supported (string encoding); + [CCode (array_length = false, array_null_terminated = true, cheader_filename = "vte/vte.h")] + [Version (deprecated = true, deprecated_since = "0.60", since = "0.60")] + public static string[] get_encodings (bool include_aliases); + [CCode (cheader_filename = "vte/vte.h")] + [Version (since = "0.62")] + public static Vte.FeatureFlags get_feature_flags (); + [CCode (cheader_filename = "vte/vte.h")] + [Version (since = "0.40")] + public static unowned string get_features (); + [CCode (cheader_filename = "vte/vte.h")] + [Version (since = "0.40")] + public static uint get_major_version (); + [CCode (cheader_filename = "vte/vte.h")] + [Version (since = "0.40")] + public static uint get_micro_version (); + [CCode (cheader_filename = "vte/vte.h")] + [Version (since = "0.40")] + public static uint get_minor_version (); + [CCode (cheader_filename = "vte/vte.h")] + public static string get_user_shell (); +} |