Welcome to getgui 2.0
What is getgui?getgui is a standalone x11 utility that is used for easily adding a degree of graphical user interface functionality to shell scripts or other programs. getgui can display informational messages and in-progress messages, or it can be used to get user input via dialog boxes, keyboard input fields, pulldown menus or select boxes. "Wizard"-type procedural interfaces can be implemented using a series of getgui invocations.
Each invocation of getgui produces one GUI box, and can return one user response. User response is written to stdout (or in some cases user response can be conveyed via getgui's exit code). In its simplest form it is used like this:
When invoked getgui automatically creates a layout of text and controls based on what is specified
in the command line arguments, crops the graphic appropriately, and displays the GUI box centered on the X11 screen
(by default), thus no position coordinates need to be specified. getgui pays attention to mouse button
presses and keyboard key presses. There is no scrolling capability anywhere, except horizontal scrolling of key
entry fields. getgui is small and lightweight, implemented using xlib with no other dependencies.
What is it useful for?The getgui illustrated examples page shows some possibilities. Here's what I've already used getgui for:
getgui allows you to cobble together cohesive applications from a collection of utilities. For example, I've used it as part of lxlogo, an interactive LOGO graphical programming environment for K-12 educational use. I've also used it as part of a homegrown system for copying and manipulating photo images from a USB camera, with the jpgtn reducing utility, and the xv image editor.
Making it simplegetgui can be downloaded in ready-to-run binary form, or it can be easily built from source code, with no dependencies other than xlib. The getgui interface is non-complex.. developers with some shell script experience should be able to produce attractive useful results in minutes. Control layout is dynamic and automatic, eliminating the need for the developer to code position coordinates, etc.
Making it easy to see, read, and useMany GUI environments tend to use default fonts that are on the small and delicate side, with tiny control features. Many individuals, especially beginners, find it tedious to view small fonts and move the mouse with enough precision to use the controls effectively. A design goal with getgui has been to make the text easy to read, and the controls easy to click on. This seems especially important in repetitive workflow operations.
Environmentsgetgui can be invoked from shell scripts, or from just about any program language that allows a shell command to be executed and the standard output result captured. From a C program use popen() and fgets() (for an example see lxlogo; performance is acceptable). getgui is small, lightweight, and reasonably fast; executable size is ~100 kB. System requirements: any linux/unix system with X11; no other libraries required.
Version 2.0Version 2.00 is a complete re-write, with numerous new features and improvements. See the what's new page for more info. There have been changes to the command line option names and syntax, most notably in 2.0 individual button labels are separated by bars (|), previously they had been separated by commas. A couple major features of 1.3 have been dropped: the -editbox multi-line text entry control, which was buggy anyway, and the alarm clock feature, which may be released later as a separate utility.
What getgui doesn't dogetgui has nothing to do with the internet or web!.. it's strictly for use on your local linux or unix box, producing X11 graphics on your screen.
Select boxes don't have scrolling capability, which is a limitation when the number of choices/files/whatever gets to be very large.
getgui only uses mouse button presses (not releases) and keyboard key presses; many of the finer points of modern user interface design such as drag/drop, are not supported.
Copy / paste is not supported. Mouse drag highlighting (for text deletion) in the -keyin field is not supported.
The getgui(1) utility doesn't allow for more than one control (plus a set of buttons) per GUI box. This allows things to be specified via a reasonably simple command line interface and simplifies handling of results.. "forms" applications are usually best handled by web-based systems anyway.
Previously a getgui C language API was included. This is no longer available,
but you can use getgui from programs by invoking via the shell.
For an example of this see lxlogo.
See alsoxmessage(1) an early X11 utility still present in some releases that presents user with text and buttons. getgui is an xmessage alternative, an alternative to xmessage. getgui is an xmessage replacement, a replacement for xmessage.
AuthorSteve Grubb 2004. getgui home page is http://getgui.sf.net
Send bug reports and correspondence to scg (at) jax (dot) org.
Copyright Steve Grubb