I’ve been plugging away at another TUI app, this time for notes. It’s very much in line with the thing I was trying to do with bash and fzf, but instead in Go. Right now:

  • Fast search for notes in either a configured directory or one named on the command line
  • Tag search, either in-line (#tag) or in YAML frontmatter
  • Open to-do search
  • Hotkey to make a daily note of a given format
  • Alternate note template. If you see the point in YAML frontmatter, it’ll do that. If you prefer “l1 heading from the title” it’ll do that.
  • It does a very basic sort of Markdown rendering on its own for note preview, or you can configure it to shell out to bat, glow, etc. I am using glow because it has an option to edit a file under preview.

It works really well with Helix or other LSP-aware editors, because you can add the Marksman LSP server and have your own connected notes system with wiki-linking without having to adopt another app, like Obsidian, if you don’t want that whole ride.

This morning I realized there is an opportunity to integrate it with contacts-tui via tag searching, so I added a command line switch to search for a tag and launch with that tag search: notes-tui --tag=@label. On the contacts-tui side, I added a command to launch that search by tapping O on a selected contact.

Launching that tag search from contacts-tui, I end up in the notes app with all the related notes for that contact in view. I can cursor around, read the notes, etc. and when I ESC out of the notes app, I’m back at the contact record in the contacts app. Tap t and I get a list of open tasks for that contact in TaskWarrior, Things, or dstask.

Or do none of that, because both tools work fine on their own.

It kinda gives me the idea to move contacts out of its sqlite backend and just move to plaintext serializing for contact info, with ripgrep to manage contact search.