Spread pager
19. 6. 2026Multicolumn pager (vibe coded in golang).
https://github.com/brontosaurusrex/spread

Multicolumn pager (vibe coded in golang).
https://github.com/brontosaurusrex/spread

https://github.com/brontosaurusrex/gameOfLifeGolang

Deepseek spined this one from my old bash script. It is quite a lot faster.
https://brontosaurusrex.github.io/gameOfLifeGolang
h = hide/show status
space = play/pause
, and . = frame by frame inspection
Something like that in .zshrc
# making FZF to look like my fancy note script
# Black & white - explicitly disable all colors
export FZF_DEFAULT_OPTS="--no-color --pointer='>' --color=fg:-1,bg:-1,hl:-1,fg+:-1,bg+:-1,hl+:-1,info:-1,prompt:-1,spinner:-1,pointer:-1,marker:-1,border:-1"
# CTRL-T command - recent files first
export FZF_CTRL_T_COMMAND='find . -type f -not -path "./.git/*" -printf "%T@ %P\n" 2>/dev/null | sort -nr | cut -d" " -f2-'
# or faster find with fdfind
# export FZF_CTRL_T_COMMAND='fdfind . --type f --hidden --exclude .git --strip-cwd-prefix -x stat -c "%Y %n" {} \; 2>/dev/null | sort -nr | cut -d" " -f2-'
# Preview configuration
export FZF_CTRL_T_OPTS="
--no-color
--prompt='file> '
--pointer='>'
--marker='*'
--bind='tab:toggle'
--preview='fzf_preview_mine {}'
--preview-window='right:50%:wrap:noinfo'
--height=80%
--reverse"
And the preview script fzf_preview_mine. Should handle a subset of txt, epub, pdf, video, audio, image files as 2nd pane fzf preview. Needs sixels and some apps like: ffmpeg, mediainfo, mpv, chafa, imagemagick convert (psd), inkscape (svg), atool (preview archives) …

Chafa version 1.18.2
fzf 0.60 (devel)
Newer might be fine.
https://github.com/juanmitaboada/preview
https://github.com/semi710/fzf-preview/blob/master/fzf-preview
Export each into separated html
n c chess | pandoc -s -f markdown -t html5 -o tmp/01.htm
n c jobs | pandoc -s -f markdown -t html5 -o tmp/02.htm
n c pandoc | pandoc -s -f markdown -t html5 -o tmp/03.htm
cd tmp
merge into one
pandoc 01.htm 02.htm 03.htm -o all.htm -H style.css -V title="" --metadata=title=" "
There must be a simpler way. (This needs to be a standalone script if functionality is desired.)
n c 12 | awk '
BEGIN { inmeta=0 }
# toggle frontmatter
/^---$/ {
inmeta = !inmeta
next
}
# inside frontmatter
inmeta {
if ($1 == "title:") {
$1=""
sub(/^ +/, "", $0)
print "# " $0
}
next
}
# normal content
{ print }
' | md2html -f --github --fpermissive-autolinks > md.htm
and then add some css to md5, like
<link rel="stylesheet" href="https://unpkg.com/sakura.css/css/sakura.css" media="screen" />
<link rel="stylesheet" href="https://unpkg.com/sakura.css/css/sakura-dark.css" media="screen and (prefers-color-scheme: dark)" />
<style>
p, ul, li { font-family: "Noto Serif", serif; font-size: large }
a { font-family: "Noto Serif", serif; font-size: large }
pre { font-size: large; border-radius: 12px; background-color: black;}
h1 { text-align: center; font-family: 'Noto Sans', sans; font-size: xxx-large }
h2, h3, h4 { font-family: "Noto Sans", sans; }
</style>
This ^ actually looks almost good.
According to 38 notes written in last three weeks. Chatgpt is getting the prompt:
You are analyzing a collection of personal markdown notes. Tasks: - Identify recurring themes. - Identify projects or interests. - Identify what the author appears focused on recently. - Give a best-effort overview of current thinking. - Be concise and grounded in the text. - Do not invent personal details. - Do not diagnose mental state. - Output plain text only. Structure output like: Themes: - … Current focus: - … Possible ongoing projects: - … Best-effort interpretation: …
and all 38 short notes as an attachement.
The notes suggest someone building a highly personal, terminal-centric workflow focused on speed, ownership, and local control. There is repeated interest in systems that connect notes, AI, and search into a cohesive personal knowledge environment. The author appears drawn to lightweight, composable tools rather than large integrated platforms, and often evaluates software through the lens of openness, self-hosting, and practical workflow utility.
The thinking style reflected in the notes is exploratory and iterative: saving links, implementation details, commands, partial ideas, and workflow experiments as building blocks for future refinement. There is also a recurring pattern of comparing conceptual systems (Zettelkasten, semantic graphs, AI memory layers, CRUD, git sync, UI paradigms) and adapting them into practical personal tooling.
Secondary interests visible in the notes include chess improvement, retro computing aesthetics/history, desktop customization, and media tooling.
No idea what deduplication would do or is, and my crappy chess ELO keeps falling down. Everybody knows that fzf is cool.
Another note-taking app? Yes, there are billions. Basic CRUD for the CLI? Absolutely. No databases, no config files, no setup – just a single bash script and a plain text directory. Unapologetically terminal-first – works over SSH, in tmux, on a Raspberry Pi, or on a 15-year-old laptop. If you have a shell, you have a notes app.
No linking, no Zettelkasten, no forcing it into more than text (yes, you can write Markdown, but it’s optional).
If you’re here for the code – it’s one file. Read it, break it, change it. That’s the point.
needs: fzf, ripgrep (rg)
note --help
Usage:
note n "title" → new note with explicit title
note "text" → create/reopen note
note l → list
note o → open (fzf)
note s → search (rg|fzf)
note c → cat latest n notes
note rm → move to .trash
note pull → git pull
note push → git push
note --longhelp | less → full help
note h → this help
Storage: /home/b/notes
Multiple parameters to run same command, for example
note
# and
note open
are the same (neat little dual pane tui is presented), and if you add a parameter (file name approximation)
note open gemma
it will open first filename that has some gemma in there. Search is similar.
note s
will open neat little tui as well, piping ripgrep output to fzf and behaving like file selector.
note c
note c 3
should cat last changed note or last 3 changed notes.
note list
should list files/notes to stdout, not sure if this is needed (open does similar job).
Text editor, by default $EDITOR variable is used, if undefined it will try to load hx (helix) or vim or nano. Configure to your needs. By default notes will be stored in $HOME/notes, configure as needed.
Not needing the specific title is the idea as well, so
note nice weather today
shall make a note with filename ‘2026-04-27-nice-weather-today.md’.
Up and down will select files, shift+up and shift+down will scroll the text pane on the right (mice should also work).
Scrot (‘open note’ fzf tui):

