Skip to content

Chiarandini/noethervim-tableaux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

noethervim-tableaux

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.


Requirements

  • Neovim ≥ 0.10 (uses vim.system, vim.uv)
  • snacks.nvim with dashboard enabled
  • curl on $PATH (only for the optional weather feature in the constellation preset)

Installation

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 = {} }

Usage

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.


The tableaux

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.

Configuration

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


Adding your own tableau

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.


Credits

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.

About

Mathematical dashboard scenes for snacks.nvim — 31 animated and static tableaux for Neovim

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages