2: tmux-blog.mdx — less

barry@log ~/posts $ cat tmux-blog.mdx

date: 2026-11-07 · tags: [css, terminal, vim] · read: 2 min

Making a blog look like tmux

I live in a terminal all day, so the blog should feel like one more pane in the session. No hero images, no cards, just text in a monospace grid.

The best UI is the one you already have open.

why

Markdown already reads well raw. Instead of hiding the syntax, this theme keeps #, ** and > visible but dimmed, so the page looks like the source file.

layout

panes

  • left: file listing for the posts
  • left-bottom: outline built from the headings
  • right: the post itself, the active pane
/* 1px grid gap shows the parent bg = pane divider */
.panes {
  display: grid;
  gap: 1px;
  background: var(--t-border);
}

status bar

The bottom bar lists every post as a window. The current one is highlighted, same as tmux marks it with *. See the tmux man page for the real thing.

It’s split into three parts, like status-justify centre: session name and mode on the left, windows in the middle, clock on the right.

/* 1fr | auto | 1fr keeps the middle truly centred */
.status {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
}

keys

prefix

Ctrl-a arms the prefix (a [prefix] flag shows up in the status bar), then:

  • n / p: next / previous window
  • 0-9: jump to window N
  • o: cycle the active pane, z: zoom it
  • d: detach, back home
  • ?: show every key on the page. Esc closes it.

vim

The post pane is in normal mode by default, and the status bar says [NORMAL]. h j k l, w b e, 0 $, gg G and Ctrl-d / Ctrl-u move a caret through the text. v switches to [VISUAL] and y copies the selection.

home

/ is a tiny shell. ls, cd about, whoami, clear, with tab completion and up/down history. help prints the rest.

The /posts listing is ls -la: j/k to move, gg/G for top and bottom, l or Enter to open.


next

Every .mdx file in src/content/posts becomes a page at /post/<slug>.

(END)

hjkl w b e · 0 $ · gg G · C-d/u · v visual · y copy · C-a ? tmux