Arrow MULTI GNOME TERMINAL

THIS IS THE README FILE, YOU CAN ALSO FIND IN EVERY PACKAGE, WRITTEN BY HAL BURGISS

Multi Gnome Terminal
====================

This package contains an extended version of gnome-terminal with 
many, many enhancements over the original. In fact, the list of 
enhancements is longer than gnome-terminal's feature list in 
toto ;-)


Feature Summary
---------------

In addition to the features of gnome-terminal, MGT adds:

     -Multiple terminals opened within the same X window
     -Terminal windows can be split horizontally and vertically
     -Terminals can also be 'bonded'
     -Terminals can be moved to and from other MGT windows
     -Each terminal is 'Tabbed' for easy navigation
     -Notification of terminal buffer change (colors on Tabs)
     -Shading and tinting of the MGT window
     -Configurable key-bindings for MGT features and other uses
     -Configurable 'Commands' to initialize new terminals
     -Adds a Toolbar and Buttonbar, can be hidden or moved
     -Search the scrollback buffer
     -Text 'shadowing' for better contrast on pixmap/transparent 
      Windows
     -A rich set of command line options for opening Tabs, splits, etc.
     -Improved Class handling with many enhancements. Class per Tab 
      or Window.
     -Different Font and/or Foreground Color for Bold Text.
     -Adjust contrast and gamma correction for pixmap backgrounds.
     -Pseudo-graphics characters (like xterm).

Requirements
------------

You need at least:

    gtk+-1.2.5
    gnome-libs-1.0.59
    gdk-pixbuf-0.7.0


Some hints for installing Multi Gnome Terminal
------------------------------------------------

1) To build from tar archived sources:

     -untar sources
     -change to untarred sources directory
     -run: ./configure [ --prefix=/where/to/install ]
     -run: make
     -run: make install
     -to execute: multi-gnome-terminal [ options... ] &

You can run './configure --help' to see what options are supported. The 
default install path is /usr/local.

CVS sources require autoconf and automake. For CVS sources, run
'autogen.sh --prefix=/usr/local' instead of './configure' as above. Then
'make', etc. (Red Hat users see BUGS section below.)

For CVS sources, you should also have Docbook (and related packages),
and [open]jade installed, in order to build the User Guide (if not you
will probably get very out of date, or no, Help files). Also,
scroll-keeper, gettext, intltool, and libtool are requirements to build
cvs sources. 

2) For a proper installation you have to go in the directory where
   'mgt-pty-helper' executable is installed and:
   
     chown root.tty mgt-pty-helper
     chmod g+s mgt-pty-helper
   
   This way 'finger' and 'who' for example will show all terminals
   opened by MGT. The group owner needs to be whoever the group of the
   utmp/wtmp logs is, which may differ from distro to distro. On Redhat,
   it is utmp for instance. RPM (and possibly other packages) should do
   this for you.

3) If you haven't installed MGT in the GNOME standard directory you have
   to copy '/etc/CORBA/servers/multi-gnome-terminal.gnorba' in the
   '/CORBA/servers/' dir of your system. For SuSE 7.x for
   example =/etc/opt/gnome. This is needed if you want to
   use '--start-factory-server/--use-factory' options.

4) Red Hat users (and other distros based on RH) may suffer
   non-responsive Home and End keys. This is solved by setting CFLAGS
   like: 'make CFLAGS=-DREDHAT_TERM'. (The supplied RPMs do this for you.)


Command Line Options
--------------------

Please see the man page, or User Guide/Terminal Help for the many
options, including many to open new Windows, Tabs and split terminals
from the command line. Great for scripting!


Using Multi Gnome Terminal
--------------------------

Multi Gnome Terminal offers many useful and powerful extensions to
gnome-terminal. 

The extensions are these:

1) Multi terminal support (like KDE's konsole), which I implemented
   using GtkNotebook widget. This means that in each window one can have
   many terminals, not just one! Each terminal has its own 'Tab' for
   easy navigation between available terminals in that window. Each
   Window/Tab can also be split horizontally or vertically.

2) Switch to other terminals using: 
   - Shortcuts:
       SHIFT-Right: next terminal
       SHIFT-Left:  previous terminal
       CTRL- where n=0....9: switch to n-th terminal direct
   - buttons on the bottom of the screen (which I called "buttonbar")
   - buttons in the toolbar
   - Clicking on notebook Tabs (bookmarks)
   - using notebook popup menu (right click on Tabs)

