AgiNG
Posted on 2025-03-12 08:00 +0000 in Coding • 4 min read
It seems I really do still have this need to create new terminal-based projects at the moment. There's been Braindrop, then Peplum, then after that came Hike. While I'm still tweaking and adding to them, and also using them to refine a wee library I'm building up that forms the core of my latest apps, I felt I still had this one app that I needed to finally build.
Since the 1990s I've had this mild obsession with building tools for maintaining access to Norton Guide files. I've written readers for GNU/Linux (which also works on macOS too), OS/2, Windows, GNU Emacs, and also or the web (in multiple incarnations). Those builds have covered a few languages, including C, C++, Pascal, JavaScript and Emacs Lisp.
I'd never written a Python library or application for it though.
So when I first saw Textual mentioned in passing on Twitter a few years
back, way back in the 0.1 days, I thought that could be the thing that would
push me over the edge. In anticipation of that, back in 2021, I initially
developed ngdb.py
. This is a library
that provides the core Norton Guide reading code for Python applications and
could form the basis for other tools.
As a test for this I then wrote ng2web
(which works, but I think still needs a bit of tidying up -- something I'm
aiming to do in the next few weeks).
Meanwhile, the journey with Textual itself kicked off, happened, and came to an end; and yet somehow I'd never got round to building the thing I'd initially looked at Textual for: a terminal-based Norton Guide reader that looked nice and modern (by terminal standards). When I initially joined Textualize the owner had actually said they wanted me to build this as test of the framework, to essentially start out by employing me to create some Free Software that would help dogfood the library, but that seemed to get forgotten.
Fast forward to the start of this month and I finally felt it was time to tackle this. The result is AgiNG1.
As of v0.1.0 it has most of the features you'd expect from a usable Norton Guide reader, including:
- An ability to add guide files to an in-application directory.
- The ability open and navigate a guide.
- Full see-also support, etc.
- Full translation of characters as were under MS-DOS into the terminal.
- The ability to copy entry text or source to the clipboard.
- The ability to copy save entry text or source to a file.
- Access to a guide's credits.
I still need to write some proper documentation for the application, but meanwhile all commands and key shortcuts can be discovered either via the help screen:
or by pulling up the command palette:
Hopefully the workings of the application will be fairly obvious to anyone who is familiar with Norton Guide files; if anything isn't making sense I'm more than happy to answer questions or take suggestions for improvements.
One wee feature I want to call out, that I felt was important to add, was a "classic view" facility. The thing with Norton Guide files is they were mostly created in the very late 1980s and early-to-mid 1990s. People would often get creative with the colouring within them, but in many cases the colouring assumed the default Norton Guide application. Its colours were white text on a blue background. So sometimes other colouring was done assuming that background.
You can see an example of this here, with an entry in a guide being viewed
using the default textual-dark
theme:
Notice the colouring in the syntax section. This is more obvious if the application is switched to one of the light themes:
With a nod to this issue in mind, I added the "classic view" for entries (which is a sticky setting -- turn it on and it stays on until you turn it off):
A little hard on the eyes, I think, but also filled with nostalgia!
Talking of themes, all the usual application themes are available, here's a wee selection:
AgiNG is licensed GPL-3.0 and available via
GitHub and also via
PyPi. If you have an environment that has
pipx
installed you should be able to get up and going with:
$ pipx install aging
It can also be installed with
Homebrew
by tapping davep/homebrew
and then installing aging
:
$ brew tap davep/homebrew
$ brew install aging
Expect to see more updates in the near future; as with other recent projects this is very much something I'm going to be dabbling with and improving as time goes on.
-
If you're wondering about the name, it's nothing more than a word that happens to have
NG
in it, and also a mild pun about this being an ageing hypertext help system; with the spelling acknowledging Peter Norton's nationality. ↩