VIR · INVICTVS

Ex libris Brandon LaRocque

programmer · curator · former chef

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 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.

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

Viaduct

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

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. Styled by vir-gtk with search powered by vir-search.

No. 003

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. 004

raindrop-cli

Python (stdlib only) · active · 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. 005

vir-gtk

Rust · GTK4 · active · v1.4.2

A standalone Rust library extracting the shared GTK4 styling and D-Bus portal interaction layer for the VirInvictus desktop suite, providing the foundational visual identity without libadwaita.

No. 006

vir-search

Rust · active · 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 that underpin the VirInvictus ecosystem.

Books & Calibre

No. 007

Hermitage

Python 3.13+ · GTK4 · shipping · v1.8.5

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. 008

CalibreQuarry

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

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: catalogs, statistics, integrity audits, and write-capable curation verbs behind --apply-shaped guards. Installs from PyPI as calibrequarry.

No. 009

bindery-cli

Python (tqdm) · epubcheck · active · v0.45.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. 010

cquarry

Python (stdlib only) · active · v1.23.2

A lightweight, 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 ecosystem's only sanctioned write path.

Music & Audio

No. 011

Conservatory

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

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 and organizes your music, podcasts, and audiobooks on disk, presenting them through a foobar2000 Columns UI browse surface and played through a libmpv daily-driver engine that runs all three media types from one queue. UI styled by vir-gtk and search powered by vir-search.

No. 012

lattice-music

Python · mutagen · ffmpeg · active · v5.6.0

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 visualization across artist / album / track / rating / genre.

No. 013

deadbeef-cui

C · GTK3 · complete · v1.3.7

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. 014

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, ships the reading analytics nobody else has.

No. 015

Dead Reckoning

Lua · complete

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

No. 016

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. 017

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. 018

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 rest of the codex

The collection keeps eleven more volumes on the shelf, each with its own page: AudiobookTools, Carrel, Catagotchi, dragon-agents, Haveli, Hearth, opends, project-void, project-yeschef, Topograph, and vir-tui.

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.