3) Change of the title of a terminal (notebook label text) using:
   - buttons on the bottom of the screen (buttonbar)
   - buttons in the toolbar
   - menubar (File)
   - Shortcut:
       CTRL-F2

4) Creation of new terminals using:
   - buttons on bottom of the window (buttonbar)
   - popup menu (Right Clicking on the terminal)
   - menubar 
   - Shortcuts (using letter "L"):
       CTRL-l r: root shell
       CTRL-l n: bash shell
       CTRL-l m: Midnight Commander

5) Execution of commands in new terminals: these commands can be edited
   using the "Edit Commands" window (created with glade -> see
   edit_cmd.glade). One can open the Command window using the menubar
   item "Edit Commands" under Settings (Settings->Edit Commands). 
   
   This Window contains a List of all existing commands, and also is
   where you can add new ones, or remove existing ones (this is inspired
   by screen). Notice that the Command name (first column in the List)
   is what appears in the menus. The 'Commands' are used to open new
   terminal windows within the parent window (or Tab), and optionally
   run a command there (e.g. a shell script).

   The first Tab is for general commands. The second Tab is used for
   commands to open new tabs on startup (if the 'Don't Open Startup
   Tabs' button is unchecked). These can be copied from the first Tab by
   highlighting a selection, and then using the 'Get' button. The third
   Tab is for general New Term Menu configuration, and enabling the
   built-in shell Commands.

   Any defined command should either start an interactive shell, or at
   least include some command to keep the shell from exiting (e.g.
   'read'), or else the terminal will close immediately after command
   execution. Example: add a command with 'name' (first column) of 'my
   test', and a 'command' of 'myscript' (third column). 'myscript' is a
   script:

     #/bin/sh
     ls
     read

   Or:

    #/bin/sh
    ssh -t $some_host pine

   Then click 'update', 'apply', and 'OK', and it appears on the 'New
   Term' menu. You can think of something better ;-)

   As an alternate approach, the included mgt-helper script can be used
   to overcome this, and other problems. E.g.: mgt-helper -x ls && read,
   or mgt-helper -x ls | less.

6) Hide/Show/Move toolbar, buttonbar, scrollbar and menubar using the
   Preferences window or popup menu (to satisfy the taste of everyone!).

7) Shortcuts for user-defined commands: If you type CTRL-F1 n (n
   =0....9), you execute the n-th command in a new terminal.

8) Each terminal notifies its state, i.e. if it's display is changing or
   it has changed or it's unchanged, by using different colors. These
   can be customized, as can Tab labels. The default is 'red' if the
   terminal is actively changing, then turns to 'blue' to indicate that
   the new activity has stopped, but not viewed yet.

9) Using buttons on the buttonbar or on the toolbar you can easily
   reorder Tabs moving the current Tab to right or to left. 

10) You can now tint and shade the background image using
    'Settings->Preferences->Image'. The background must be set to
    'Transparent' for shading and tinting.

11) Like gnome-terminal, MGT supports a "Class" concept, which is
    basically a config preferences profile. You can have different
    fonts, colors, backgrounds, etc for each Class. Then activate a
    given Class either at startup (--tclass or --wclass) or
    interactively from the Settings menu.

    As of 1.6.0, Classes can be specified for all Tabs of that Window,
    or that Tab only! This means each Tab (and all terminals belonging
    to that Tab) can have their own fonts, colors, backgrounds, etc.

12) You can remove Classes that you don't need any more, in
    'Settings->Preferences->General'. New Classes can be added 
    here too by cloning the settings of the currently active Class.

13) Each terminal can set its window Title which changes if you switch
    terminals. You can also place the window Title on Tabs, and you can
    even choose the maximum text length for Titles.

14) You can change the Tab position or even hide Tabs if you prefer using
    the Preferences window (Settings->Preferences->General->Tab position).

