A collection of mathematical tableaux (dashboard scenes) for snacks.nvim's dashboard. 31 presets ranging from animated number-theoretic processes (the Sieve of Eratosthenes, Collatz trajectories, π's continued-fraction convergents) to live dynamical systems (Conway's Game of Life, the Lorenz attractor) to topological objects (Königsberg bridges, fundamental polygons of closed surfaces) to contemplative scenes (a time-of-day sky with twinkling stars and weather overlay, daily-rotating mathematician quotes, an Obsidian-vault gem).
Standalone by design, but slots cleanly into NoetherVim as an optional bundle.
- Neovim ≥ 0.10 (uses
vim.system,vim.uv) - snacks.nvim with
dashboardenabled curlon$PATH(only for the optional weather feature in theconstellationpreset)
With lazy.nvim:
{
"Chiarandini/noethervim-tableaux",
lazy = false, -- needs to register the SnacksDashboardOpened autocmd at startup
opts = {
-- override the bundled mathematician quotes with your own list
-- quotes = require("user.data.math_quotes"),
-- wire the `vault` preset to a real Obsidian vault
-- vault = { path = "~/Documents/MyVault/", today_cmd = ":ObsidianToday" },
-- bind <space>ud to pick, <space>uD to cycle (default true)
-- keymaps = true,
},
}In dev mode (e.g. while editing the plugin in ~/programming/custom_plugins/):
{ "Chiarandini/noethervim-tableaux", dev = true, lazy = false, opts = {} }Once snacks renders the dashboard, the chosen tableau is layered on top. Pick or cycle with:
| command | what it does |
|---|---|
:Tableau |
open a picker over all tableaux |
:Tableau <name> |
switch to a specific tableau (tab-completes) |
:Tableau random |
activate random mode — rerolls a different one each open |
:Tableau default |
revert to the distro's plain dashboard (effective restart) |
:TableauNext |
cycle forward |
:TableauPrev |
cycle backward |
:TableauWeather |
force-refresh the wttr.in weather cache |
Aliases preserved for muscle memory: :Dash, :DashNext, :DashPrev.
Default keymaps (disable with keymaps = false):
<space>ud→:Tableau(picker)<space>uD→:TableauNext(cycle)
Your selection persists across restarts in stdpath("state")/user_dashboard_variant.
| name | type | what to expect |
|---|---|---|
noether |
static | distro-namesake "NOETHER" block letters |
math |
static | ∫ ∂ ∇ ∑ ∏ ⊕ ⊗ ∞ glyph bar |
vault |
animated · subtle | Obsidian-crystal silhouette with shimmering interior, Obsidian-focused keys |
quotes |
static · daily | word-wrapped mathematician quote in a frame |
chalkboard |
static · daily | grad-math equation + theorem name (Riemann, Yoneda, Stokes, BSD, Hodge, …) |
constellation |
animated · time + weather | dawn / morning / midday / afternoon / dusk / evening / night scene; stars twinkle, sun pulses, weather overlay |
commutative |
static | category-theory commutative square A → B, ↓↓, C → D with h ∘ f = k ∘ g |
typewriter |
animated | math glyph bar reveals one glyph at a time with a blinking cursor |
sieve |
animated | Sieve of Eratosthenes on 1–36; each tick crosses out the next prime's multiples |
sierpinski |
animated | Pascal's triangle mod 2 builds row by row |
lambda |
animated | β-reduction of (λx. λy. x + y) 3 4 → 7 revealed step by step |
collatz |
animated · daily seed | 3n+1 trajectory revealed term by term |
conway |
animated | Conway's Game of Life — glider drifting across a 9×20 board |
cayley |
static · daily | Cayley table for V / Z/4 / Z/5 / S₃ |
matrix |
animated | 2×2 matrix multiplication with the dot-product formula |
ulam |
static | Ulam spiral 1–49, primes marked with * |
fibonacci |
animated | Fibonacci terms reveal; running ratio F(n)/F(n-1) converges to φ |
partitions |
static · daily | integer partitions of n (n ∈ {4, 5, 6}) drawn as Young diagrams |
mandelbrot |
animated | 50×18 ASCII Mandelbrot; max-iter grows so detail emerges |
knight |
animated | Beverly's 1848 semi-magic knight's tour, one square per tick |
pi |
animated | π's continued-fraction convergents reveal one at a time |
random-walk |
animated | 41-bar histogram of random-walk endpoints converging to a normal |
lorenz |
animated | Lorenz attractor X-Z projection, butterfly traced point by point |
turing |
animated | tiny Turing machine increments 0111 → 1000, then auto-restarts |
truth-table |
static · daily | tautology truth table (Material Implication, Contraposition, De Morgan, …) |
catalan |
static · daily | C₃ = 5 Dyck paths in matched parens / U-D / arrow notation |
galton-board |
animated | Galton board with 5 balls per tick → binomial(8, ½) histogram |
lissajous |
animated · daily | parametric curve x = sin(at + π/2), y = sin(bt); ratio rotates daily |
konigsberg |
static | the 4-vertex / 7-bridge graph that Euler proved had no Eulerian walk |
cantor |
animated | Cantor set built up by iterated middle-thirds removal |
fundamental-polygon |
static · daily | edge-identification square for Torus / Klein bottle / RP² / Cylinder |
Plus two meta entries:
default— clears the override; the distro's plain dashboard renders next startup.random— rerolls a different concrete preset on every open.
require("noethervim-tableaux").setup({
state_file = vim.fn.stdpath("state") .. "/user_dashboard_variant",
keymaps = true,
pick_key = "<space>ud",
cycle_key = "<space>uD",
vault = nil, -- { path = "...", today_cmd = ":ObsidianToday" }
quotes = nil, -- list of { text = "...", author = "..." }
weather = true, -- enable wttr.in fetch for the constellation preset
})If quotes is nil, the bundled math_quotes.lua (~30 insight-rich
mathematician quotes) is used.
If vault is nil, the vault tableau falls back to generic launch keys
(it's still a perfectly fine scene; the keys just don't go anywhere
Obsidian-specific).
Drop a file at lua/noethervim-tableaux/presets/<name>.lua returning a table:
return {
name = "<display-name>",
header = "..." or function() return "..." end,
keys = require("noethervim-tableaux.presets._common").common_keys,
on_open = function() ... end, -- optional, for animations
}Or a module with a M.build(config) function if your preset depends on
plugin config. Then add the name to M.order in presets/init.lua.
Future ideas live in IDEAS.md.
The chalkboard theorems and cayley groups draw from standard
graduate algebraic and topological texts. Beverly's 1848 knight's tour
is reproduced from his published solution. The quotes selection is
curated for insight density rather than completeness.