diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index cadd9c25..401886bf 100644 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -879,7 +879,13 @@ class Terminal(Gtk.VBox): focused=self.get_toplevel().get_focussed_terminal() if focused in targets: targets.remove(focused) if self != focused: - if self.group == focused.group: + if focused.group is None and self.group is None: + # Create a new group and assign currently focused + # terminal to this group + new_group = self.terminator.new_random_group() + focused.set_group(None, new_group) + focused.titlebar.update() + elif self.group == focused.group: new_group = None else: new_group = focused.group diff --git a/terminatorlib/terminator.py b/terminatorlib/terminator.py index 0fc58d56..e5274d47 100644 --- a/terminatorlib/terminator.py +++ b/terminatorlib/terminator.py @@ -8,6 +8,8 @@ import gi gi.require_version('Vte', '2.91') from gi.repository import Gtk, Gdk, Vte from gi.repository.GLib import GError +import itertools +import random from . import borg from .borg import Borg @@ -16,6 +18,7 @@ from .keybindings import Keybindings from .util import dbg, err, enumerate_descendants from .factory import Factory from .version import APP_NAME, APP_VERSION +from .translation import _ try: from gi.repository import GdkX11 @@ -638,4 +641,18 @@ class Terminator(Borg): def zoom_orig_all(self): for term in self.terminals: term.zoom_orig() + + def new_random_group(self): + defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'), + _('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'), + _('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'), + _('Chi'),_('Psi'),_('Omega')] + currentgroups=set(self.groups) + for i in range(1,4): + defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i)))) + freegroups = list(defaultgroups-currentgroups) + if freegroups: + return random.choice(freegroups) + return '' + # vim: set expandtab ts=4 sw=4: diff --git a/terminatorlib/titlebar.py b/terminatorlib/titlebar.py index e651f00c..ee9dfb2c 100644 --- a/terminatorlib/titlebar.py +++ b/terminatorlib/titlebar.py @@ -5,8 +5,6 @@ from gi.repository import Gtk, Gdk from gi.repository import GObject from gi.repository import Pango -import random -import itertools from .version import APP_NAME from .util import dbg @@ -255,19 +253,7 @@ class Titlebar(Gtk.EventBox): if self.terminal.group: self.groupentry.set_text(self.terminal.group) else: - defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'), - _('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'), - _('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'), - _('Chi'),_('Psi'),_('Omega')] - currentgroups=set(self.terminator.groups) - for i in range(1,4): - defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i)))) - freegroups = list(defaultgroups-currentgroups) - if freegroups: - self.groupentry.set_text(random.choice(freegroups)) - break - else: - self.groupentry.set_text('') + self.groupentry.set_text(self.terminator.new_random_group()) self.groupentry.show() self.grouplabel.hide() self.groupentry.grab_focus()