Public Domain Software and Hardware

To contact me, please use the following email.  email address image It will periodically change based on its spamlevel.

All files linked for download (i.e. not this html) are placed in the public domain.  I would appreciate knowing if anyone finds them useful, and would welcome public domain code contributions/patches.

For the software projects, the simplest way to use them is to download and extract them into the top level folder of your application file tree, then have your makefile traverse into the library folder with a $(MAKE) -C in the process of compiling or cleaning your project.  If you use this technique, when the libraries are updated here, it will be easy to update your application.  Because I have several projects that use these libraries, I use a symbolic link in each application's top level directory to the top level directory of the libraries that I want to use, and statically link them in.   My (rarely used) overall build scripts are responsible for building all the libraries before the applications when I want to rebuild everything.


LibGx Software
LibCb/LibTmr Software
LibSer Software
LibImg Software
TVC Hardware


LibGx is a lightweight, non-intrusive, public-domain C++ widget library for writing X11 applications, most likely for Linux. LibGx is non-intrusive so that it fits neatly into the various *nix programing models. A programmer can either use the simple internal event loop for applications, or use a variety of different techniques to service X11 needs within the application (via select, threading, etc.). LibGx is novel in that although it is built directly on top of Xlib, it does not wrapper Xlib itself. Xlib is used by the programmer for its drawing routines and Xlib structures are used when programing with or extending libGx. LibGx also uses and exposes the X event queue. LibGx does not have (and does not need) its own internal event scheme or type.

LibGx has been in use for several years and is fully usable for real applications.

LibGx Info

LibGx Downloads (libCb and LibTmr needed too)

libGx-release-20090930.tgz md5sum: 55decf404a29fe8fe77e0457e371134c
libGx-release-20090810.tgz md5sum: 201d18df582eb644752149f25e9e63d0
libGx-release-20060724.tgz md5sum: 4dae7be92c069ff625f1c6f190164948

After extracting this, download and extract libCb and libTmr in the libGx directory. You could extract them elsewhere and create libCb/libTmr symbolic links to them.  Configure and compile libCb and libTmr before configuring and compiling libGx.


LibCb and LibTmr are small C++ libraries required by libGx. LibCb implements function objects. Possible future libCb enhancements include perhaps changing it to be a header-only library, and perhaps adding the ability for a list of callbacks to be called by function objects when activated.  LibTmr is currently used within LibGx to implement ToolTips and auto scrolling.

LibCB/LibTmr Downloads

libCb-release-20060723.tgz md5sum: c7b541f11193b78a49a1b5fc932892af

libTmr-release-20090810.tgz md5sum: aaea298e8721ee6f18e4499ec486df5f     (this version is better)
libTmr-release-20060723.tgz md5sum: 74935d9017933df8669debb6f657d4d3     (this version was primitive, broken, and incomplete)


LibSer is a trivial little C++ serial library for Linux that I have used heavily over the years. Gigabytes have passed through it.

LibSer Downloads

libSer-release-20060724.tgz md5sum: 1336a4cecef0fd451958b77dfbc3a525


LibImg is a simple templated C++ image library.  It also has a couple of self-contained classes to get an image displayed in a X window as quickly and as easily as possible. A great tool to prototype algorithms.

LibImg Downloads

libImg-release-20090929.tgz md5sum: dc33449706acb6e4a92e3ccad12f081e
libImg-release-20090222.tgz md5sum: d503d8ecc865c1a3d767e87892e2c560
libImg-release-20060917.tgz md5sum: b72b9d67d7baedf04346e25f74dbdc3f