The main driver for writing the rest of this code. A cross platform console based ham contact logger. I'm developing it for my own use, so it only has features I need/want.
- Saves logs as ADIF files with custom fields
- Supports auto-commiting log filesgit to a git repository
- DX cluster, SOTA, & POTA spot monitoring
- Radio control through hamlib (github.com/dh1tw/goHamlib)
- Logs for both WSJT-X and fldigi
- LoTW integration (syncs QSL information from LoTW to stored ADIF files)
- Band Conditions from HamQSL
```
sudo apt-get install -y libhamlib2
sudo wget https://github.com/s0lesurviv0r/ham-go/releases/download/v0.3.2/termlog.amd64 -O /usr/bin/termlog
sudo chmod a+x /usr/bin/termlog
/usr/bin/termlog --upgrade-config
```
sudo apt-get install -y libhamlib2
sudo wget https://github.com/s0lesurviv0r/ham-go/releases/download/v0.3.2/termlog.arm -O /usr/bin/termlog
sudo chmod a+x /usr/bin/termlog
/usr/bin/termlog --upgrade-config
sudo apt-get install -y libhamlib2
sudo wget https://github.com/s0lesurviv0r/ham-go/releases/download/v0.3.2/termlog.arm64 -O /usr/bin/termlog
sudo chmod a+x /usr/bin/termlog
/usr/bin/termlog --upgrade-config
Precompiled binaries are also available at https://github.com/s0lesurviv0r/ham-go/releases
- Run termlog once, then hit Ctrl+Q to quit. This will create an initial config file at ~/.termlog.toml that you can then modify.
- Fill out the operator section at a minimum
Custom user commands can be reached through Ctrl+E
. These command are defined in the configuration file and environment
variables are used to pass state to the command line.
As an exanple, the following will construct a command that syncs the current ADIF log file with LoTW using tqsl.
[[Operator.Commands]]
Name = "Sync Current Logfile with LoTW"
Command = "$TQSL -a compliant --nodate --upload --batch $LOGFILE"
Environment Variables
- LOGFILE - Path to the current logfile
- TQSL - Path to the tqsl binary configured in the configuration file
In the configuration file, custom ADIF fields can be defined. A SOTA field is defined in the default configuration and can be removed if not needed.
[[Operator.CustomFields]]
Name = "sota_ref"
Label = "SOTA"
Width = 8
Default = ""
Usage of ./termlog:
-color-test
display a color test
-config string
path to the configuration file (default "~/.termlog.toml")
-hamlib-list
list the supported libhamlib devices
-index
index the ADIF files passed in on the command line
-key-test
list keyboard events
-log string
specify a log file to load and write to
-no-net
disable all features that require network access (useful for POTA/SOTA)
-no-rig
disable rig control, even if enabled in the config file
-search string
search the indexed ADIF files and print the results
-sync-lotw-qsl
fetches QSL information from LoTW to update log QSL information in the default log directory
-upgrade-config
upgrade the configuration file to the latest format
Shortcut | Command |
---|---|
Ctrl+Q | Quit termlog |
Ctrl+H | Display Help |
Ctrl+N | Start a new QSO (clearing the current one if not saved) |
Ctrl+D | Set the QSO time on to the current time |
Ctrl+S | Save the QSO to the log and start a new one |
Ctrl+G | Commit the current logfile to git |
Ctrl+B | Save a bookmark |
Alt+B | Open the bookmark list |
Ctrl+L | Focus the QSO List |
Ctrl+E | Display custom user commands |
Ctrl+R | Force screen redraw |
Alt+Left | Tune down 500khz |
Alt+Right | Tune up 500khz |
Ctrl+C | Show band conditions |
ADIF parsing and writing
Callsign lookup interface with a couple of supported backends.
ADIF indexer used to quickly identify when you last saw a contact and how many times you've logged him.
Callsign lookup via prefixes/exceptions through the data at www.country-files.com (works offline).
The beginnings of a DXCluster client.
Enough code to parse the realtime fldigi emitted logs and save them to termlog.
Enough code to parse the realtime WSJT-X emitted logs and save them to termlog. I use this when running FT8 to capture logs in real time from WSJT-X.