Copyright
=========

   GTerm - Generic Terminal
   Copyright (C) 1998, Dietmar Maurer

   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.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

   For more details see the file COPYING.


What is GTerm
=============

GTerm is the first approach to implement an emacs-style user interface 
framework for Gnome applications (see the proposal from Jim Pick at 
http://www.jimpick.com/gnome/ui-proposal/). GTerm is based on Gnome MDI
using the notebook mode. If the user starts a gterm aware application
(a gterm module), gterm simply creates a new window in the notebook
instead of creating a new top-level window. This prevents the user from
any interaction with the mouse.

There are two gterm modules at the moment - gsh (Shell) and
gtless. Working with gsh is like working on the linux console, where
the user can switch between several virtual terminals. gtless is mainly an
example, showing how to support multiple views for one document.

GTerm is most useful for typical unix users, who prefer the keyboard
as primary input device. But beside the fact that there is a small
additional menu (the buffer menu) on the left side, gterm modules
behaves like normal gnome application. So it makes no difference for
the novice user if an application is a gterm module or not.   

Status
======

Although the two example modules are quite usable, GTerm is still in
an early development stage. The module API is subject to change, and
things like the status-bar (minibuffer) are not implemented yet. The
primary purpose of this release is to get feedback from you. I'll
continue this work if:

	* there is enough interest (and maybe some volunteers to
	support	development).
	* the architecture of the current implementation has no
	general drawbacks (please let me know if you find one).	 


Installation
============

You can download the latest version of GTerm from:
http://nui.vlsivie.tuwien.ac.at/gterm/

Note: You need reasonable new versions of the gtk and gnome libraries (CVS)
After unpacking type:

cd gnome-gterm
./autogen.sh
make
make install

At the moment there a to modules you can play with. gsh and gtless.
(gtless and gsh are just symbolic links to gterm - if gterm detects that it
is called with another name it tries to load the module with that name.
You can also start gterm directly (see gterm --help)).

The most interesting thing at the moment is that you can start a module
from another process (start ./gsh - then type ./gsh - it simply creates
a new tab in the notebook of the first gsh).

There are some handy keyboard shortcuts:

CTRL-1 -- CTRL-9 switch between notebook tabs
CTRL-ESC         close the active view


It's also possible to write small shell script to use non-gterm
programs like vi.

--------------
#!/bin/sh
./gsh -e vi $1
--------------

or simply type:
> gsh -e mc
to start midnight commander in a separate notebook window.

Problems
========

GTerm applications can't read data from STDIN (I've found no clean way to
implement this - as a matter of principle it is possible).

It's not possible to run GTerm application in privileged modes, since they are
loadable modules (such as ping, which requires root privileges to access the
Internet Control Message Protocol (ICMP)).

TODO
====

pass the complete environment to the argp of the child (PWD,...)
Implement the status-bar???
allow modules written in scheme?
how to support i18n for modules?
how to set the geometry of the first top-level window?
session management support

Write more applications/examples:

	Text editor (maybe emacs?)
	File Manager (mc ?)
	
Author
======

GTerm is being maintained by Dietmar Maurer <dm@vlsivie.tuwien.ac.at>. 
If you are having trouble installing and/or running GTerm, feel free 
to e-mail me.

Comments, ideas and bug reports are very welcome.



