v0.9.0
v0.9.0 open source · MIT linux · macOS

The web, without
the noise

wr fetches a page, extracts the article and opens it in an animated reader: formatted Markdown, real code highlighting and a full browsing experience — links, history, bookmarks and search, all from your terminal.

$curl -fsSL https://raw.githubusercontent.com/sazardev/wr/main/install.sh | sh

linux and macOS · verifies the SHA-256 checksum · no Go needed

wr https://… opens an article· wr rust async book searches the web· wr opens your start page

100×30
wr open on an article: the reading view with a code block and the footer shortcutswr with every link labelled with a short hintthe section index, listing the headings of the pagethe menu, with every shortcut of the programsearch as you type, with the matches highlighted

FIG. 01 — wr reading an article, following links, jumping by section, searching. Click a tab, or let it play.

~14MBsingle static binary
0runtime dependencies
32default key bindings
32settings, all live
[01] The problem any article, any site

Most of a web page
is not the page.

Menus, banners, popups, ads, related cards and autoplay video wrap a few paragraphs. wr drops all of it before you ever see it, and keeps only the text and its code.

a web pageremoved 0/8
cookie banner · “we value your privacy”fixed
newsletter popup · “wait, don’t go!”modal
mega menu · 42 linkssticky
advertisement · 300×250ad
Building a Realtime Forum in Go

Build a 100% CLI realtime forum in Go: TCP, TLS, deduplicated broadcast and resilient reconnects, zero dependencies.

“you may also like” · 12 cardswidget
share bar · 6 networkswidget
autoplay video · mutedmedia
footer · 9 columns of linksfooter
wrthe same page

⣿Building a Realtime Forum in Go

Build a 100% CLI realtime forum in Go: TCP, TLS, deduplicated broadcast and resilient reconnects, zero dependencies.

// main.go
func main() {
    srv := forum.New(cfg)
    log.Fatal(srv.ListenTLS())
}
o open/ searchH backf linksm menuq quit
[02] What you get the whole program, in six ideas

A reader that behaves
like a terminal tool.

01

Formatted Markdown

Headings with a mark and a rule, bold, lists, quotes, tables — and the Markdown syntax gone.

## Install **fast** → Install fast no # and no ** in sight
02

Code, highlighted

Per-language colors inside a labeled frame. Copies come out without the frame and the margin.

⬡ go func main() { fmt.Println("wr") }
03

Links without the mouse

Press f and every link on screen gets a short label. Type it and you are there.

Read the adocs, the schangelog and dstar the repo. f · type a label · done
04

Instant back and forward

Pages are cached, so going back returns you to the exact spot you left — instantly.

H back L forward cached · same scroll position alt+← / mouse buttons work too
05

Search as you type

Smart-case, highlighted matches, n and N to jump between them. t opens the section index.

/ reader the reader opens an article… n next · N previous · t sections
06

Wears your colors

It uses your terminal’s own 16-color palette — gruvbox, nord, whatever you run. Zero configuration.

your terminal's 16 colors gruvbox · nord · solarized · … nothing to configure
[03] Keystrokes 28 of 32 default bindings

It is all keystrokes.

Every binding is rebindable from the menu. The full list is generated from keys.go, so it cannot fall behind the program.

Browsing

Open URL or search o
Back Hbackspacealt+left
Forward Lalt+right
Reload page r
Start page ~
History v
Bookmarks '
Bookmark this page *
Open in your browser x

Scrolling

Line down jdown
Line up kup
Page down spacepgdownctrl+f
Page up bpgupctrl+b
Half page down dctrl+d
Half page up uctrl+u
Top ghome
Bottom Gend

Reading

Next section ]
Previous section [
Section index t
Search in page /
Next match n
Previous match N
Copy the selection y

Interface

Menu m?
Settings ,
Update wr / what's new U
Quit q
the reader’s own footer o open url or searchH backL forwardf follow a link (hint labels)t section indexr reload pagem menuq quit

See all 32 shortcuts →

[04] Get started three lines

Reading in under a minute.

01

Install the binary

One line, no Go needed: the installer verifies the SHA-256 checksum before it puts wr on your PATH.

$curl -fsSL https://raw.githubusercontent.com/sazardev/wr/main/install.sh | sh
02

Read a page

An address opens the article, anything else is a web search, and a local file opens as you wrote it.

$wr https://go.dev/doc/
03

Keep the keyboard

f labels every link, H and L go back and forward, t jumps by section, m shows every key.

$f

Go 1.26+: go install github.com/sazardev/wr@latest or grab wr_<os>_<arch>.tar.gz from Releases INSTALL_DIR chooses where, WR_VERSION picks a version

[05] Palettes this site is dressed the same way

Dress it like your terminal.

The reader wears your terminal’s own colors. This site shows the idea in monochrome: pick a palette and every page follows — it is remembered, and it links (?theme=phosphor). Press t anywhere.

Start reading.

One binary, one line to install. Your terminal does the rest.

$curl -fsSL https://raw.githubusercontent.com/sazardev/wr/main/install.sh | sh

linux and macOS · verifies the SHA-256 checksum · no Go needed