of $HOME/notes is up to the user. I use git.
Separated script with similar tui that will extract urls from notes and open one or two in browser (tab toggles selected).
Fix markdown using local gemma4 model. Will write ‘fixed’ version to stdout. (Much faster version would be node cli tool markdownlint --fix some.md)
Display notes in localy generated html page (needs rewrite).
Find the 1st note that has ‘jobs’ in the title and pipe to terminal markdown renderer:
note c jobs | glow -w 120
Pretty neat markdown render in terminal. Glow is in Trixie repos.
note c jobs | pandoc -s -f markdown -t html5 -H style.css -o tmp.htm && xdg-open tmp.htm
Would take first note that has ‘jobs’ in its name.
Where style.css might be:
<style type="text/css">
p, ul, li { font-family: "Noto Serif", serif; font-size: large }
/* .date {font-size: small;} */
a { font-family: "Noto Serif", serif; font-size: large }
pre { font-size: large; color: #f5f5f5; background-color: #464876; padding: 20px; border-radius: 5px;}
blockquote { margin: 0; color: #111111; border-left: 1px solid #999999;}
h1 { text-align: center; font-family: 'Noto Sans', sans; font-size: xxx-large }
h2, h3, h4 { font-family: "Noto Sans", sans; }
hr { border-top: 1px solid black; visibility: hidden; }
a:link { text-decoration: none; color: #111155; }
a:visited { text-decoration: none; color: #111155; }
a:hover { text-decoration: underline; }
a:active { text-decoration: underline; }
body, html {
background-color: #F5F5F5;
color: #111111;
line-height: 1.6;
}
</style>
https://en.wikipedia.org/wiki/Zettelkasten
A Zettelkasten (German: ‘slipbox’, plural Zettelkästen) or card file consists of small items of information stored on Zetteln (German: ‘slips’; singular: Zettel), paper slips or cards, that may be linked to each other through subject headings or other metadata such as numbers and tags. It has often been used as a system of note-taking and personal knowledge management for research, study, and writing.
![]()
https://www.youtube.com/watch?v=o1NJYnZCfmY
11:43 writing in your own words you ensure that you truly understand it before you put it into your notetaking system so when you find yourself unable to rephrase an idea or to to write it down in your own words it’s it’s a very clear indication that you haven’t fully grasped it yet …
https://github.com/zk-org/zk Looks very powerfull (untested).
https://www.youtube.com/watch?v=Ck4TriLMR4s
Author notes that organization/linking of notes should be done by depth, where more general concepts are at the top of the pyramid, and more specific at the bottom.
https://xwmx.github.io/nb (untested)
nb is a command line and local web note‑taking, bookmarking, archiving, and knowledge base application