▍ humdrum codex / glint v1.0.2
license AGPL-3.0
7.3 KB raw

glint

A modeless terminal markdown editor with live styling — a Bubble Tea TUI built for a notes vault. Type in a centered iA-Writer-style writing canvas with soft-wrapping and live markdown coloring, flip to a Glamour read preview, fuzzy-find notes with a live preview pane, and theme it to match your terminal (Flexoki light/dark + charm). Open any file, jump to today's daily note, or start a fresh document from anywhere. Code files open with calm, minimal syntax highlighting (strings, comments, and numbers only) so glint works as a quick $EDITOR too. Prose gets light inline spellcheck — a red curly underline under obvious typos, with one-key suggestions.

Install

brew tap humdrum/tap https://codex.humdrum.me/git/homebrew-tap.git
brew trust humdrum/tap   # Homebrew gates third-party taps
brew install glint

Upgrade later:

brew update && brew upgrade glint

Usage

glint                 # fuzzy picker over the current directory
glint notes.md        # open a file
glint -n [name]       # new note in the current dir (-n -i → inbox, -n -v → vault)
glint -t              # today's daily note
glint -d              # browse the daily-notes folder
glint -v              # fuzzy picker over your vault, from anywhere
glint -i              # fuzzy picker over your inbox
glint -c              # interactive config walkthrough
glint -h              # help: all commands and keys
glint --version       # print version

Every command flag accepts a short letter or the full word, with one or two dashes: -n / --n / -new / --new, -t / --today, -v / --vault, etc.

Keys

Key Action
type / arrows / Enter / Backspace / Del edit and move (Up/Down move by visual line)
Enter on a list item continue the list (-/*/+, N./N), - [ ] checkboxes; numbers increment); empty item exits the list
Tab / Shift+Tab indent / outdent the current list item
mouse click move the cursor
mouse wheel scroll the view
Home / End smart Home (first non-blank, then column 0) / end of line
type ( [ ` with no selection auto-closes the pair with the cursor inside; type the closer over it to step past
Shift+arrows · Shift+Home/End select text (Ctrl+Shift+←/→ selects by word)
Ctrl+C / Ctrl+X / Ctrl+V copy / cut / paste (system clipboard); pasting a URL over a selection makes a [selection](url) link
Alt+s / Alt+i / Alt+c / Alt+k wrap the selection: bold ** · italic _ · code ` · link [sel]() (toggles off if already wrapped; no selection inserts the empty pair)
type * _ ` [ ( { < " ' with a selection surround the selection with that punctuation (repeat to nest, e.g. *** for bold)
Alt+← / Alt+→ move by word (also Alt+b / Alt+f)
Alt+Backspace / Ctrl+W delete the word before the cursor (Alt+d deletes the word after)
Ctrl+U / Ctrl+K delete to start / end of line
Ctrl+Z / Ctrl+Y undo / redo
Ctrl+S save (an unnamed buffer prompts for a name → inbox)
Ctrl+P toggle the Glamour read preview
Ctrl+F fuzzy file picker (with live preview)
Ctrl+G find in document (Enter/ next, Shift+Tab/ prev, Esc close)
Ctrl+L go to line (type a number, Enter to jump, Esc to cancel)
Ctrl+D today's daily note
Ctrl+N new note in the current directory (a typed picker query becomes its name)
Ctrl+B new note in the inbox
Ctrl+T cycle theme (flexoki-light → flexoki-dark → charm)
Alt+; · click spellcheck popup on the misspelled word at the cursor (or click an underlined word): pick a suggestion 19, a add to dictionary, i ignore, t toggle spellcheck, Esc close
Ctrl+/ toggle the in-editor help overlay (keys + commands)
Ctrl+Q quit (press twice if there are unsaved changes)
Esc clear the selection, or close find / back to the editor

Configuration

Run glint -c for an interactive walkthrough that writes the file for you (no hand-editing, daily-format presets instead of raw Go layouts). The settings live in ~/.config/glint/config.toml (all keys optional):

vault_dir     = ""           # the vault `glint -v` opens from anywhere (e.g. "~/Notes"); unset = current dir
inbox_dir     = ""           # where `glint -n -i` / save-as land; "" = working dir, relative = under it
daily_subdir  = "Daily"      # daily notes live in <vault>/<daily_subdir>/ (absolute path used as-is)
daily_format  = "2006-01-02" # Go time layout for daily-note filenames
theme         = "auto"       # auto | flexoki-light | flexoki-dark | charm  (auto detects macOS appearance)
glamour_style = ""           # override the preview style; "" follows the theme
spellcheck    = "auto"       # auto | on | off  (auto = on for prose/notes, off for code files)

Two roots. Bare glint, glint -n, and -d operate on the working directory — the folder you launched from (or $GLINT_VAULT if set), so glint works in whatever repo you're in. glint -v opens the picker on your configured vault_dir from anywhere — set it to your notes vault to reach it without cd-ing there.

Themes

Three palettes, every span explicitly colored so text stays readable on light and dark terminals: flexoki-light, flexoki-dark, and charm. auto picks light or dark from the macOS system appearance; Ctrl+T cycles live. The read preview and the whole canvas background follow the active theme.

Spellcheck

Misspelled prose gets a calm red curly underline (undercurl). It's deliberately light — an embedded ~60k common-English dictionary catches obvious typos without the false positives of a heavy morphological checker. Code fences, inline code, URLs, wikilinks, link targets, and frontmatter are never flagged, and recognized code files are skipped entirely (same extension routing as syntax highlighting).

Alt+; (or clicking an underlined word) opens a popup with up to five suggestions ranked by edit distance — pick one with 19 to replace in place, a to add the word to your personal dictionary, i to ignore it for the session, or t to toggle spellcheck off and on (Alt+; opens a toggle-only popup when no word is flagged). The personal dictionary is a plain, hand-editable file at ~/.config/glint/dict.txt (one word per line). Set spellcheck = off to disable it, or on to force it on.

The curly underline uses the 4:3 SGR underline-style and 58 underline-color codes — supported by Ghostty, kitty, WezTerm, foot, and recent VTE terminals. Terminals without them degrade to a straight underline or none. Inside tmux, enable passthrough so the styles reach the terminal:

set -as terminal-features ',*:usstyle'

License

glint — Copyright (C) 2026 humdrum-tiv.

Free software under the GNU Affero General Public License v3.0 (or, at your option, any later version). You may use, study, share, and modify it; any distributed derivative — or modified version offered to users over a network — must also be AGPL-licensed with source available. It comes with no warranty. See LICENSE for the full terms.