Compare commits

...
Sign in to create a new pull request.

5 commits

Author SHA1 Message Date
Kalev Lember
ff009a00ef Update to 0.56.4 2019-10-14 10:28:34 +02:00
Debarshi Ray
b5d3b7d45c Support tracking the active container inside the terminal
https://gitlab.freedesktop.org/terminal-wg/specifications/issues/17
2019-06-21 15:53:39 +02:00
Kalev Lember
b338bdc00b Update to 0.56.3 2019-05-07 03:31:09 +02:00
Kalev Lember
d5b7a0f987 Update to 0.56.2 2019-05-06 11:51:04 +02:00
Kalev Lember
b574e54102 Update to 0.56.1 2019-04-09 11:28:37 +02:00
4 changed files with 332 additions and 56 deletions

4
.gitignore vendored
View file

@ -49,3 +49,7 @@
/vte-0.55.90.tar.xz
/vte-0.55.92.tar.xz
/vte-0.56.0.tar.xz
/vte-0.56.1.tar.xz
/vte-0.56.2.tar.xz
/vte-0.56.3.tar.xz
/vte-0.56.4.tar.xz

View file

@ -1 +1 @@
SHA512 (vte-0.56.0.tar.xz) = f366ed4a28a896ba919184b50a55ee110eae43127847f34c049684bcb9b81327d1b72e9d871b2a5b7f7fa12f3f4aa721ac3d770770b600dca9c433cb2c674915
SHA512 (vte-0.56.4.tar.xz) = 5a6c79b30f07c1f5848ef59028864d893cc605b9ad8f49ae819958aaed962d2ff96baad379f126381b8bf00015003c5a6dc28c792e4e050ba35090338bd7dabb

View file

