summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build12
-rw-r--r--po/meson.build6
-rw-r--r--src/meson.build16
-rw-r--r--src/tmate/session.vala111
-rw-r--r--src/window.vala20
-rw-r--r--vapi/vte-0.62/vte-2.91.vapi429
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 ();
+}