bensadeh/circumflex
Go🌿 It's Hacker News in your terminal
go get github.com/bensadeh/circumflex
circumflex is a command line tool for browsing Hacker News in your terminal
Main features
- 🛋 Everything in one place — read both the comment section and articles in Reader Mode
- 🌈 Syntax highlighting — syntax-aware formatting for comments and headlines
- ⚡️ Vim-style navigation — scroll through, jump between and collapse threads with familiar keybindings
You might also like:
- 🔍 Search — quickly find old submissions by searching all of HN
- 🪟 Wide view — story list and content side by side on wide terminals
- 🤹 Native terminal colors — you bring your own color scheme,
circumflexdoes the rest - 💎 Nerd Fonts — full support for Nerd Fonts as icons
- ❤️ Add to favorites — save interesting submissions for later
Installing
The binary name for circumflex is clx.
# Homebrew
brew install circumflex
# Nix
nix-shell -p circumflex
# AUR
yay -S circumflex
# Go
go install github.com/bensadeh/circumflex/cmd/clx@latest
# From source
go run ./cmd/clx
Features
Comment section
Press Enter to view the comment section.
The comment section has two modes: read mode and navigate mode.
In read mode, you can scroll using the usual vim bindings. You can also jump between top-level comments (
n/N), and you can expand and collapse threads by quote level (h/l) or all at once
(Enter).
In navigate mode, you can individually select comments and collapse specific threads.
circumflex is read-only and does not support logging in, voting or commenting.
Reader Mode
Press Space to read the linked article in Reader Mode. Just like in the comment section, you can jump between headers using n/N, and you can scroll using the usual vim bindings.
Wide view
On wide terminals, the comment section and Reader Mode open in a pane next to the front page instead of replacing it.
The split kicks in at 180 columns; tune the threshold (or force it with always/never) using
-w/--wide-view:
clx --wide-view always
Search
Press / to search all of Hacker News, powered by Algolia. Sort by popularity or date with s and narrow the date range with d.
The comment section and Reader Mode also support search in the content with /: search for the term and jump between matches with n/N.
Favorites
Press f to add the highlighted submission to your favorites. Remove it with x.
You can also add a submission by ID from the command line:
clx add [id]
Favorites are stored in favorites.toml in the config directory, human-readable and VCS-friendly. A
favorites.json from earlier versions is migrated automatically.
History
Visited submissions are marked as read, and comments added since your last visit are highlighted.
History is stored in history.json in the cache directory. Disable tracking with -d/--no-history, or clear it with:
clx clear
Categories
Switch between categories with Tab. The header shows top, best, ask, show and favorites by default.
Pick which ones appear (and in what order) with the --categories flag:
clx --categories top,new,best
Available categories are top, best, new, ask, show, jobs and favorites.
Configuration
Every flag can be set persistently in config.toml. To customize, write out the default config:
clx default-config
Flags take precedence over the config file.
The config directory is ~/.config/circumflex on Linux and ~/Library/Application Support/circumflex on macOS; the
cache directory is ~/.cache/circumflex and ~/Library/Caches/circumflex.
Theme
circumflex uses your terminal's color scheme by default. To customize, write out the default config and edit it:
clx default-theme
The theme lives in theme.toml in the config directory.
Keymaps
Main view keybindings — press i in any view for the full list, including comment and reader mode.
| Key | Action |
|---|---|
| Enter | View comments |
| Space | Reader Mode |
| Tab | Next category |
| / | Search Hacker News |
| r | Refresh stories |
| o | Open story in browser |
| c | Open comments in browser |
| f | Add to favorites |
| x | Remove from favorites |
| u | Toggle read |
| q | Quit |
Usage
Run clx help or man clx for a full list of available commands and flags.