This page was last updated 21 December 2005.
xmbase-grok - Desktop Database
The current version is 1.5.
(Note that xmbase-grok
began life as grok
but it turned out that a fuzzy grep utility with that name beat me
by a few months, and nobody seemed to get the reference anyway. The
new name is more descriptive, I hope.)
is a simple X/Motif database manager and user
interface builder that can -
- keep phone and address lists (like a rolodex)
- store phone call logs
- keep web page databases
- keep todo lists
- manage any other database after simple GUI-driven customization
- custom export to programmable data formats, HTML export built in
More precisely, xmbase-grok
is a program for displaying
and editing strings arranged in a grid of rows and columns. Each row is
presented as a card
consisting of multiple columns, or
, that allow data entry. The presentation of the
data is programmable; a user interface builder that allows the user to
arrange fields on a card graphically is part of xmbase-grok
also supports a simple language that allows
sophisticated queries and data retrieval. xmbase-grok
with the above examples and a few others as pre-built applications.
xmbase-grok is not a general-purpose database program. It
was designed for small applications typical for desktop accessories. If
you attempt to run your major airline reservation system or your space
shuttle project with it, you are guaranteed to be disappointed. (To my
great amusement, a manager at NASA involved in the shuttle project has
told me that he does use xmbase-grok, successfully.)
compiles and runs on anything that has Motif.
At this time, X11R5 will do, but Motif 1.2 is required. Also, the source
needs an ANSI C compiler, a K&R compiler will not work. To compile
, Motif libraries are required; however, if
static linking is used the resulting binary can be run on non-Motif
systems. Dave Johnson, who makes the static Linux binaries, makes it
available at ftp.netaxs.com
There is no way to compile or even port xmbase-grok
OpenLook or Athena.
Supported systems include SGI, HP, Sun, and Linux. xmbase-grok
supports both an Imakefile and a standard Makefile, because an astonishing
number of systems fail to include xmkmf
Did I say before that everybody ought to own a Silicon Graphics machine?
comes with extensive online help and a
PostScript manual, including TeX sources for the manual.
The official FTP sites are:
is the primary ftp site. (Thanks, Heiko.)
- bitrot.de is the backup site.
This is my home system and has a much slower connection, so have
The archive is normally compressed with GNU gzip
and is about
230 KB. Most ftp servers also allow retrieval of a compress
file, which takes about 360 KB. The distribution is 900 KB uncompressed.
Please send bug reports or ideas for new features to me, at
Since I get quite a lot of mail, please be patient, I am not very good at
replying quickly... Also note although I appreciate new ideas and still
actively enhance grok, I throw out more ideas than I accept
because I avoid creeping featurism, which kills program faster than neglect.
- If you get the message No type converter registered for 'Pixel'
to 'String' conversion, you probably have a CDE system that
overrides standard resources with nonfunctional values. Run
grok -d >> ~/.Xdefaults; xrdb -merge to fix.
- On SGI systems, if the icon doesn't show a picture, copy the icon
picture Grok.icon into your ~/.icons directory. If you don't have
one and don't want one, set the plan*noIcon resource to False in
your ~/.Xdefaults file. It may be necessary to restart 4Dwm to
register the icon after copying it to ~/.icons.
- The grok program uses quite a few colormap entries. Although there
is a black&white fallback mode, you may have problems starting other
programs that also need many colormap entries. The only workaround
is to kill grok when you don't need it.
- If radio and toggle buttons appear gray regardless of the colToggle
and colRed resources, make sure that the sgiMode resource is False.
In SGI desktop mode, colToggle and colRed are disabled because they
would override the desktop defaults.
Only recent changes are listed with details, intended for finding out
whether a bug has already been fixed and your copy should be upgraded.
Note: it appears that spammers have trawled one of my pages
for email addresses. Hence, all email addresses have been obscured:
replace at with @, and colons with dots.
- version 1.0, released 31.10.94
- version 1.1, released 11.11.94
- renamed CONST constant because Ultrix and Sinix had problems with it
- implemented substitute for strcasecmp because Sinix doesn't have one
- summary title string could come up with garbage if grok starts empty
- when creating new forms, database name was used as form file name
- DEC/OSF stdarg had problems with a check for null %s arguments, fixed
- preferences menu can now configure number of lines in summary window
- preferences menu can now scale cards (for people with lowres screens)
- GROK_FORM environment variable replaces "." in form searches
- added help on environment variables and resources
- US dates mm/dd/yy in the database file were misparsed as 12/31/69
- Cancel in the print file dialog didn't work (Igor Metz <metz at glue:ch>
- help could overrun malloced buffer (Grant McDorman <grant at isgtec:com>)
- FORM keyword evaluated to name.f, not name.gf
- DBASE keyword no longer appends .db extension if database is procedural
- version 1.1.1, released
- form editor allowed leading blanks in form and dbase names, confusing
- multiple independent sets of choices in a form didn't work
- form editor didn't handle blanks and DELs as field delimiters well
- version 1.2, released 16.6.95
- conversion to ANSI C
- multiple sections (database can be a directory, contents are sections)
- new chart code that is actually usable
- elimination of duplicate forms in the database pulldown
- database lines beginning with an empty field shifted all fields to left
- print current card always printed second card <kooper at dcs:qmw:ac:uk>
- added qsum, qavg, qdev, qmin, qmax to language <grant at isgtec:com>
- added ssum, savg, sdev, smin, smax, in, section to language
- port to DEC OSF/1 Alpha, by Steven W: Orr <steveo at uniprise:com>
- texts longer than 1024 characters could crash
- new full-color SGI icon
- improved PostScript manual
- version 1.3, released 28.4.96
- export function to create formatted files from databases, template
editor for custom exports, HTML (World-Wide Web) templates are built in
- new biblio database by James C: McPherson <mljmcphe at dingo:cc:uq:oz:au>
- grayed-out data entry fields no longer show garbage data
- no longer necessary to press print mode button twice
- version 1.3.2, released 10.5.96
- fixed two stack array overruns causing crashes on some systems
- version 1.4, released 5.2.97
- new form editor fields for plan calendar interface
(needs plan 1.6 or higher)
- sort pulldown supports reverse sort
- the database is resorted automatically whenever the database changes
- optional automatic queries whenever the database changes
- summary always shows current database state, even while adding cards
- database and section pulldowns are now sorted
- new system database, by Mike Dotson <dotson at drcpdx:stt3:com>
- new workplan database
- query dialog shows available fields in a scroll window to reduce width
- cards can now be added without selecting a section (if available) first
- exporting to HTML data-only lists no longer crashes or repeats strings
- version 1.4.1, released 9.7.97
- new date and time string to number conversion functions in the grammar
- new general character-to-string translation operator "tr" in the grammar
- new variables A..Z that are not cleared when switching databases
- new database field assignment functions
- grok sometimes crashed after creating a new form before data is entered
- fixed export expressions, it was difficult to put newlines into templates
- sometimes misinterpreted the time part of date/time fields in data files
- version 1.4.2, released 29.1.98
- This version was primarily intended for the SGI freeware CD.
- SUBST command in templates was ignored (<Sjoerd:Mullender at cwi:nl>)
- minor SGI fixes and usage message (Ariel Faigon
<ariel at oz:engr:sgi:com>)
- version 1.4.3, released 9.9.99
- SYSTEM command leaked file descriptors (Paul van Slobbe
<Paul:vanSlobbe at nym:sc:philips:com>)
- now only labels and buttons must have a label, all others can be
- always write all database data columns, don't omit trailing empty
- new keyword "disp" returns the number of the currently displayed card
- FreeBSD 2:2:7 changes by Stan Norton <norton at northsea:com>
- fixed date parser, can now use 00..38 for 2000..2038 and other problems
- new phone2 (with PalmPilot export), music, occasion and howto database
forms by Steven Hughes <hughes at cerc:wes:army:mil>
- version 1.5, released 23.5.2001
- there are now six search modes, selectable by a combo popup next
to the search string input area: search, in query, narrow query,
widen query, and find-and-select. The last one is also accessible
with Ctrl-F, and highlights the next card that matches the search
in the summary table without creating a new summary table like
- the new "requery" button repeats the last query. This is useful to
restore the last summary listing after a search.
- the HTML export templates were much improved.
- all cards now get a unique timestamp and identifier when they are
created. It is saved in a separate file "name.ts". Timestamps are
displayed in the info line, and will later be used for PDA
synchronization. Timestamps can be disabled by unchecking
"synchronizable" in the form editor.
- added "expand" keyword to allow templates to print the mnemonic
value of flag and choice fields.
- the printer line length is now configurable in the preferences
- a new command-line option -p prints the database in a form
digestible by the (forthcoming) plan calendar 1.9. A default
query string can be defined in the form editor to send only a
subset of the database to plan.
- when procedural databases were written successfully, the
modified flags were not reset. Fix by Fredy Paquet
<fredy at gilera:opag:ch>.
- the default year was incorrect, it defaulted to 2000 instead