A collection of useful things I use and keep around
A domain-agnostic public repo of small tools I actually use, one directory per tool under src/. It is not a product line. The first inhabitant is webapp-launcher, a Bash CLI that turns a website into a GNOME dock app with an isolated Chromium profile, an icon, and window grouping that does not collapse under Chrome.
Give the small things I use a single repo instead of scattering scripts, without tying the collection to one domain.
Problem being solved
One-off tools have nowhere durable to live. The first tool also has to stop Chromium --app windows grouping under Chrome, stretching icons, and mixing logins.
Key challenges
The collection must stay generic while the only shipped tool is GNOME-specific (src/webapp-launcher/)
Chromium encodes URL path into WM_CLASS, so host-only guesses mis-group /finance/ (src/webapp-launcher/webapp-launcher)
Pure Wayland with no DISPLAY has no X window class to read (src/webapp-launcher/webapp-launcher)
Matching windows by title can bind a normal Chrome tab whose instance is chrome (src/webapp-launcher/webapp-launcher)
GNOME stretches non-square dock icons unless margins are trimmed then padded (src/webapp-launcher/webapp-launcher)
Each isolated profile is a fresh Chrome and prompts to become the default browser (src/webapp-launcher/webapp-launcher)
Conceptual dock of small tools. This is a code-rendered concept preview, not a product screenshot.
Screenshots
Not added yet
Profile delete is destructive and must stay opt-in on ~/.config/chrome-* only (src/webapp-launcher/webapp-launcher)
Design decisions
One directory per tool under src/; do not flatten tools into the repo root (AGENTS.md)
Root README is a catalog, not a domain manifesto (README.md)
Write a usable .desktop immediately, then overwrite StartupWMClass from a live window (src/webapp-launcher/webapp-launcher)
Per-site --user-data-dir at ~/.config/chrome-<slug>/ so sessions stay isolated (src/webapp-launcher/webapp-launcher)
Exec always includes --start-maximized (src/webapp-launcher/webapp-launcher)
Non-TTY create fails instead of treating piped stdin as answers (src/webapp-launcher/webapp-launcher)
Knowledge kernel is AGENTS.md plus pointer files; no empty docs rings (AGENTS.md)
Git & development activity
Future
What’s next
Add the next self-contained tool under src/ when there is one; the tree currently has only webapp-launcher.
Roadmap
Tests beyond bash -n on src/webapp-launcher/webapp-launcher
CI for python3 scripts/lint_knowledge.py --strict if the repo grows a workflow
docs/now.md or docs/decisions/ when a choice needs an ADR (AGENTS.md)