From 3d63c915175a8b4955af1cf575a35127177894c8 Mon Sep 17 00:00:00 2001 From: Matthew Rose Date: Sat, 19 Nov 2022 22:50:41 -0500 Subject: [PATCH] [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: