VIR · INVICTVS

Ex libris Brandon LaRocque

❦ programmer · curator · former chef ❦

the canon · the shelf of what built me

the influences · the hands behind the shelf

the stacks · ten thousand books, counted

the annals · every release, logged nightly

I. On the Author

My work focuses on native Linux desktop software. I build with Rust and GTK4, C built with Meson, and Python where the standard library reaches. Everything is local-first by default. I rely on SQLite in WAL mode with a single-writer worker, read-only connection pools, and FTS5 for search. No cloud accounts. No Docker. No Electron. No telemetry.

Where a rule can be a compile error instead of a convention, I make it one. I would rather ship against a hard memory ceiling than an optional benchmark, and I will port a battle-tested architecture with attribution before I invent a new one.

I drive an AI coding harness across the workspace, and I built it a staff: dragon-agents, twenty-four read-only research subagents that map repositories, audit releases, triage CI, and verify a claim before it gates any work. The staff reads and reports; it never writes. The drafting happens at my direction in the main thread, and the deciding happens nowhere else.

Compile-time invariants, test suites, dry-run defaults, single-writer SQLite: agent-drafted code meets the same gates any human patch would. A machine cannot argue its way past a borrow checker, and I wired my workflow so that I cannot either.

I came to this work late. I spent nearly twenty years in restaurants and mining camps before picking up The C Programming Language. I read it at night between shifts because the cover looked serious and I wanted to know what serious looked like. I am a Computer Engineering Technician student now with a CS bachelor’s underway at Algoma; the paperwork is catching up to two decades of practice.

By temperament I am an archivist. I keep a private Calibre library that runs into the four figures, a music collection sorted by hand, and an RSS spool I read every morning. Friends have called the practice shadow librarianship. The catalogue is my own, kept on my own disks, and indexed by my own tools. Most of what I build is designed for people who treat their library as a resource worth maintaining.

The site is named Vir Invictus, the unconquered. I picked it a long time ago and it stuck.

I am open to work, and when the problem is cool enough the rate is a formality; the cool ones are why I got into this. Write to larocque.brandon+outreach@gmail.com.

❦

II. The Collection

Native Linux desktop software sits at the centre, with games, KOReader companions, and small utilities at the edges. Local-first is the default; the throughline is curation. What follows is a selection of the most active work. Atrium is the largest piece in motion. The rest are sorted by category.

Applications

No. 001

Atrium

Rust · GTK4 · tokio · SQLite · shipping · v0.76.0

Atrium's Today view: six canonical lists in the sidebar, coloured tag pills, and the Area › Project chip on each row

The native Linux task manager you grow into, not out of. An Org-mode app wearing a Things 3 / OmniFocus disguise: UUIDs on every node, plain-text round-trip, deadlines and schedules and contexts as first-class data, in a fast GTK4 surface styled by vir-gtk that never asks you to open Emacs, with search powered by vir-search.

No. 002

Docket

Rust · GTK4 · GtkSourceView · shipping · v1.0.0

Docket's start page: a working checklist, live searches, tags, and the sidebar

A plain-text task editor, clean-room faithful to the TaskPaper format: projects end with a colon, tasks start with a dash, and the files stay plain text any editor can open. Folding, live queries, and the reference's structural commands in a GTK4 surface.

No. 003

Viaduct

Rust · GTK4 · tokio · WebKit · active · v4.4.1

Viaduct's three-pane layout: feed sidebar with unread counts, article timeline, and the reading pane on the v3.0 flat Kanagawa design

A Linux port of Brent Simmons\' NetNewsWire RSS reader: a headless core and a GTK4 front end styled by vir-gtk, smart feeds parsed by vir-search.

No. 004

Framework

C · Meson · GTK4 · MuPDF · DjVuLibre · shipping · v1.0.2

Framework rendering a 168-page PDF with the table-of-contents sidebar open and two pages visible in the scroll

A native Linux document viewer for PDF, DjVu, CBZ, CB7, CBT, CBR, XPS, EPUB, FB2, MOBI, AZW3, TXT, and Markdown: the gap between feature-heavy clients (Okular) and bare MuPDF wrappers, a SumatraPDF-shaped experience for Linux.

No. 005

raindrop-cli

Python (stdlib only) · complete · v0.7.0

raindrop-cli output showing bookmarked links

Dependency-free CLI for raindrop.io and pinboard. Full REST API coverage over stdlib urllib; designed ANSI for humans and --json for scripts and agents, typed errors, rate-limit backoff, --dry-run on every write, blast-radius-gated confirmation prompts, and a two-way additive sync between the two services.

No. 006

vir-gtk

Rust · GTK4 · complete · v1.4.3

A standalone Rust library extracting the shared GTK4 styling and D-Bus portal interaction layer for the VirInvictus desktop suite: the Kanagawa stylesheet and portal plumbing behind its apps, libadwaita removed.

No. 007

vir-search

Rust · complete · v1.4.3

A domain-agnostic Rust library for parsing Calibre-style search expressions into a typed AST. It provides the lexer, generic recursive-descent parser, and date-range resolvers shared by Atrium, Conservatory, and Viaduct.

No. 008

Quire

Rust · GTK4 · numbat · shipping · v1.5.3

Quire's welcome sheet: the tour with live answers in a right-hand results column

A soulver-style notepad calculator: prose and math share one plain-text sheet and every expression answers in a right-hand results column, with dimension-checked units, currency, and line references that renumber themselves.

Books & Calibre

No. 009

Hermitage

Python 3.13+ · GTK4 · shipping · v1.8.8

Hermitage's cover-art grid filtered to a virtual library, with the Wing sidebar open and the search bar showing the active expression