@ -1,7 +1,7 @@
From 040c43f2edb0f3179febbed36f37bc1fbc77dbcf Mon Sep 17 00:00:00 2001
From ae76be1fc2f45472b3221d032322624efbacfd1c Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Wed, 7 Jan 2015 16:01:00 +0100
Subject: [PATCH 1/5] Add sequences and signals for desktop notification
Subject: [PATCH 1/6] Add sequences and signals for desktop notification
Add sequences
OSC 777 ; notify ; SUMMARY ; BODY BEL
@ -38,10 +38,10 @@ index 1e4d0c1b6476..3385b4759713 100644
VOID:STRING,UINT
VOID:UINT,UINT
diff --git a/src/vte.cc b/src/vte.cc
index 6c9f70f9fba1..3e6eeb92cd36 100644
index 0e799cef38e9..802ce6df34a6 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -10581,6 +10581,15 @@ Terminal::emit_pending_signals()
@@ -10216,6 +10216,15 @@ Terminal::emit_pending_signals()
emit_adjustment_changed();
@ -58,7 +58,7 @@ index 6c9f70f9fba1..3e6eeb92cd36 100644
if (m_window_title != m_window_title_pending) {
m_window_title.swap(m_window_title_pending);
diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h
index 89539cc476b6..861a8c7402db 100644
index 26ac236ef4ea..abf1a38cb20d 100644
--- a/src/vte/vteterminal.h
+++ b/src/vte/vteterminal.h
@@ -104,8 +104,10 @@ struct _VteTerminalClass {
@ -74,7 +74,7 @@ index 89539cc476b6..861a8c7402db 100644
VteTerminalClassPrivate *priv;
};
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 89e3d7a89f3a..0c9773535d7a 100644
index ea8b3208542c..4f67c186d245 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -729,6 +729,7 @@ vte_terminal_class_init(VteTerminalClass *klass)
@ -125,10 +125,10 @@ index c49754ef38ee..126d29326f11 100644
LAST_SIGNAL
};
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 1652ca5fe6ed..c5b24ffe2ca9 100644
index 9010b9b01816..eb2cda249ee1 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -578,6 +578,11 @@ public:
@@ -539,6 +539,11 @@ public:
gboolean m_cursor_moved_pending;
gboolean m_contents_changed_pending;
@ -140,7 +140,7 @@ index 1652ca5fe6ed..c5b24ffe2ca9 100644
std::string m_window_title{};
std::string m_current_directory_uri{};
std::string m_current_file_uri{};
@@ -1323,6 +1328,9 @@ public:
@@ -1270,6 +1275,9 @@ public:
int osc) noexcept;
/* OSC handlers */
@ -151,10 +151,10 @@ index 1652ca5fe6ed..c5b24ffe2ca9 100644
vte::parser::StringTokeniser::const_iterator& token,
vte::parser::StringTokeniser::const_iterator const& endtoken,
diff --git a/src/vteseq.cc b/src/vteseq.cc
index eabcbbaa5eca..51b3a2c32c7f 100644
index d596d8b9f56f..fbbf4f032f48 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -1341,6 +1341,34 @@ Terminal::delete_lines(vte::grid::row_t param)
@@ -1334,6 +1334,34 @@ Terminal::delete_lines(vte::grid::row_t param)
m_text_deleted_flag = TRUE;
}
@ -189,7 +189,7 @@ index eabcbbaa5eca..51b3a2c32c7f 100644
bool
Terminal::get_osc_color_index(int osc,
int value,
@@ -6352,6 +6380,10 @@ Terminal::OSC(vte::parser::Sequence const& seq)
@@ -6411,6 +6439,10 @@ Terminal::OSC(vte::parser::Sequence const& seq)
reset_color(VTE_HIGHLIGHT_FG, VTE_COLOR_SOURCE_ESCAPE);
break;
@ -200,7 +200,7 @@ index eabcbbaa5eca..51b3a2c32c7f 100644
case VTE_OSC_XTERM_SET_ICON_TITLE:
case VTE_OSC_XTERM_SET_XPROPERTY:
case VTE_OSC_XTERM_SET_COLOR_MOUSE_CURSOR_FG:
@@ -6392,7 +6424,6 @@ Terminal::OSC(vte::parser::Sequence const& seq)
@@ -6451,7 +6483,6 @@ Terminal::OSC(vte::parser::Sequence const& seq)
case VTE_OSC_URXVT_SET_FONT_BOLD_ITALIC:
case VTE_OSC_URXVT_VIEW_UP:
case VTE_OSC_URXVT_VIEW_DOWN:
@ -209,13 +209,13 @@ index eabcbbaa5eca..51b3a2c32c7f 100644
default:
break;
--
2.14.4
2.20.1
From bd6936635d4055c3434fac71fe3af405df4c0ba8 Mon Sep 17 00:00:00 2001
From 27c437a92a140bbcdac913315963549a7d5364f0 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Thu, 29 Jan 2015 13:09:17 +0100
Subject: [PATCH 2/5] vte.sh: Emit OSC 777 from PROMPT_COMMAND
Subject: [PATCH 2/6] vte.sh: Emit OSC 777 from PROMPT_COMMAND
For some reason, the three consecutive backslashes break the parsing.
As Christian Persch suggested, replacing the double quotes with
@ -244,13 +244,13 @@ index 6d1a8734c479..b75c6dac6f6e 100644
case "$TERM" in
--
2.14.4
2.20.1
From 693355f62a7959ded9157493292742434ba066ed Mon Sep 17 00:00:00 2001
From 30c7d17fb6209ebceea10d38e1622bb63bbe27e4 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Thu, 22 Jan 2015 16:37:10 +0100
Subject: [PATCH 3/5] Test the notification-received signal
Subject: [PATCH 3/6] Test the notification-received signal
---
bindings/vala/app.vala | 7 +++++++
@ -258,7 +258,7 @@ Subject: [PATCH 3/5] Test the notification-received signal
2 files changed, 17 insertions(+)
diff --git a/bindings/vala/app.vala b/bindings/vala/app.vala
index 8663d63c5445..4c5d9a2b3bad 100644
index a534e76b7f42..138d453d5d98 100644
--- a/bindings/vala/app.vala
+++ b/bindings/vala/app.vala
@@ -309,6 +309,8 @@ class Window : Gtk.ApplicationWindow
@ -283,10 +283,10 @@ index 8663d63c5445..4c5d9a2b3bad 100644
class App : Gtk.Application
diff --git a/src/app/app.cc b/src/app/app.cc
index b155efa3f348..250d09d8b4c5 100644
index ba76c9b37315..db022476e95e 100644
--- a/src/app/app.cc
+++ b/src/app/app.cc
@@ -1628,6 +1628,14 @@ window_window_title_changed_cb(VteTerminal* terminal,
@@ -1673,6 +1673,14 @@ window_window_title_changed_cb(VteTerminal* terminal,
vte_terminal_get_window_title(window->terminal));
}
@ -301,7 +301,7 @@ index b155efa3f348..250d09d8b4c5 100644
static void
window_lower_window_cb(VteTerminal* terminal,
VteappWindow* window)
@@ -1855,6 +1863,8 @@ vteapp_window_constructed(GObject *object)
@@ -1901,6 +1909,8 @@ vteapp_window_constructed(GObject *object)
if (options.object_notifications)
g_signal_connect(window->terminal, "notify", G_CALLBACK(window_notify_cb), window);
@ -311,13 +311,13 @@ index b155efa3f348..250d09d8b4c5 100644
if (options.no_double_buffer)
gtk_widget_set_double_buffered(GTK_WIDGET(window->terminal), false);
--
2.14.4
2.20.1
From 24c78bb06d9f85393fa4e715f0d01b40496c71a6 Mon Sep 17 00:00:00 2001
From 93fe85b432d44d2642f4944a528b154407a7a932 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Fri, 13 May 2016 17:53:54 +0200
Subject: [PATCH 4/5] Add a property to configure the scroll speed
Subject: [PATCH 4/6] Add a property to configure the scroll speed
By default, it is set to zero which gives the current behaviour of
moving the buffer by a function of the number of visible rows.
@ -325,15 +325,15 @@ moving the buffer by a function of the number of visible rows.
https://bugzilla.redhat.com/show_bug.cgi?id=1103380
---
doc/reference/vte-sections.txt | 1 +
src/vte.cc | 19 +++++++++++++++++-
src/vte/vteterminal.h | 4 ++++
src/vtegtk.cc | 45 ++++++++++++++++++++++++++++++++++++++++++
src/vte.cc | 19 +++++++++++++-
src/vte/vteterminal.h | 4 +++
src/vtegtk.cc | 45 ++++++++++++++++++++++++++++++++++
src/vtegtk.hh | 1 +
src/vteinternal.hh | 2 ++
6 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/doc/reference/vte-sections.txt b/doc/reference/vte-sections.txt
index b46e30620fe1..bda65e4c788e 100644
index 9ab873c17bfc..7b94f4df9a30 100644
--- a/doc/reference/vte-sections.txt
+++ b/doc/reference/vte-sections.txt
@@ -55,6 +55,7 @@ vte_terminal_get_cursor_blink_mode
@ -345,10 +345,10 @@ index b46e30620fe1..bda65e4c788e 100644
vte_terminal_get_scrollback_lines
vte_terminal_set_font
diff --git a/src/vte.cc b/src/vte.cc
index 3e6eeb92cd36..83ab8f10ca1b 100644
index 802ce6df34a6..49e4007090d2 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -9816,6 +9816,7 @@ void
@@ -9462,6 +9462,7 @@ void
Terminal::widget_scroll(GdkEventScroll *event)
{
gdouble delta_x, delta_y;
@ -356,7 +356,7 @@ index 3e6eeb92cd36..83ab8f10ca1b 100644
gdouble v;
gint cnt, i;
int button;
@@ -9869,7 +9870,13 @@ Terminal::widget_scroll(GdkEventScroll *event)
@@ -9515,7 +9516,13 @@ Terminal::widget_scroll(GdkEventScroll *event)
return;
}
@ -371,7 +371,7 @@ index 3e6eeb92cd36..83ab8f10ca1b 100644
_vte_debug_print(VTE_DEBUG_EVENTS,
"Scroll speed is %d lines per non-smooth scroll unit\n",
(int) v);
@@ -10130,6 +10137,16 @@ Terminal::decscusr_cursor_shape()
@@ -9776,6 +9783,16 @@ Terminal::decscusr_cursor_shape()
}
}
@ -389,7 +389,7 @@ index 3e6eeb92cd36..83ab8f10ca1b 100644
Terminal::set_scrollback_lines(long lines)
{
diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h
index 861a8c7402db..8e6a5d249d7a 100644
index abf1a38cb20d..c8ba72023370 100644
--- a/src/vte/vteterminal.h
+++ b/src/vte/vteterminal.h
@@ -296,6 +296,10 @@ void vte_terminal_set_cursor_shape(VteTerminal *terminal,
@ -404,7 +404,7 @@ index 861a8c7402db..8e6a5d249d7a 100644
_VTE_PUBLIC
void vte_terminal_set_scrollback_lines(VteTerminal *terminal,
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 0c9773535d7a..d4fe1b7edc12 100644
index 4f67c186d245..be3304027c1b 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -517,6 +517,9 @@ vte_terminal_get_property (GObject *object,
@ -449,7 +449,7 @@ index 0c9773535d7a..d4fe1b7edc12 100644
/**
* VteTerminal:scrollback-lines:
*
@@ -4122,6 +4143,30 @@ vte_terminal_get_row_count(VteTerminal *terminal)
@@ -4113,6 +4134,30 @@ vte_terminal_get_row_count(VteTerminal *terminal)
return IMPL(terminal)->m_row_count;
}
@ -493,10 +493,10 @@ index 126d29326f11..b2c9edfa8246 100644
PROP_SCROLL_ON_KEYSTROKE,
PROP_SCROLL_ON_OUTPUT,
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index c5b24ffe2ca9..620bcf200af6 100644
index eb2cda249ee1..17c844137e31 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -457,6 +457,7 @@ public:
@@ -418,6 +418,7 @@ public:
/* Scrolling options. */
gboolean m_scroll_on_output;
gboolean m_scroll_on_keystroke;
@ -504,22 +504,22 @@ index c5b24ffe2ca9..620bcf200af6 100644
vte::grid::row_t m_scrollback_lines;
/* Restricted scrolling */
@@ -1201,6 +1202,7 @@ public:
bool set_mouse_autohide(bool autohide);
bool set_pty(VtePty *pty);
@@ -1148,6 +1149,7 @@ public:
bool set_pty(VtePty *pty,
bool proces_remaining = true);
bool set_rewrap_on_resize(bool rewrap);
+ bool set_scroll_speed(unsigned int scroll_speed);
bool set_scrollback_lines(long lines);
bool set_scroll_on_keystroke(bool scroll);
bool set_scroll_on_output(bool scroll);
--
2.14.4
2.20.1
From 82cbdbbaa55696b422b409b9174d6df8cdb8ee4a Mon Sep 17 00:00:00 2001
From 4a8b0fe33c48ba5983a0e90de8192aedf655ab63 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Fri, 13 May 2016 17:54:57 +0200
Subject: [PATCH 5/5] Test the scroll-speed property
Subject: [PATCH 5/6] Test the scroll-speed property
https://bugzilla.redhat.com/show_bug.cgi?id=1103380
---
@ -528,7 +528,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1103380
2 files changed, 8 insertions(+)
diff --git a/bindings/vala/app.vala b/bindings/vala/app.vala
index 4c5d9a2b3bad..3b7310679239 100644
index 138d453d5d98..61b8ec8edd24 100644
--- a/bindings/vala/app.vala
+++ b/bindings/vala/app.vala
@@ -335,6 +335,7 @@ class Window : Gtk.ApplicationWindow
@ -539,7 +539,7 @@ index 4c5d9a2b3bad..3b7310679239 100644
terminal.set_scrollback_lines(App.Options.scrollback_lines);
/* Style */
@@ -856,6 +857,7 @@ class App : Gtk.Application
@@ -858,6 +859,7 @@ class App : Gtk.Application
public static bool object_notifications = false;
public static string? output_filename = null;
public static bool reverse = false;
@ -547,7 +547,7 @@ index 4c5d9a2b3bad..3b7310679239 100644
public static int scrollback_lines = 512;
public static int transparency_percent = 0;
public static bool version = false;
@@ -1049,6 +1051,8 @@ class App : Gtk.Application
@@ -1051,6 +1053,8 @@ class App : Gtk.Application
"Save terminal contents to file at exit", null },
{ "reverse", 0, 0, OptionArg.NONE, ref reverse,
"Reverse foreground/background colors", null },
@ -557,7 +557,7 @@ index 4c5d9a2b3bad..3b7310679239 100644
"Specify the number of scrollback-lines", null },
{ "transparent", 'T', 0, OptionArg.INT, ref transparency_percent,
diff --git a/src/app/app.cc b/src/app/app.cc
index 250d09d8b4c5..82484d2ca586 100644
index db022476e95e..9dbd3d21c3cb 100644
--- a/src/app/app.cc
+++ b/src/app/app.cc
@@ -93,6 +93,7 @@ public:
@ -577,7 +577,7 @@ index 250d09d8b4c5..82484d2ca586 100644
{ "scrollback-lines", 'n', 0, G_OPTION_ARG_INT, &scrollback_lines,
"Specify the number of scrollback-lines (-1 for infinite)", nullptr },
{ "transparent", 'T', 0, G_OPTION_ARG_INT, &transparency_percent,
@@ -1893,6 +1896,7 @@ vteapp_window_constructed(GObject *object)
@@ -1939,6 +1942,7 @@ vteapp_window_constructed(GObject *object)
vte_terminal_set_rewrap_on_resize(window->terminal, !options.no_rewrap);
vte_terminal_set_scroll_on_output(window->terminal, false);
vte_terminal_set_scroll_on_keystroke(window->terminal, true);
@ -586,5 +586,262 @@ index 250d09d8b4c5..82484d2ca586 100644
vte_terminal_set_text_blink_mode(window->terminal, options.text_blink_mode);
--
2.14.4
2.20.1
From 9fbd3fdc236b549d468dcafbbf857ce34e98f0cc Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Mon, 10 Jun 2019 20:30:18 +0200
Subject: [PATCH 6/6] Support tracking the active container inside the terminal
Add sequences
OSC 777 ; container ; push ; NAME ; RUNTIME BEL
OSC 777 ; container ; push ; NAME ; RUNTIME ST
OSC 777 ; container ; pop ; NAME ; RUNTIME BEL
OSC 777 ; container ; pop ; NAME ; RUNTIME ST
that let container tools notify the terminal emulator when entering and
leaving a container environment. The RUNTIME argument namespaces the
NAME and identifies the container tooling being used. eg., docker,
flatpak, podman, toolbox, etc..
The OSC 777 escape sequence is taken from Enlightenment's Terminology:
https://phab.enlightenment.org/T1765
It's a VTE-specific extension until a standard escape sequence is
agreed upon across multiple different terminal emulators [1].
[1] https://gitlab.freedesktop.org/terminal-wg/specifications/issues/17
---
src/vte.cc | 9 ++++++
src/vte/vteterminal.h | 4 +++
src/vtegtk.cc | 65 +++++++++++++++++++++++++++++++++++++++++++
src/vtegtk.hh | 2 ++
src/vteinternal.hh | 16 +++++++++++
src/vteseq.cc | 31 +++++++++++++++++++++
6 files changed, 127 insertions(+)
diff --git a/src/vte.cc b/src/vte.cc
index 49e4007090d2..2e919b7487c3 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -10256,6 +10256,15 @@ Terminal::emit_pending_signals()
m_window_title_changed = false;
}
+ if (m_containers_changed) {
+ _vte_debug_print(VTE_DEBUG_SIGNALS,
+ "Notifying `current-container-name' and `current-container-runtime'.\n");
+
+ g_object_notify_by_pspec(object, pspecs[PROP_CURRENT_CONTAINER_NAME]);
+ g_object_notify_by_pspec(object, pspecs[PROP_CURRENT_CONTAINER_RUNTIME]);
+ m_containers_changed = false;
+ }
+
if (m_current_directory_uri_changed) {
if (m_current_directory_uri != m_current_directory_uri_pending) {
m_current_directory_uri.swap(m_current_directory_uri_pending);
diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h
index c8ba72023370..bd81db780f11 100644
--- a/src/vte/vteterminal.h
+++ b/src/vte/vteterminal.h
@@ -457,6 +457,10 @@ glong vte_terminal_get_column_count(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
_VTE_PUBLIC
const char *vte_terminal_get_window_title(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
_VTE_PUBLIC
+const char *vte_terminal_get_current_container_name(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
+_VTE_PUBLIC
+const char *vte_terminal_get_current_container_runtime(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
+_VTE_PUBLIC
const char *vte_terminal_get_current_directory_uri(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
_VTE_PUBLIC
const char *vte_terminal_get_current_file_uri(VteTerminal *terminal) _VTE_GNUC_NONNULL(1);
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index be3304027c1b..94afe360933d 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -478,6 +478,12 @@ vte_terminal_get_property (GObject *object,
case PROP_CURSOR_BLINK_MODE:
g_value_set_enum (value, vte_terminal_get_cursor_blink_mode (terminal));
break;
+ case PROP_CURRENT_CONTAINER_NAME:
+ g_value_set_string (value, vte_terminal_get_current_container_name (terminal));
+ break;
+ case PROP_CURRENT_CONTAINER_RUNTIME:
+ g_value_set_string (value, vte_terminal_get_current_container_runtime (terminal));
+ break;
case PROP_CURRENT_DIRECTORY_URI:
g_value_set_string (value, vte_terminal_get_current_directory_uri (terminal));
break;
@@ -1647,6 +1653,27 @@ vte_terminal_class_init(VteTerminalClass *klass)
NULL,
(GParamFlags) (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
+ /**
+ * VteTerminal:current-container-name:
+ *
+ * The name of the current container, or %NULL if unset.
+ */
+ pspecs[PROP_CURRENT_CONTAINER_NAME] =
+ g_param_spec_string ("current-container-name", NULL, NULL,
+ NULL,
+ (GParamFlags) (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
+
+ /**
+ * VteTerminal:current-container-runtime:
+ *
+ * The name of the runtime toolset used to set up the current
+ * container, or %NULL if unset.
+ */
+ pspecs[PROP_CURRENT_CONTAINER_RUNTIME] =
+ g_param_spec_string ("current-container-runtime", NULL, NULL,
+ NULL,
+ (GParamFlags) (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
+
/**
* VteTerminal:current-directory-uri:
*
@@ -3522,6 +3549,44 @@ vte_terminal_get_column_count(VteTerminal *terminal)
return IMPL(terminal)->m_column_count;
}
+/**
+ * vte_terminal_get_current_container_name:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: (nullable) (transfer none): the name of the current
+ * container, or %NULL
+ */
+const char *
+vte_terminal_get_current_container_name(VteTerminal *terminal)
+{
+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+ auto impl = IMPL(terminal);
+ if (impl->m_containers.empty())
+ return NULL;
+
+ const VteContainer &container = impl->m_containers.top();
+ return container.m_name.c_str();
+}
+
+/**
+ * vte_terminal_get_current_container_runtime:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: (nullable) (transfer none): the name of the runtime
+ * toolset used to set up the current container, or %NULL
+ */
+const char *
+vte_terminal_get_current_container_runtime(VteTerminal *terminal)
+{
+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+ auto impl = IMPL(terminal);
+ if (impl->m_containers.empty())
+ return NULL;
+
+ const VteContainer &container = impl->m_containers.top();
+ return container.m_runtime.c_str();
+}
+
/**
* vte_terminal_get_current_directory_uri:
* @terminal: a #VteTerminal
diff --git a/src/vtegtk.hh b/src/vtegtk.hh
index b2c9edfa8246..d97e0d66378c 100644
--- a/src/vtegtk.hh
+++ b/src/vtegtk.hh
@@ -74,6 +74,8 @@ enum {
PROP_CJK_AMBIGUOUS_WIDTH,
PROP_CURSOR_BLINK_MODE,
PROP_CURSOR_SHAPE,
+ PROP_CURRENT_CONTAINER_NAME,
+ PROP_CURRENT_CONTAINER_RUNTIME,
PROP_CURRENT_DIRECTORY_URI,
PROP_CURRENT_FILE_URI,
PROP_DELETE_BINDING,
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 17c844137e31..7c790adc9e6e 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -40,6 +40,7 @@
#include <list>
#include <queue>
+#include <stack>
#include <string>
#include <vector>
@@ -109,6 +110,18 @@ typedef enum _VteCharacterReplacement {
VTE_CHARACTER_REPLACEMENT_BRITISH
} VteCharacterReplacement;
+struct VteContainer {
+public:
+ VteContainer(const std::string &name, const std::string &runtime) :
+ m_name{name},
+ m_runtime{runtime}
+ {
+ }
+
+ std::string m_name;
+ std::string m_runtime;
+};
+
typedef struct _VtePaletteColor {
struct {
vte::color::rgb color;
@@ -540,6 +553,9 @@ public:
gboolean m_cursor_moved_pending;
gboolean m_contents_changed_pending;
+ bool m_containers_changed{false};
+ std::stack<VteContainer> m_containers;
+
/* desktop notification */
gboolean m_notification_received;
std::string m_notification_summary;
diff --git a/src/vteseq.cc b/src/vteseq.cc
index fbbf4f032f48..e7b4d0d32bfe 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -1343,6 +1343,37 @@ Terminal::handle_urxvt_extension(vte::parser::Sequence const& seq,
return;
}
+ if (*token == "container") {
+ ++token;
+
+ if (token == endtoken)
+ return;
+
+ const std::string sub_command = *token;
+ ++token;
+
+ if (sub_command == "pop") {
+ if (!m_containers.empty()) {
+ m_containers.pop();
+ m_containers_changed = true;
+ }
+ } else if (sub_command == "push") {
+ if (token == endtoken)
+ return;
+
+ const std::string name = *token;
+ ++token;
+
+ if (token == endtoken)
+ return;
+
+ const std::string runtime = *token;
+
+ m_containers.emplace(name, runtime);
+ m_containers_changed = true;
+ }
+ }
+
if (*token == "notify") {
++token;
--
2.20.1

View file

@ -1,11 +1,11 @@
%global apiver 2.91
%global gnutls_version 3.2.7
%global gtk3_version 3.8.0
%global gtk3_version 3.19.5
%global pcre2_version 10.21
Name: vte291
Version: 0.56.0
Version: 0.56.4
Release: 1%{?dist}
Summary: Terminal emulator library
@ -15,7 +15,7 @@ Source0: http://download.gnome.org/sources/vte/0.56/vte-%{version}.tar.xz
# https://bugzilla.gnome.org/show_bug.cgi?id=711059
# https://bugzilla.redhat.com/show_bug.cgi?id=1103380
Patch100: vte291-command-notify-scroll-speed.patch
Patch100: vte291-cntr-ntfy-scroll.patch
BuildRequires: gcc-c++
BuildRequires: gettext
@ -63,7 +63,7 @@ emulator library.
%prep
%setup -q -n vte-%{version}
%patch100 -p1 -b .command-notify-scroll-speed
%patch100 -p1 -b .cntr-ntfy-scroll
%build
CFLAGS="%optflags -fPIE -DPIE -Wno-nonnull" \
@ -103,6 +103,21 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
%{_sysconfdir}/profile.d/vte.sh
%changelog
* Mon Oct 14 2019 Kalev Lember <klember@redhat.com> - 0.56.4-1
- Update to 0.56.4
* Fri Jun 21 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.56.3-2
- Support tracking the active container inside the terminal
* Tue May 07 2019 Kalev Lember <klember@redhat.com> - 0.56.3-1
- Update to 0.56.3
* Mon May 06 2019 Kalev Lember <klember@redhat.com> - 0.56.2-1
- Update to 0.56.2
* Tue Apr 09 2019 Kalev Lember <klember@redhat.com> - 0.56.1-1
- Update to 0.56.1
* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 0.56.0-1
- Update to 0.56.0