15) Checking 'Settings->Preferences->General->Title Tabs' window title
    will be used also as Tab label, you can even choose the maximum
    number of characters to be printed using the textbox on the left. So
    for applications that change the Window title (like vim), this is
    reflected on the Tab label.

16) The title of a main MGT window is by default MGT - [ ... ], using
    the command line option '--title' you can change MGT to whatever you
    like.

17) Command Grouping: in 'Settings->Edit Commands' windows if you use a
    '/' character you can create sub-menus. For example a name of
    'Shells/bash', will create a new sub-menu named 'Shells' in which
    you'll find the command called 'bash', that's really useful if you
    have many commands and you want to keep the New Term menu short and
    organized. These can be nested like: 'Projects/Sourceforge/MGT', to
    give a menu three layers deep.

18) Key Bindings: The shortcut keys used for various MGT functions and
    other useful purposes can be customized from the 'Settings' menu
    (Settings->Keybindings) to the user's preferences.

    Any user defined 'Commands' are available as Keybindings. Select 
    'Command -> New Tab' from the Actions list, then click the list button
    next to the 'String' field.

19) The terminal scrollback buffer can be searched from the 'Edit'
    selection of the menubar.

20) Currently opened Tabs can now be saved and various related
    configuration options in 'Settings->Preferences->Tabs'. Separate,
    user definable Tabs that are to be initialized during startup are
    configured in 'Settings->Edit Commands' in the lower section.

21) MGT now has multi-byte support. See 'Settings->Preferences-General'.

22) Text shadowing for better font contrast on transparent or pixmap
    backgrounds. Select from 'Settings->Preferences->Image'. The shadow
    color can be be set under 'Preferences->Colors'.

23) To split the terminal window vertically or horizontally, select
    'Menubar->New Term', then choose which shell command you want. Then
    there is a sub-menu, select either HSplit or VSplit. The new
    terminal will be part of the parent Tab. Also, there are command
    line options that will do the same.

24) Terminals that are 'bonded' have the the command from one terminal
    replicated in all 'bonded' terminals. See 'All bonded' from the File
    menu. Use with caution, as this does not play well with all
    commands. For instance, compiling in bonded terminals will result in
    multiple, simultaneous compile sessions of the same sources.

25) New Windows and New Tabs can be created with command line options
    now. Example:

     multi-gnome-terminal --add-window --tname=Main --tcommand=vi \
      --tpath=$HOME/multignometerm --tclass=Default --add-tab \
      --tname=mgt1 --hsplit --tname=mgt2 --vsplit --tname=mgt3 \
      --tcommand=mc &
    
    This opens a new window and one Tab with vi running, and then adds
    another Tab (mgt1) which is split horizontally first, and then
    vertically, where Midnight Commander is launched.

26) Terminals can be moved from one window to another. The target window
    must have been opened either via the 'New Window' feature, or with
    --use-factory command line option. This is done from the 'New Term'
    menu. Select either 'Split' or 'New Tab with...' from the window
    that will be the destination. Then left click the terminal from the
    source window and it magically appears in the other window.

27) A terminal can be opened in 'View' mode. Such terminals echo the
    output ONLY from one terminal to a 'read only' terminal in another
    MGT window.

28) Bold text fonts can be different than normal text fonts, and can be
    displayed in a different color. See and 'Preferences -> General' and
    'Preferences -> Colors'.

29) The contrast and gamma correction of Pixmapped backgrounds can be
    adjusted from 'Preferences -> Image'.


Upgrading
---------

