Do 'HyperTerminals' Exist?

Do HyperTerminals Exist? | Introduction | What is a HyperTerminal? | Details | Comforts | Class Definitions | Dynamic Behaviour | Practical Considerations | Conclusion


Date: 24th April 1994

Subject: Do HyperTerminals Exist?

Summary: Or what do you get when you cross xterm, ksh and an OO-shell?

Synopsis: Requirement for a combined OO Shell and Terminal Emulator.

Hi,

In this letter I describe a tool that I would really like to possess.

My question to you, dear reader, is does such a wonder exist? If it

does not I challenge the programming community to implement one for

public consumption and enjoyment.

Bill


1. Do HyperTerminals Exist?

Date: 24th April 1994

Summary: Or what do you get when you cross xterm, ksh and an OO-shell?

Synopsis: Requirement for a combined OO Shell and Terminal Emulator.


2. Introduction

You are all experts with ASCII terminals and command-line interfaces

such as the bourne shell. You are also conversant with hypertext and

object-oriented file managers. What I want is an amalgamation of all

these with a solid OO framework. A hyperTerminal session may proceed

as follows:

Imagine you are using X-windows, on your screen is an xterm-like

terminal emulator window running a shell. You type "ls" and a list of

files is printed, neatly arranged in columns. With the mouse, you

double-click on one of the filenames (foo.cc). An emacs window is

popped up open on the file. You notice that unseen hands have entered

the command "emacs foo.cc &", and the prompt has been re-printed.

Now you move the pointer over another file (bar.cc) and you

click-and-hold the mouse button. You drag the filename (which follows

the pointer) until it is over another filename (dir/). You release the

mouse button, and "bar.cc" disappears. You notice that unseen

hands have again been at work, having typed "mv bar.cc dir".

You double-click over the "dir/" text and the command "cd dir; ls" is

typed for you. Your prompt changes to show the new directory and a

directory listing is printed as before. You notice that "bar.cc"

appears among the entries.


3. What is a HyperTerminal?

A HyperTerminal provides all the functions of a standard xterm yet it

also understands the information it displays. HyperTerminal displays

a continuous stream views of underlying objects. It still manages to

preserve the familiar textual presentation of an ASCII terminal.

Since it is displaying views of objects, the objects can be directly

manipulated by the user with a mouse.

Commands such as "ls" are re-written or wrapped so that they output a

stream of view objects rather than a stream of characters. Hyperterm

can be programmed to understand all classes of objects ranging from

fragments of a text file, through to a UNIX process.

Users can browse the object classes with a graphical browser,

re-structuring inheritance relationships and defining shell scripts to

be executed for each method the object class supports.


4. Details

Here are some of the things that a HyperTerminal could do:

* Fragments of ASCII files output by commands like "head", "grep" or

"cat" can be edited by positioning the cursor over the text, and

inserting or overtyping characters. The changes are committed to the

files.

* Directories displayed with "ls -l" can be modified by positioning

the cursor over the relevant attributes and over-typing. Filenames,

permissions and dates can be modified by altering the corresponding

part of the output.

* Files can be moved between directories by drag-and-drop.

* File links can be established by drag&drop with the shift key held.

* Files can be deleted by selecting of a filename followed by hitting

the delete key. a confirmation dialogue may appear depending upon

options.

* Programs such as compilers output references to fragments of ASCII

files. Double-clicking on an error message opens an editor on the

relevant file, positioned at the line in question. HyperTerminal

keyboard focus enables you so step between error messages with the

cursor keys.

* Job control and process management is simplified. For example,

selecting processes displayed with the "ps" command allows you to

kill the process with the delete key.

* Non-wrapped commands output straight text which HyperTerminal

treats identically to the ASCII terminal it emulates.

By now the general character of HyperTerminal is becoming clearer. It

allows you to use all the power of the scripted interface (and all

those familiar commands) yet providing object-oriented direct

manipulation of the results of those commands.


5. Comforts

Because HyperTerminal belongs to that large family of windows-based

programs, it comes with the usual framework which includes:

* Pull-down menus from a menu-bar. These allow you to call up generic

methods shared by almost all objects. Some of the standard ones might be:

File

New...

Open

Copy

Move

Delete

Print...

Properties...

Run

Save // saves the current session a la "script"

Edit

Cut

Copy

Paste

Options

Display

Class Browser

...

Window

Help

* The right mouse button would support a pop-up menu showing all the

actual methods supported by the selected object(s)

* Selection of many objects via the shift key, polymorphic method

execution over the selected objects.

* HyperTerminal would also provide users with many presentation

options for each class including: font, text style, colour and use of

icons. For example executable files might always be displayed in Red.

* Because HyperTerminal is pretending to be an ASCII terminal on X,

it could also be induced to display graphical representations of

objects. Thus icons could be used to display files in the output of an

"ls" command; tick boxes might replace permission switches.


6. Class Definitions

HyperTerminal is extensible allowing users to add object classes and

methods of those classes. It supports inheritance and polymorphism,

and maybe multiple inheritance. To make this easy, it comes with

a graphical class browser.


7. Dynamic Behaviour

Since HyperTerminal continues to know about the under-lying objects

it is displaying, it could update the display to reflect the execution

of subsequent commands or change to show the state of the objects.

For example, deleting a file may cause it's entry in previous "ls"

output to change into passive, black text.


8. Practical Considerations

Despite offering more functions than xterm, it would not consume much

more than "xterm" and "sh" combined. (The class browser would probably

be a separate process.) It would be fast and efficient, allowing users

to run dozens of HyperTerminal windows.

The source code of Hypterterminal would ideally be freely available

along with ports to most UNIX systems.

Hyperterminal would probably continue with the UNIX style of working

by interpreting a stream of characters on its standard input. A clever

arrangement of escape sequences would delimit the objects it displays

along with their class and identity. The sequences would be published

thus allowing users to write programs that output object views into

Hyperterminal.


9. Conclusion

Ok so you have read my cursory description of the mythical

Hyperterminal. I hope it was reasonably clear :-). My questions are:

Does such an animal exist?

Would anybody else like one?

If there is one where is it, and how can I get one?

If there is nothing like Hyperterminal, I re-iterate my challenge to

the programming community, please, write one!


Bill Birch, Thursday, March 04, 1999