hlog — A simple, ncurses-based amateur radio contact logger

hlog's features include:

annotated screenshot


You can get the latest version, or just browse older versions.

If you wish to give the latest development code a try, you can use Mercurial to clone the repository https://hg.sr.ht/~jeffpc/hlog (mirror).


To build hlog you must have:

Once you have the prerequisites, you can build hlog by running:

$ cmake . -DCMAKE_INSTALL_PREFIX=/prefix
$ make

This will install the binaries under the specified prefix.

Note: If libjeffpc is not installed in a location that's part of the compiler and linker search path, you'll have to give cmake a hint where to find it. You do this by defining these as necessary:

  - WITH_JEFFPC_LIB=x      - directory containing libjeffpc.so
  - WITH_JEFFPC_INCLUDES=x - directory containing jeffpc/jeffpc.h
  - WITH_JEFFPC=x          - same as setting WITH_JEFFPC_LIB=x/lib and

For example:

$ cmake . -DWITH_JEFFPC=/opt/jeffpc <...other cmake args...>

Configuring & running

Once you have everything built, you can run it:

$ ./build/hlog <path to data directory>

The data directory is where hlog stores all the QSO information, a copy of the "country" database, and the config file about who you ("de station") are.

The easiest way to generate the data directory is to use the included init-data.sh shell script. This creates the directory along with the two mandatory subdirectories, generates a dummy config file, and fetches the current country database from the internet. Afterwards, you can open the config file (config.lua) in a text editor and tweak to taste.

The values specified in the fill_template function in the config file are defaults and you can override them when interactively while running hlog.

Because the config file is technically a Lua script, there is no limit to the kind of processing one can do. For example, it is possible to interactively prompt the user to identify the current location.

The README file included in the source tarball contains information about other configuration file options supported.


Once hlog is running, you use simple commands to set the various fields on the QSO.

In general, the more common commands try to be short, so one is not forced to type long strings in the middle of a contact. As a result, many commands are only one or two characters long. While many of the commands are intuitive, in most cases the field label underlines the characters of the label that make up the command.

For more information about the available commands and more of the design philosophy, look at the README file included in the source tarball.


If you have any questions or suggestions please direct them to jeffpc@josefsipek.net or use one of the other contact methods. If you found a bug, either use these contact methods to let me know about it, or file a bug.

You may want to check out the hlog mailing lists.