From 3d63c915175a8b4955af1cf575a35127177894c8 Mon Sep 17 00:00:00 2001 From: Matthew Rose Date: Sat, 19 Nov 2022 22:50:41 -0500 Subject: [PATCH 1/2] [New Plugin] Plugin that inserts the name This plugin inserts the name of the terminal, as determined by Terminal.get_window_title() to all open terminals. Fixes #540 --- terminatorlib/plugins/insert_term_name.py | 20 ++++++++++++++++++++ terminatorlib/terminal.py | 2 ++ terminatorlib/terminator.py | 10 ++++++++++ 3 files changed, 32 insertions(+) create mode 100644 terminatorlib/plugins/insert_term_name.py diff --git a/terminatorlib/plugins/insert_term_name.py b/terminatorlib/plugins/insert_term_name.py new file mode 100644 index 00000000..fa35e39a --- /dev/null +++ b/terminatorlib/plugins/insert_term_name.py @@ -0,0 +1,20 @@ +from gi.repository import Gtk + +import terminatorlib.plugin as plugin +from terminatorlib.terminator import Terminator + +AVAILABLE = ['InsertTermName'] + +class InsertTermName(plugin.MenuItem): + capabilities = ['terminal_menu'] + config = None + + def __init__(self): + # self.connect_signals() + plugin.MenuItem.__init__(self) + + def callback(self, menuitems, menu, terminal): + item = Gtk.MenuItem.new_with_label('Insert terminal name') + item.connect('activate', lambda x: terminal.emit('insert-term-name')) + menuitems.append(item) + diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index cadd9c25..57317746 100644 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -40,6 +40,7 @@ class Terminal(Gtk.VBox): 'close-term': (GObject.SignalFlags.RUN_LAST, None, ()), 'title-change': (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_STRING,)), + 'insert-term-name': (GObject.SignalFlags.RUN_LAST, None, ()), 'enumerate': (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_INT,)), 'group-tab': (GObject.SignalFlags.RUN_LAST, None, ()), @@ -126,6 +127,7 @@ class Terminal(Gtk.VBox): # FIXME: Surely these should happen in Terminator::register_terminal()? self.connect('enumerate', self.terminator.do_enumerate) + self.connect('insert-term-name', self.terminator.do_insert_term_name) self.connect('focus-in', self.terminator.focus_changed) self.connect('focus-out', self.terminator.focus_left) diff --git a/terminatorlib/terminator.py b/terminatorlib/terminator.py index 0fc58d56..0fcd111b 100644 --- a/terminatorlib/terminator.py +++ b/terminatorlib/terminator.py @@ -585,6 +585,16 @@ class Terminator(Borg): idx = terminals.index(term) term.feed(numstr.encode() % (idx + 1)) + def do_insert_term_name(self, widget): + terminals = [] + for window in self.windows: + containers, win_terminals = enumerate_descendants(window) + terminals.extend(win_terminals) + + for term in self.get_target_terms(widget): + name = term.titlebar.get_custom_string() or term.get_window_title() + term.feed(name) + def get_sibling_terms(self, widget): termset = [] for term in self.terminals: From 35e7e026cde98726010f533a8558d94de691500f Mon Sep 17 00:00:00 2001 From: Matthew Rose Date: Sun, 20 Nov 2022 13:42:20 -0500 Subject: [PATCH 2/2] add "Insert Terminal Name" to the group menu --- terminatorlib/plugins/insert_term_name.py | 2 -- terminatorlib/terminal.py | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/terminatorlib/plugins/insert_term_name.py b/terminatorlib/plugins/insert_term_name.py index fa35e39a..f85b1eab 100644 --- a/terminatorlib/plugins/insert_term_name.py +++ b/terminatorlib/plugins/insert_term_name.py @@ -1,7 +1,6 @@ from gi.repository import Gtk import terminatorlib.plugin as plugin -from terminatorlib.terminator import Terminator AVAILABLE = ['InsertTermName'] @@ -10,7 +9,6 @@ class InsertTermName(plugin.MenuItem): config = None def __init__(self): - # self.connect_signals() plugin.MenuItem.__init__(self) def callback(self, menuitems, menu, terminal): diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index 57317746..ded0f4b5 100644 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -587,6 +587,10 @@ class Terminal(Gtk.VBox): item.connect('activate', lambda x: self.emit('enumerate', True)) menu.append(item) + item = Gtk.MenuItem.new_with_mnemonic(_('Insert terminal _name')) + item.connect('activate', lambda x: self.emit('insert-term-name')) + menu.append(item) + return(menu) def set_group(self, _item, name):