From 201e48c9be3b97b20c1d8440e42cc268705507bb Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 1 Mar 2008 00:09:49 +0000 Subject: [PATCH 1/7] re-order these to make more sense --- terminator | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/terminator b/terminator index acce2c78..e43fefdc 100755 --- a/terminator +++ b/terminator @@ -576,7 +576,7 @@ class TerminatorTerm: return self._box class Terminator: - def __init__ (self, profile, command = None): + def __init__ (self, profile, command = None, fullscreen = False, maximise = False, borderless = False): self.profile = profile self.gconf_client = gconf.client_get_default () self.command = command @@ -599,6 +599,15 @@ class Terminator: self.window.set_property ('allow-shrink', True) + if fullscreen: + self.fullscreen_toggle () + + if maximise: + self.maximize () + + if borderless: + self.window.set_decorated (False) + # Set RGBA colormap if possible so VTE can use real alpha # channels for transparency. screen = self.window.get_screen() @@ -895,18 +904,7 @@ if __name__ == '__main__': del (gconf) gconf = fakegconf () - term = Terminator (options.profile, command) - - # Set the Terminator in fullscreen state or maximize it. - # Fullscreen and maximise are mutually exclusive, with - # fullscreen taking precedence over maximise. - if options.fullscreen: - term.toggle_fullscreen () - elif options.maximise: - term.maximize () - - if options.borderless: - term.window.set_decorated (False) + term = Terminator (options.profile, command, options.fullscreen, options.maximise, options.borderless) gtk.main () From 4b6094fbe532e669baa41d09cc46ab75432cc5d7 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 1 Mar 2008 00:24:14 +0000 Subject: [PATCH 2/7] terminatorrc isn't created by default, so it can be used to override the gnome-terminal profile as well as providing gconf independence for non-gnome users --- terminator | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/terminator b/terminator index e43fefdc..01955377 100755 --- a/terminator +++ b/terminator @@ -145,22 +145,23 @@ class TerminatorTerm: if self.profile: self.gconf_client.add_dir (self.profile, gconf.CLIENT_PRELOAD_RECURSIVE) self.gconf_client.notify_add (self.profile, self.on_gconf_notification) - else: - if os.path.exists (pwd.getpwuid(os.getuid ())[5] + "/.terminatorrc"): - f = open (pwd.getpwuid (os.getuid ())[5] + "/.terminatorrc") - config = f.readlines () - f.close () - for line in config: - try: - line = line.split("#")[0] - line = line.strip () - if line: - (key,value) = line.split ("=") - print >> sys.stderr, _('''Overriding setting '%s' from default value '%s' to: '%s' ''')%(key.strip (), self.defaults[key.strip ()], value.strip ()) - self.defaults[key.strip ()] = value.strip () - except: + if os.path.exists (pwd.getpwuid(os.getuid ())[5] + "/.terminatorrc"): + f = open (pwd.getpwuid (os.getuid ())[5] + "/.terminatorrc") + config = f.readlines () + f.close () + + for line in config: + try: + line = line.strip () + if line[0] == '#': pass + elif line: + (key,value) = line.split ("=") + print >> sys.stderr, _('''Overriding setting '%s' from value '%s' to: '%s' ''')%(key.strip (), self.defaults[key.strip ()], value.strip ()) + self.defaults[key.strip ()] = value.strip () + except: + pass self.gconf_client.add_dir ('/apps/metacity/general', gconf.CLIENT_PRELOAD_RECURSIVE) self.gconf_client.notify_add ('/apps/metacity/general/focus_mode', self.on_gconf_notification) From 8f9b2b18043f5f561fb4109cf818da14f38a8e23 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 1 Mar 2008 01:14:32 +0000 Subject: [PATCH 3/7] Integrate modified patch from chantra with some changes so titlebars and title tooltips are configurable via terminatorrc (or in theory gconf, but that's a violation of a schema violation --- terminator | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/terminator b/terminator index 01955377..c296262b 100755 --- a/terminator +++ b/terminator @@ -96,6 +96,8 @@ class TerminatorTerm: defaults = { 'gt_dir' : '/apps/gnome-terminal', '_profile_dir' : '%s/profiles', + 'titlebars' : True, + 'titletips' : False, 'allow_bold' : True, 'silent_bell' : True, 'background_color' : '#000000', @@ -175,26 +177,39 @@ class TerminatorTerm: self.reconfigure_vte () self._vte.show () - self._box = gtk.HBox () - self._box.show () + #self._box = gtk.HBox () + #self._box.show () + self._termbox = gtk.HBox () + self._termbox.show() + + if self.defaults['titlebars']: + self._title = gtk.Label() + self._title.show() + self._box = gtk.VBox () + self._box.show() + self._box.pack_start(self._title, False) + self._box.pack_start(self._termbox) + else: + self._box = self._termbox + self._scrollbar = gtk.VScrollbar (self._vte.get_adjustment ()) if self.scrollbar_position != "hidden" and self.scrollbar_position != "disabled": self._scrollbar.show () if self.scrollbar_position == 'right': - packfunc = self._box.pack_start + packfunc = self._termbox.pack_start else: - packfunc = self._box.pack_end + packfunc = self._termbox.pack_end packfunc (self._vte) packfunc (self._scrollbar, False) - + self._vte.connect ("key-press-event", self.on_vte_key_press) self._vte.connect ("button-press-event", self.on_vte_button_press) self._vte.connect ("popup-menu", self.on_vte_popup_menu) self._vte.connect ("composited-changed", self.on_composited_changed) -# self._vte.connect ("window-title-changed", self.on_vte_title_change) + self._vte.connect ("window-title-changed", self.on_vte_title_change) exit_action = self.gconf_client.get_string (self.profile + "/exit_action") exit_action = self.reconf ("exit_action") @@ -422,6 +437,11 @@ class TerminatorTerm: else: self._scrollbar.show () + def do_title_toggle (self): + if self._title.get_property ('visible'): + self._title.hide () + else: + self._title.show () #keybindings for the individual splited terminals (affects only the #the selected terminal) def on_vte_key_press (self, term, event): @@ -547,6 +567,11 @@ class TerminatorTerm: item.set_active (self._scrollbar.get_property ('visible')) item.connect ("toggled", lambda menu_item: self.do_scrollbar_toggle ()) menu.append (item) + + item = gtk.CheckMenuItem (_("Show Title")) + item.set_active (self._title.get_property ('visible')) + item.connect ("toggled", lambda menu_item: self.do_title_toggle ()) + menu.append (item) item = gtk.MenuItem () menu.append (item) @@ -570,8 +595,11 @@ class TerminatorTerm: return menu def on_vte_title_change(self, vte): - vte.set_property ("has-tooltip", True) - vte.set_property ("tooltip-text", vte.get_window_title ()) + if self.reconf ('titletips'): + vte.set_property ("has-tooltip", True) + vte.set_property ("tooltip-text", vte.get_window_title ()) + if self.reconf ('titlebars'): + self._title.set_text(vte.get_window_title ()) def get_box (self): return self._box From 031685268e5b86cb55d48929312fc7a856bb4d83 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 1 Mar 2008 01:15:34 +0000 Subject: [PATCH 4/7] Allow dodgy gconf use of this too --- terminator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminator b/terminator index c296262b..ea4877cf 100755 --- a/terminator +++ b/terminator @@ -183,7 +183,7 @@ class TerminatorTerm: self._termbox = gtk.HBox () self._termbox.show() - if self.defaults['titlebars']: + if self.reconf('titlebars'): self._title = gtk.Label() self._title.show() self._box = gtk.VBox () From 92ce9fe4b3ee06385b542d5b1dc2937b2283bbcb Mon Sep 17 00:00:00 2001 From: Emmanuel Bretelle Date: Sun, 2 Mar 2008 11:46:21 +0000 Subject: [PATCH 5/7] Fixes: * titlebars and titletips was not read properly from ~/.terminatorrc when a ~/.terminatorrc is a boolean, bool(value) has tobe used while comparing to True/False as value is read as a string * If titlebars=False, the label is still created but hidden, by doing so, one can show the title at anytime by right-clicking and enabling the title on a per term basis Added: * Terminator window title changes to: "Terminator: " --- terminator | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/terminator b/terminator index ea4877cf..648315f2 100755 --- a/terminator +++ b/terminator @@ -177,21 +177,19 @@ class TerminatorTerm: self.reconfigure_vte () self._vte.show () - #self._box = gtk.HBox () - #self._box.show () - self._termbox = gtk.HBox () self._termbox.show() - - if self.reconf('titlebars'): - self._title = gtk.Label() - self._title.show() - self._box = gtk.VBox () - self._box.show() - self._box.pack_start(self._title, False) - self._box.pack_start(self._termbox) + self._title = gtk.Label() + self._title.show() + self._box = gtk.VBox () + self._box.show() + self._box.pack_start(self._title, False) + self._box.pack_start(self._termbox) + + if bool(self.reconf('titlebars')): + self._title.hide() else: - self._box = self._termbox + self._title.show() self._scrollbar = gtk.VScrollbar (self._vte.get_adjustment ()) if self.scrollbar_position != "hidden" and self.scrollbar_position != "disabled": @@ -210,6 +208,7 @@ class TerminatorTerm: self._vte.connect ("popup-menu", self.on_vte_popup_menu) self._vte.connect ("composited-changed", self.on_composited_changed) self._vte.connect ("window-title-changed", self.on_vte_title_change) + self._vte.connect ("grab-focus", self.on_vte_focus) exit_action = self.gconf_client.get_string (self.profile + "/exit_action") exit_action = self.reconf ("exit_action") @@ -595,14 +594,19 @@ class TerminatorTerm: return menu def on_vte_title_change(self, vte): - if self.reconf ('titletips'): + if bool(self.reconf ('titletips')): vte.set_property ("has-tooltip", True) vte.set_property ("tooltip-text", vte.get_window_title ()) - if self.reconf ('titlebars'): - self._title.set_text(vte.get_window_title ()) + #set the title anyhow, titlebars setting only show/hide the label + self._title.set_text(vte.get_window_title ()) + self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ()) def get_box (self): return self._box + + def on_vte_focus(self, vte): + if vte.get_window_title (): + self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ()) class Terminator: def __init__ (self, profile, command = None, fullscreen = False, maximise = False, borderless = False): @@ -724,7 +728,9 @@ class Terminator: if not self.on_delete_event (window, gtk.gdk.Event (gtk.gdk.DELETE)): self.on_destroy_event (window, gtk.gdk.Event (gtk.gdk.DESTROY)) - + def set_window_title(self, title): + self.window.set_title(title) + def splitaxis (self, widget, vertical=True): """ Split the provided widget on the horizontal or vertical axis. """ From 679518b2881eb89307c26a5aea212fd552f1dd47 Mon Sep 17 00:00:00 2001 From: Emmanuel Bretelle Date: Sun, 2 Mar 2008 12:11:34 +0000 Subject: [PATCH 6/7] really fixed this time :) bool('False') is True, therefore we can't just use bool(value) but we need assign a True or False value when reading terminatorrc if value is "True" or "False" --- terminator | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/terminator b/terminator index 648315f2..a71af6b4 100755 --- a/terminator +++ b/terminator @@ -161,7 +161,12 @@ class TerminatorTerm: elif line: (key,value) = line.split ("=") print >> sys.stderr, _('''Overriding setting '%s' from value '%s' to: '%s' ''')%(key.strip (), self.defaults[key.strip ()], value.strip ()) - self.defaults[key.strip ()] = value.strip () + if value.strip() == "True": + self.defaults[key.strip ()] = True + elif value.strip() == "False": + self.defaults[key.strip ()] = False + else: + self.defaults[key.strip ()] = value.strip () except: pass @@ -180,16 +185,14 @@ class TerminatorTerm: self._termbox = gtk.HBox () self._termbox.show() self._title = gtk.Label() - self._title.show() self._box = gtk.VBox () self._box.show() self._box.pack_start(self._title, False) self._box.pack_start(self._termbox) - - if bool(self.reconf('titlebars')): - self._title.hide() - else: + if self.reconf('titlebars'): self._title.show() + else: + self._title.hide() self._scrollbar = gtk.VScrollbar (self._vte.get_adjustment ()) if self.scrollbar_position != "hidden" and self.scrollbar_position != "disabled": @@ -594,19 +597,19 @@ class TerminatorTerm: return menu def on_vte_title_change(self, vte): - if bool(self.reconf ('titletips')): + if self.reconf ('titletips'): vte.set_property ("has-tooltip", True) vte.set_property ("tooltip-text", vte.get_window_title ()) #set the title anyhow, titlebars setting only show/hide the label self._title.set_text(vte.get_window_title ()) self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ()) - def get_box (self): - return self._box - def on_vte_focus(self, vte): if vte.get_window_title (): self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ()) + + def get_box (self): + return self._box class Terminator: def __init__ (self, profile, command = None, fullscreen = False, maximise = False, borderless = False): From 847ee62684801d28ed21de72f22807c3c698e8d9 Mon Sep 17 00:00:00 2001 From: Emmanuel Bretelle Date: Sun, 2 Mar 2008 12:44:08 +0000 Subject: [PATCH 7/7] Highlight focused term support --- terminator | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/terminator b/terminator index a71af6b4..110401d1 100755 --- a/terminator +++ b/terminator @@ -185,14 +185,17 @@ class TerminatorTerm: self._termbox = gtk.HBox () self._termbox.show() self._title = gtk.Label() + self._title.show() + self._titlebox = gtk.EventBox() + self._titlebox.add(self._title) self._box = gtk.VBox () self._box.show() - self._box.pack_start(self._title, False) + self._box.pack_start(self._titlebox, False) self._box.pack_start(self._termbox) if self.reconf('titlebars'): - self._title.show() + self._titlebox.show() else: - self._title.hide() + self._titlebox.hide() self._scrollbar = gtk.VScrollbar (self._vte.get_adjustment ()) if self.scrollbar_position != "hidden" and self.scrollbar_position != "disabled": @@ -212,6 +215,8 @@ class TerminatorTerm: self._vte.connect ("composited-changed", self.on_composited_changed) self._vte.connect ("window-title-changed", self.on_vte_title_change) self._vte.connect ("grab-focus", self.on_vte_focus) + self._vte.connect ("focus-out-event", self.on_vte_focus_out) + self._vte.connect ("focus-in-event", self.on_vte_focus_in) exit_action = self.gconf_client.get_string (self.profile + "/exit_action") exit_action = self.reconf ("exit_action") @@ -604,6 +609,16 @@ class TerminatorTerm: self._title.set_text(vte.get_window_title ()) self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ()) + def on_vte_focus_in(self, vte, event): + self._titlebox.modify_bg(gtk.STATE_NORMAL,self.terminator.window.get_style().bg[gtk.STATE_SELECTED]) + self._title.modify_fg(gtk.STATE_NORMAL, self.terminator.window.get_style().fg[gtk.STATE_SELECTED]) + return + + def on_vte_focus_out(self, vte, event): + self._titlebox.modify_bg(gtk.STATE_NORMAL, self.terminator.window.get_style().bg[gtk.STATE_NORMAL]) + self._title.modify_fg(gtk.STATE_NORMAL, self.terminator.window.get_style().fg[gtk.STATE_NORMAL]) + return + def on_vte_focus(self, vte): if vte.get_window_title (): self.terminator.set_window_title("Terminator: %s" %vte.get_window_title ())