Built for the single user who wants a modern desktop experience over a Calibre library without Docker or a web auth layer in the way, powered by cquarry.

No. 010

CalibreQuarry

Python · cquarry · vir-tui · active · v3.84.1

CalibreQuarry's --stats output: hierarchical dot-taxonomy tag counts, series with book totals, publishers, languages, and recent additions

Calibre power-user tooling built on cquarry: catalogues, statistics, integrity audits, and write-capable curation verbs behind --apply-shaped guards. Installs from PyPI as calibrequarry.

No. 011

bindery-cli

Python (tqdm, vir-tui) · epubcheck · active · v0.60.0

bindery-cli's dry-run library sweep: per-book epubcheck results above a summary table ending in 'no files written'

A command-line surgeon for malformed EPUBs. Evaluates thousands of books in minutes, repairing structural defects, unwrapping illegal HTML markup, and auditing for content damage (OCR, wrong-language tags) before swapping the fixed formats natively into your Calibre database via cquarry.

No. 012

cquarry

Python (stdlib only) · active · v1.29.0

A canonical Python package providing read-only access to Calibre's metadata.db and a full parser for Calibre's native search expression grammar; the opt-in cquarry.write module is the collection's only sanctioned write path.

No. 013

Carrel

CSS · docs · shipping · v0.9.10

A single-user reading room for a curated calibre library: ok-lab accessible typography, no login, metadata.db attached read-only, and a search bar that speaks Calibre's own expression language. The code rides in the companion fork.

Music & Audio

No. 014

Conservatory

Rust · GTK4 · libmpv · SQLite · active · v0.9.1

Conservatory's music library: three Columns UI facet panes over genre, album artist, and album, above a rated track list and the player bar

Conservatory owns the music, podcast, and audiobook files on disk; the database is truth and the folder tree is a projection of it. Browsing is foobar2000-style facets; playback runs through libmpv from one queue. The surface is vir-gtk's flat Kanagawa on plain GTK4; vir-search drives the search expression grammar.

No. 015

lattice-music

Python · mutagen · ffmpeg · active · v6.4.1

lattice-music's curses TUI: a bordered menu grouped into Library, Integrity, Artwork, Metadata, and Settings sections

Tooling for music collectors who keep the filesystem as the source of truth. Library-tree visualisation across artist / album / track / rating / genre.

No. 016

deadbeef-cui

C · GTK3 · complete · v2.2.1

deadbeef-cui's three facet columns narrowing genre, album artist, and album above the playlist, with cover art and a waveform seekbar

A faceted-browser plugin for the DeaDBeeF music player, bringing foobar2000-style Columns UI / Facets to Linux.

KOReader

No. 017

Colophon

Rust · GTK4 · Cairo · shipping · v2.6.0

Colophon rendering reading statistics with Cairo charts

Native statistics viewer for KOReader. Imports a copy of statistics.sqlite3, draws its own Cairo charts, surfaces the analytics the reader itself never shows.

No. 018

saforums

Lua · KOReader · active · v0.5.4

Read the Something Awful Forums on your e-reader: login with persisted cookies, forum index and bookmark shelf with unread counts, and continue-at-unread, rendered as native koreader post cards. Screen-scraped by a written contract, tested against synthetic fixtures.

No. 019

Dead Reckoning

Lua · complete · v1.0.0

Navigation-cockpit preset for KOReader's bookends plugin: session pace, chapter ETA, projected finish date, and chapter ticks on the progress bar.

No. 020

Sleepscreen Banner

Lua · complete

KOReader user patch: redraws the sleep screen as a Kobo-style floating card over your cover, with a random highlight as a pull-quote. A prettified fork of zenixlabs' patch.

No. 021

1-timezone

Lua · complete

KOReader user patch: forces a correct POSIX timezone inside the process (setenv + tzset), fixing the clock, time sync, and autowarmth on framework-less installs where no TZ is set.

Games & Engines

No. 022

Hearthfall

Python · Textual · active · v0.28.0

Hearthfall's terminal UI showing a map and clan statistics

Grimdark clan-survival for the terminal. Seasonal turns, a fog-black map, and a finite clan split between foraging, exploring, and war. The engine is stdlib-only pure logic with no i/o and no rendering, driveable from a repl; every draw goes through one seeded RNG, so a seed replays a run exactly.

The Foundry

No. 023

dragon-agents

Markdown · Python (stdlib) · active · v0.7.1

Twenty-four read-only research subagents in a local ZCode plugin: release audits, CI triage, repo cartography, claim checks, markets and machine-health briefs. Nothing they read is ever written; the deciding and the editing stay with the main thread.

No. 024

annals

Python (stdlib only) · active · v0.1.3

The codex's own bookkeeper: every release and commit across the collection, rendered nightly into one reproducible ledger. Its published output is the patchnotes page and the ledger line below.

The rest of the codex

The collection keeps twelve more volumes on the shelf, each with its own page: AudiobookTools, Catagotchi, crash-course, Haveli, Hearth, hex, opends, project-void, project-yeschef, Topograph, vir-tui, and whisker-street.

As of 2026-11-06 the ledger reads 44 repositories · 1,590 releases · 5,292 commits; November 2026 added 46 releases across 8 of them. The newest entry is hex 0.13.1 (11-06). The whole record lands in the patchnotes, regenerated nightly from each repo’s own log.

❦

III. Dispatches

If any of this saved you time, the tip jar lives at GitHub Sponsors; Liberapay (liberapay.com/bdkl) and bitcoin (bc1qkge6zr45tzqfwfmvma2ylumt6mg7wlwmhr05yv) ride along in the profile's support section.