diff --git a/ChangeLog b/ChangeLog index 3939c212..7e180444 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +terminator 0.9: + * Added support for ~/.terminatorrc + * Added kwybindings for terms size and scrollbar manipulation. Thanks + Emmanuel Bretelle. + + terminator 0.8.1: * Fixed ChangeLog * Revert URI matching behaviour to the same as gnome-terminal @@ -17,49 +23,53 @@ terminator 0.8: terminator 0.7: * Fullscreen support, via a patch from Thomas Meire. Closes LP #178914 - * Improved behaviour when closing terminals/window. Result of work by Thomas - Meire. Closes LP #161121 - * Freedesktop .desktop file and appropriate setup.py entry for installing - it. Closes LP #178943 + * Improved behaviour when closing terminals/window. Result of work by + Thomas Meire. Closes LP #161121 + * Freedesktop .desktop file and appropriate setup.py entry for + installing it. Closes LP #178943 * Translation support, with Spanish, Dutch, Italian and Romanian translations. Closes LP #161120 - * Stop clashing with gnome-terminal's paste shortcut key, move horizontal - splitting shortcut too, and add support for gnome-terminal's copy/paste - shortcuts. Closes LP #179310 - * Borderless support (tell your window manager not to decorate Terminator) + * Stop clashing with gnome-terminal's paste shortcut key, move + horizontal splitting shortcut too, and add support for + gnome-terminal's copy/paste shortcuts. Closes LP #179310 + * Borderless support (tell your window manager not to decorate + Terminator) * Font zooming support. Closes LP #178792 * Set the VTE widget to have a tooltip of its window title. This may be reverted if it is annoying - * Support GNOME Terminal profile settings for backgrounds. Closes LP #180717 - * Use our own default values if there is no gnome-terminal profile. Closes - LP #179315 + * Support GNOME Terminal profile settings for backgrounds. + Closes LP #180717 + * Use our own default values if there is no gnome-terminal profile. + Closes LP #179315 terminator 0.6: * Use new gnome-terminal gconf key to find available profiles - * Move a few more hardcoded items to our settings array (not that it can be - overridden yet) - * Fix handling of exiting child processes to properly track gnome-terminal - settings - * Add Ctrl-Tab and Ctrl-Shift-Tab as options for switching terminals (patch - from Kees Cook) - * Stop using parent.show_all() when removing/adding a terminal and instead - show the actual widgets that have been created. This prevents scrollbars - from re-appearing after they have been hidden + * Move a few more hardcoded items to our settings array (not that + it can be overridden yet) + * Fix handling of exiting child processes to properly track + gnome-terminal settings + * Add Ctrl-Tab and Ctrl-Shift-Tab as options for switching terminals + (patch from Kees Cook) + * Stop using parent.show_all() when removing/adding a terminal and + instead show the actual widgets that have been created. This + prevents scrollbars from re-appearing after they have been hidden terminator 0.5: - * The terminator window is now able to resize smaller, thanks to Kees Cook - for the fix. - * Email addresses are now matched and opened correctly. Closes LP #139015 + * The terminator window is now able to resize smaller, + thanks to Kees Cook for the fix. + * Email addresses are now matched and opened correctly. + Closes LP #139015 * Double clicking a URL now selects the whole URL. Closes LP #129533 - * The default behaviour is now to open a single 80x24 terminal rather than - four terminals in a maximised window. Closes LP #126219 and should force - me to fix LP #87720 - * There are now hotkeys for switching between terminals, splitting terminals - and closing them. Closes LP #149931 and #148622(thanks to Huanghe for - patches for this) - * If there is only one terminal, closing it will not produce a quit message + * The default behaviour is now to open a single 80x24 terminal rather + than four terminals in a maximised window. Closes LP #126219 and + should force me to fix LP #87720 + * There are now hotkeys for switching between terminals, splitting + terminals and closing them. Closes LP #149931 and #148622(thanks + to Huanghe for patches for this) + * If there is only one terminal, closing it will not produce a quit + message terminator 0.4: @@ -76,8 +86,8 @@ terminator 0.4: terminator 0.3: - * Implemented terminal closing, which correctly reparents its sibling (if - any) + * Implemented terminal closing, which correctly reparents its sibling + (if any) * Updated documentation to reflect a serious bug with shells that aren't bash (or at least zsh) diff --git a/TODO b/TODO new file mode 100644 index 00000000..3e66cca9 --- /dev/null +++ b/TODO @@ -0,0 +1,2 @@ +* Edit doc/terminatorrc.5 manpage to contain the information about the options +* Write a Tab feature for terminator diff --git a/doc/terminator.1 b/doc/terminator.1 index cb5b8ad6..5a3d5366 100644 --- a/doc/terminator.1 +++ b/doc/terminator.1 @@ -38,10 +38,10 @@ Terminator window (good with \-m) .TP .B \-p, \-\-profile=PROFILE Loads the GNOME Terminal profile named PROFILE -.TP +.TP .B \-e, \-\-command=COMMAND Runs the specified command instead of your default shell or profile specified command -.TP +.TP .B \-x, \-\-execute=COMMAND [ARGS] Runs \fBthe rest of the command line\fR instead of your default shell or profile specified command. .SH "KEYBINDINGS" @@ -53,6 +53,21 @@ Split terminals H\fBo\fRrizontally. .B Ctrl+Shift+E Split terminals V\fBe\fRrtically. .TP +.B Ctrl+Shift+Right +Move first parent HPaned handle \fBRight\fR. +.TP +.B Ctrl+Shift+Left +Move first parent HPaned handle \fBLeft\fR. +.TP +.B Ctrl+Shift+Up +Move first VPaned handle \fBUp\fR. +.TP +.B Ctrl+Shift+Down +Move first VPaned handle \fBDown\fR. +.TP +.B Ctrl+Shift+S +Hide/Show \fBS\fRcrollbar. +.TP .B Ctrl+Shift+N Move to \fBn\fRext terminal. .TP @@ -64,11 +79,11 @@ Close the current terminal. .TP .B Ctrl+Shift+Q Close the current window. -.TP +.TP .B F11 Toggle fullscreen .SH "SEE ALSO" -.BR gnome\-terminal(1), +.BR gnome\-terminal(1),terminatorrc(5) .SH "AUTHOR" Terminator was written by Chris Jones .PP diff --git a/doc/terminatorrc.5 b/doc/terminatorrc.5 new file mode 100644 index 00000000..22d0428c --- /dev/null +++ b/doc/terminatorrc.5 @@ -0,0 +1,82 @@ +.TH "TERMINATORRC" "5" "Feb 22, 2008" "Nicolas Valcarcel " "" +.SH "NAME" +~/.terminatorrc \- the config file for terminator terminal emulator. +.SH "DESCRIPTION" +This manual page documents briefly the +.B termiatorrc config file. +.PP +\fBterminatorrc\fP is an optional file for configure the terminator termial emulator. It is used if there is no gconf PROFILE on the system for configuring the options of the terminal(s). +.SH "OPTIONS" +The options are defined one per line as \fB'OPTION = VALUE'\fR. The options are described below: + +.TP +.B gt_dir +Default value: \fB/apps/gnome\-terminal\fR +.TP +.B _profile_dir +Default value: \fB%s/profiles\fR +.TP +.B allow_bold +Boolean value. Default value: \fBTrue\fR +.TP +.B silent_bell +Boolean value. Default value: \fBTrue\fR +.TP +.B background_color +Heximal RGB value for the background color. Default value: \fB#000000\fR +.TP +.B background_darkness +Number for the background darkness. Default value: \fB0.5\fR +.TP +.B background_type +Default value: \fBsolid\fR +.TP +.B backspace_binding +Default value: \fBascii\-del\fR +.TP +.B delete_binding +Default value: \fBdelete\-sequence\fR +.TP +.B cursor_blink +Boolean value. Default value: \fBFalse\fR +.TP +.B emulation +Default value: \fBxterm\fR +.TP +.B font +Value for the font time and size in the format \fBFONTNAME SIZENUMBER\fR. Default value: \fBSerif 10\fR +.TP +.B foreground_color +Hexadecimal RGB value for the font color. Default value: \fB#AAAAAA\fR +.TP +.B scrollbar_position +Scrollbar position. Options available: right, left and hidden. Default value: \fBright\fR +.TP +.B scroll_background +Boolean value. Default value: \fBTrue\fR +.TP +.B scroll_on_keystroke +Boolean value. Default value: \fBFalse\fR +.TP +.B scroll_on_output +Boolean value. Default value: \fBFalse\fR +.TP +.B scrollback_lines +Number of lines stored for the scrollbar. Default value: \fB100\fR +.TP +.B focus +Default value: \fBsloppy\fR +.TP +.B child_restart +Default value: \fBFalse\fR +.TP +.B palette +Default value: \fB#000000000000:#CDCD00000000:#0000CDCD0000:#CDCDCDCD0000:#30BF30BFA38E:#A53C212FA53C:#0000CDCDCDCD:#FAFAEBEBD7D7:#404040404040:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#00000000FFFF:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF\fR +.TP +.B word_chars +Default value: \fB\-A\-Za\-z0\-9,./?%&#:_\fR +.TP +.B mouse_autohide +Boolean value. Default value: \fBTrue\fR +.SH "SEE ALSO" +.BR gnome\-terminal(1), diff --git a/terminator b/terminator index 3e26b75a..02a1fdbc 100755 --- a/terminator +++ b/terminator @@ -161,6 +161,7 @@ class TerminatorTerm: 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) exit_action = self.gconf_client.get_string (self.profile + "/exit_action") @@ -291,8 +292,13 @@ class TerminatorTerm: self._vte.set_scroll_background (self.reconf ('scroll_background')) self._vte.set_background_transparent (False) if background_type == "transparent": - self._vte.set_background_transparent (True) - self._vte.set_background_saturation (1 - (self.reconf ('background_darkness'))) + darkness = self.reconf ('background_darkness') + if self._vte.is_composited(): + self._vte.set_background_transparent (False) + self._vte.set_opacity(int(darkness * 65535)) + else: + self._vte.set_background_transparent (True) + self._vte.set_background_saturation (1 - darkness) colors = palette.split (':') palette = [] @@ -340,6 +346,9 @@ class TerminatorTerm: def on_gconf_notification (self, client, cnxn_id, entry, what): self.reconfigure_vte () + def on_composited_changed (self, widget): + self.reconfigure_vte () + def on_vte_button_press (self, term, event): # Left mouse button should transfer focus to this vte widget if event.button == 1: @@ -404,6 +413,12 @@ class TerminatorTerm: elif keyname == 'V': self._vte.paste_clipboard () return (True) + elif keyname == 'S': + self.do_scrollbar_toggle () + return (True) + elif keyname in ('Up', 'Down', 'Left', 'Right'): + self.terminator.resizeterm (self, keyname) + return (True) if keyname and (keyname == 'Tab' or keyname.endswith('_Tab')): if event.state == gtk.gdk.CONTROL_MASK: @@ -477,7 +492,7 @@ class TerminatorTerm: item = gtk.MenuItem () menu.append (item) - item = gtk.CheckMenuItem (_("Show scrollbar")) + item = gtk.CheckMenuItem (_("Show _scrollbar")) item.set_active (self._scrollbar.get_property ('visible')) item.connect ("toggled", lambda menu_item: self.do_scrollbar_toggle ()) menu.append (item) @@ -534,6 +549,13 @@ class Terminator: self.window.set_property ('allow-shrink', True) + # Set RGBA colormap if possible so VTE can use real alpha + # channels for transparency. + screen = self.window.get_screen() + colormap = screen.get_rgba_colormap() + if colormap: + self.window.set_colormap(colormap) + # Start out with just one terminal # FIXME: This should be really be decided from some kind of profile term = (TerminatorTerm (self, self.profile, self.command)) @@ -728,7 +750,60 @@ class Terminator: #self.window.set_title(self.term_list[previous]._vte.get_window_title()) self.term_list[previous]._vte.grab_focus () + + + + def resizeterm (self, widget, keyname): + vertical = False + if keyname in ('Up', 'Down'): + vertical = True + elif keyname in ('Left', 'Right'): + vertical = False + else: + return + parent = self.get_first_parent_paned(widget.get_box (),vertical) + if parent == None: + return + + #We have a corresponding parent pane + # + #allocation = parent.get_allocation() + + if keyname in ('Up', 'Down'): + maxi = parent.get_child1().get_allocation().height + parent.get_child2().get_allocation().height - 1 + + else: + maxi = parent.get_child1().get_allocation().width + parent.get_child2().get_allocation().width - 1 + move = 10 + if keyname in ('Up', 'Left'): + move = -10 + + + move = max(2, parent.get_position() + move) + move = min(maxi, move) + + parent.set_position(move) + + + def get_first_parent_paned (self, widget, vertical = None): + """This method returns the first parent pane of a widget. + if vertical is True returns the first VPaned + if vertical is False return the first Hpaned + if is None return the First Paned""" + if isinstance (widget, gtk.Window): + return None + parent = widget.get_parent() + if isinstance (parent, gtk.Paned) and vertical is None: + return parent + if isinstance (parent, gtk.VPaned) and vertical: + return parent + elif isinstance (parent, gtk.HPaned) and not vertical: + return parent + return self.get_first_parent_paned(parent, vertical) + + + def execute_cb (option, opt, value, parser): assert value is None value = []