sb-0.1.1 is not a library.
Visit the last successful build:
sb-0.3.12
uio# sb — Terminal Markdown Browser/Editor
sb is a fast, keyboard-centric terminal UI for browsing and editing Markdown notes and code. It blends a rendered Markdown preview, inline media, Git-aware diffs, and inline editing into a single, ergonomic interface.
Highlights
- Two-pane UI
- Left: file tree (toggleable)
- Right: unified preview/editor
- Rendered Markdown preview with an inline raw-line overlay for the current cursor line (high-contrast, line-numbered gutter)
- Images shown inline; videos discovered from
[video](path)links- ffmpeg CLI playback in the preview (autoplays the first video link); Space to pause/resume,
sto stop
- ffmpeg CLI playback in the preview (autoplays the first video link); Space to pause/resume,
- Syntax highlighting for code (rs, ts/tsx, js/jsx, py) via syntect
- Git-aware diff vs HEAD (split below highlighted code when changes exist)
- Inline per-line editing in the preview (press
eori, Enter to save immediately) - Editor pane
:command mode:w,:q,:wq
- Midnight-Commander-style file ops: Copy/Move/Mkdir/Delete
Prerequisites
- Rust toolchain (stable)
- ffmpeg in your PATH (required for video playback)
- macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt-get install ffmpeg
- macOS:
Build & Run
# Build
# Run (open a directory of notes)
# Or run the compiled binary
Keybindings
- Pane focus
- Tab / Shift+Tab: cycle focus (Left ↔ Preview ↔ Editor).
- Ctrl+B or F9: toggle Files pane.
- Files (Left pane)
- Enter: toggle folder / open file
- F5 Copy, F6 Move, F7 Mkdir, F8 Delete
- N: new file (Markdown suggested)
- Preview (Right pane)
- Rendered Markdown with raw-line overlay (yellow) + line number gutter
- Scroll: Up/Down arrows or j/k; mouse wheel supported
- Raw edit toggle: press
eto enter full raw edit; Esc to return to preview
- Editor (Right pane)
:to open command prompt; supported::w,:q,:wq- Scroll with mouse wheel
- Video playback (from
[video](path)links in Markdown)- Autoplays first link in preview
- Space: pause/resume,
s: stop
- General
?orh: helpQ/ Esc: quit (Esc also cancels dialogs)
How it Works
- Markdown preview
- Parsed to styled
ratatui::widgets::Paragraphtext. - When editing context is needed, the current line overlays on top of the preview (bold black-on-yellow) with a blue line-number gutter, while the rest remains dim-rendered for context.
- Parsed to styled
- Images
- Loaded via
imageand rendered withratatui-image.
- Loaded via
- Videos
ffmpegis spawned to output MJPEG frames (image2pipe); frames are decoded and displayed in a small area of the preview.
- Code highlighting + diff
- syntect provides syntax highlighting (rs/ts/tsx/js/jsx/py).
git show HEAD:<relative-path>is diffed against the current buffer (lines) and shown beneath the code when changes exist.
- Editing
- Per-line inline edits (Preview) save immediately on Enter.
- Editor pane offers a minimal
:command mode.
Troubleshooting
- Preview shows raw text, not rendered Markdown
- Ensure you opened a
.mdfile. The preview renders Markdown; only the current line overlays as raw (yellow) for edit context.
- Ensure you opened a
- ffmpeg playback doesn’t work
- Verify
ffmpegis installed and in PATH.
- Verify
- Terminal rendering issues
- Use a modern terminal emulator; ensure truecolor support.
- Git diff not shown
- File must be tracked. Ensure repo is initialized and the file has a HEAD version.
Roadmap
- Richer motions/operations in Preview and Editor (Home/End/words, undo/redo)
- Inline code block rendering improvements and scrolling
- Video timing and seeking (not only last-frame display)
- Configurable theme and keybindings
Notes
- This is a terminal UI; mouse is optional and limited.
- Tested on macOS. Linux should work with a recent Rust and
ffmpeg.