This section will address possible configuration issues that might arise
from upgrading. There are always new features ;-) See NEWS for new
features, and major bug fixes. And ChangeLog for all the agonizing, gory
details.

 1.4.x -> 1.5.x
 --------------
 
 There are various new keybinding actions available in 1.5.0. If
 upgrading, your list of defined shortcuts will not reflect the new
 actions (e.g. open a new split Tab). The easiest way to incorporate new
 actions, is to delete the old ones, and add new ones from the 'Actions'
 list as replacements.

 The are many, many new command line options for opening and moving
 terminals. This can be done for the current, active window, or other
 windows (of the same process, i.e. opened with 'New Window').

 1.5.x -> 1.6.x
 --------------
 
 There are *major* changes to Class handling. There are now Window and
 Tab Classes, which give much more flexibility for having custom Tab
 configurations. As a result of these changes, any classes defined in
 earlier MGT versions, will be migrated as tclass classes (Tab classes).
 This will break any start-up Tab configuration (unavoidable, sorry).
 Tclass attributes are those attributes that can be defined on a per Tab
 basis. See 'Settings -> Tab Preferences' to get an idea of which
 attributes belong to tclass. The only wclass (window class) available
 after upgrading, is 'default'. To enable any other wclass classes so as
 to have Window Classes, these will have to be defined from scratch.
 Wclass names and Tclass names can be the same, e.g. you can have
 tclass=myclass and wclass=myclass and both can be active at the same
 time. But the attributes of each Class are still mutually exclusive.
 Startup Tabs are still defined in Edit Commands, and you can set up
 startup Tabs to belong to both tclass and wclass from here.

 The former Preferences configuration Window is now split into two
 separate Windows: Win Preferences and Tab Preferences. Tab Class is for
 all attributes that can be associated with a Tab, e.g. backgrounds,
 fonts, etc. Win Class is for attributes that logically belong to a
 Window such as whether the Toolbar is enabled or not. If this sounds
 confusing, read the User Guide, for a more detailed accounting.


mgt-helper
----------
mgt-helper is a bash script now bundled with MGT that adds additional
functionality at the shell level. Since it runs in the bash world, it
can do things that MGT cannot do [easily]. See 'mgt-helper --usage' for
what it might be useful for. Some highlights:

 mgt-helper -h , can be used to create a unique bash history
 file for that terminal. Use with Edit Commands.

 mgt-helper -u,-f,-m,-F, can be used as a GNOME URL/Document Handler,
 allowing text based clients to open in a split or new Tab. Set up in
 GNOME. Example entry from ~/.gnome/Gnome:

  http-show=mgt-helper -u "%s"

 mgt-helper -x, to run compound shell commands from Edit Commands,
 rather than having to write a simple script, example: 
 
  mgt-helper -x ps | less && echo Say goodnight now ; echo goodnight now

 works.

See the mgt-helper man page or User Guide for more info. Or read the
script ;-)


Bugs
----

Please find ;-)

When reporting bugs, please include specific details: MGT version, X
version, distribution, GTK and GNOME versions, relevant configuration
options (eg transparent background with text shadowing, etc), and most
importantly, steps that will reproduce the problem.


ToDo
----

The big item on the list:

GNOME-2: There currently is no support for GNOME-2. This is underway
now, but is a complex task, and will take time and effort :(  Volunteers
to help with porting are welcome ! Possibly a beta will be ready by late
summer or early fall '02. 1.6.x will be the last GNOME 1.x release.


Other items on the wish-list for after GNOME-2 port:

 -Better support for saving split terminal configurations.

 -TrueType font and anti-aliasing support.

 -utf8 support.

 -Print via GNOME Print.

 -Detach a session (like screen does), and resume on a later login.


Bug Reporting, Feature Requests and Mailing Lists
-------------------------------------------------

 Please report bugs:
  http://sourceforge.net/tracker/?group_id=34480&atid=411232

 Feature requests:
  http://sourceforge.net/tracker/?atid=411235&group_id=34480&func=browse

 Mailing lists:
  http://sourceforge.net/mail/?group_id=34480

 Patches:
  http://sourceforge.net/tracker/?atid=411234&group_id=34480&func=browse

 Home Page:
  http://multignometerm.sourceforge.net/


Documentation
-------------
The User Guide has much more complete information on MGT configuration
and usage. It can be accessed through the Help Menu->Terminal Help.
There is only an English version, sorry (translators wanted!).


Copyright and License
---------------------

Written by and Copyright (C) 2001 Cristiano De Michele

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

The GNU General Public License should be included with this file.  If
not, you can view it at http://www.gnu.org/copyleft/gpl.html or write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA  02111-1307, USA.
 


                                                             enjoy,
                                                             Cristiano 
                                                             De Michele

-------------------------------------------------------------------------
$Id: README,v 1.37 2002/08/31 00:33:06 hal9 Exp $