Gsh Home Page
News
9/4/99 - Gsh 0.1.3 released. Multiple screens. Configurable completions.
9/4/99 - All new screenshots.
7/20/99 - Gsh 0.1.2 released. Faster terminal. Internal command
line option.
5/5/99 - Gsh 0.1.1 released. Better compact mode. New options.
Better font selector. Lots of bug fixes.
5/5/99 - Added new screenshots.
4/7/99 - Gsh 0.1.0 released. Lots of changes. Libc5 support.
Now reads $ENV.
3/19/99 - Gsh 0.0.13 released. Solaris port and bug fixes.
Description
Gsh is designed to do two things:
-
be a comfortable environment for people who are already accustomed to using
a Unix shell.
-
make operations that are difficult or awkward with a normal shell easier
by having the shell take advantage of a graphical environment.
For the most part, Gsh behaves like a normal terminal window with some
graphical enhancements. It can also be useful as a program launcher
when used in compact mode.
Screenshots
Main screen (18k)
Font Selection (11k)
Compact mode (8k)
Running with the "Command line is always in the
menu bar" option (16k)
Compact mode with the "Command line hides menus"
option (7k)
System Support and Requirements
Gsh is developed under the RedHat 6.0 distribution of Linux.
It requires Tcl/Tk 8.0.X to compile.
Gsh should also work under Irix and Solaris.
I am interested in supporting any Unix-like operating system, but I only
have direct access to Linux and Irix, so I will need help from others to
provide and maintain ports for other operating systems. Since Gsh
is written primary in Tcl/Tk, this should be an easy task.
Features
A terminal window consisting of multiple output sections, one for each
command. Above each output section is a header indicating the command
that was executed. This makes Gsh's output appear like the normal
output you would see from a shell, but the header is editable, allowing
you to change the command and re-execute it in the same output area.
Each output section serves as a complete xterm-like terminal, so you can
use it for any activity you would normally use an xterm for.
Multiple independent screens. A screen bar at the bottom allows you to
create new screens and switch between screens, as well s showing what is
running in each. Having multiple screens keeps down the clutter of
having several terminals open at once.
A user configurable menu for keeping commonly used commands.
A menu for "cd"ing to recently accessed directories. This is persistent
and shared among multiple invocations of the program.
A collapsed and expanded display. In the collapsed display, only
the menus and the command line are visible, allowing Gsh to be placed unobtrusively
on the top or bottom of the screen. In the expanded mode, the terminal
is visible, with the command line at the bottom.
A context-sensitive popup menu with user-definable commands.
If you select a filename and press the right mouse button, a popup menu
appears with commands that can be performed on that type of file.
Selecting a URL gives you a menu option for opening the URL in a browser.
Selecting text from other commands produces other types of popup menu entries.
For example, if the command that created the text is "rpm", then entries
such as "rpm -e" and "rpm -ql" are given in the popup menu.
Graphical interfaces for configuring all options and settings. Including menus, fonts, and colors.
Filename completion. Pressing Tab will finish the filename you are
typing. If there is more than one possibility, Gsh will bring up a
list of filenames. Pressing Tab with nothing entered allows the file
completion window to serve as a simple file browser. The completions
are configurable so that only the files relevant to the command will be shown.
The command history is accessible through the up/down arrow keys, or a
history list. History searches are possible by typing partial commands.
The command line will automatically expand to include more lines as necessary.
It also has built-in vi-style editing and mouse-based editing.
You can cd to a recently accessed directory without typing the full path.
Pressing the right mouse button over a previously executed command when
nothing is selected opens a menu. Through the menu you can re-execute
the command, remove it, or detatch it into it's own window
(even while it is running).
The terminal keeps track of which lines wrapped. When the window
is resized, the output is reformatted for the new size.
User selectable colors for prompts and commands.
Persistent aliases.
Future plans
-
Take a look at this
web page, there are lots of good ideas there.
-
Graphical command intefaces for assisting in command entry. For example,
if you type ls <CTRL-ENTER>, a specialized interface for ls would pop
up above the command line allowing options to be changed with toggle buttons
and files to be picked with a file browser. The command and the interface
would be kept in sync, so that changes made through the graphical interface
update the command on the command line, and changes made to the command
line update the graphical interface.
-
A faster terminal window with background pixmap and transparency support.
-
The ability to have commands that embed extra information in their output
that Gsh can take advantage of. Possibly using XML.
See the LinuXML
project for more details on this idea.
-
The ability to expand the command line into a script writing interface,
so that simple scripts can be created on the fly then saved for later use.
This is partially implemented by allowing the command line to expand on
incomplete commands, but more functionality is needed.
-
Context sensitive toolbars.
-
Many more graphical editors for environment variables, functions, aliases,
etc.
-
Script debugger.
-
Voice recognition.
Comments and Suggestions
Although I believe Gsh to be functional and useful, I still consider
it to be in an experimental stage. My main goal at this point is
to get an example of the basic idea out into the public for comment.
I am very open to any suggestions on features or user interface design
and any opinions on the relative importance of planned features. Please
send any bug reports, suggestions, or comments to vcato@bellsouth.net.