Using the graphical features of GraphTerm


If you are a long-time command line user, you can continue to use GraphTerm just like xterm (except for any bugs), and perhaps use the remote access or sharing features. However, that would defeat the main goal of GraphTerm, which is to enhance the command line with GUI-like features. You may need to remind yourself occasionally that GraphTerm provides alternative ways to accomplish some of the typical command line tasks, such as directory navigation. Some of these GraphTerm “extensions” may improve your productivity, and some may not! This tutorial explains novel ways in which you can interact with the computer using GraphTerm. (See the README file for basic instructions on installing and starting up GraphTerm.)

Changing directories

When you open up a new GraphTerm window, you can cd to the directory you want by clicking on the Home “button” and then clicking your way to the directory (with or without icons enabled). Once you reach the directory, just type any command you wish to execute there.

In the middle of a terminal session, if you wish to change directories graphically, use the gls command, which accepts optional wild card arguments to filter the files it will display. You can also scroll back, and click on the directory in any previously displayed gls output to switch to that directory. (NOTE: The current command line needs to be empty for this graphical directory switching to work.)

Opening files

The gopen <filename> command will open any file on the local computer, i.e., where the shell is running, using the default program associated with it. (gopen simply invokes the correct open command for different platforms, e.g., xdg-open on Linux, and open on OS X. On OS X, you can use the command “gopen .” to open a Finder window showing the current directory.) For text files, gopen invokes the gvi command, which opens up an AJAX text editor which can be used remotely on the browser. For image files, gopen invokes the gimage command to display the image.

gopen opens files on the local computer, i.e., where the shell is running. The gbrowse command can be used instead of gopen to open the files using the browser itself. This will work for images and PDF documents. The advantage of gbrowse is that it will work even remotely, i.e., across SSH tunnels. (NOTE: You will need to allow popups from “localhost” for this to work.)

If you click on a doument file displayed in gls output, the gopen/gbrowse/gvi command will be executed by default, provided the current command line is empty.

Constructing a new command line

If the current command line contains even a single character, which may be a space, then clicking on gls output does not change directories or open files. Instead, the relative file or directory path is pasted as text at the end of the current command line, followed by a space. For example, a common operation is to duplicate a file and rename it as a backup copy with a slightly different name. You can do that in GraphTerm by first typing cp in the command line and clicking on the displayed filename (or icon) twice, resulting in a command line of the form:

cp filepath filepath

You can then edit the second filepath to modify it, and press Enter to execute the copy command.

Moving and copying files

To move a file to a different directory, you can simply drag the filename displayed in gls output and drop it on the destination directory, in the same terminal window or in a different terminal window. (NOTE: At present, the drag-and-drop implementation has some limitations. You can only drag the actual text for the filename, not the icon associated with the file, although the drop operation can occur over the destination directory icon. There is no clear graphical feedback when the file is dropped on the destination directory. However, you will see the mv file dir command appear on the command line when the operation is successful.)

If the current command line is not empty, the drag-and-drop operation will simply insert the mv file dir command without actually executing it. You can edit the command line to modify it, and then execute it.

Drag-and-drop also works between two different hosts, except that the file is copied, instead of being moved. For remote hosts, you can right-click on the displayed file, and download it to your desktop just like any hyperlinked file on a web page. You should soon be able to drag-and-drop a file from your desktop into a directory displayed in a GraphTerm window to upload it (this is yet to be implemented).

Scrolling to the top/bottom quickly

You can scroll to the top/bottom of the terminal using the view menu in the top menubar. If the top menubar is not visible, expose the bottom menu bar by clicking on the lowest displayed prompt, and then click Top to scroll to the top.

Sending special characters on an iPad/Android tablet

Expose the bottom menu bar (by clicking on the last prompt) and use Key drop-down menu to send special characters like TAB and ESCAPE.

Viewing HTML inline

Use the gframe [-f] filename|URL command to render inline HTML from a file or URL (or command | gframe to render HTML generated by command).

Viewing image files

Use the gimage command to view images inline. You can also use the gls -i command to include thumbnails of images in the directory listing. (gls does not display thumbnails by default because it needs to load the entire image file to display each “thumbnail”.)

Sharing slideshows/presentations

The command gimage -f can be used to view images in fullscreen mode, i.e., as a slide show. If you omit the filename argument, all the images in the current directory will be displayed. (If you enable the webcast feature, and use the -b option for gimage, anyone with access to the session URL can view the slideshow!)

Twitter client for live audience feedback

A GraphTerm-aware demo Twitter client, gtweet, is included in the distribution. It can be used during a lecture or presentation to allow the audience to respond interactively. To use it, you need have a Twitter account, and create your own “Twitter app” associated with that account. It will take you only a couple of minutes to create the app at (You can give it any name you like.) The first time you use the client, you will be prompted to enter the access credentials associated with your Twitter app.

Once the app is setup, the Twitter client can be used as follows:

# Post a tweet from your account
gtweet My first tweet
# Display all tweets mentioning "python"
gtweet --search python
# Display direct messages and tweets directed to the user
gtweet --recv

By default, the Twitter client displays tweets graphically using the fullscreen (-f) option, although it also has text (--text) and CSV format (--csv) output options. You can also combine the the fullscreen and the text/csv options to save a copy of all the displayed tweets as follows:

gtweet -f --csv --search python > tweets.csv