Gutenberg

A fast, keyboard-driven news reader for Omarchy. Feeds, keyword alerts and MCP sources in one window that takes its colors and font from your theme. Local, private, no account.

Gutenberg's three panes: sources, articles and the open story

Install

curl -fsSL https://gutenbergapp.com/install.sh | sh

Linux on x86_64 or aarch64, and macOS on Apple silicon or Intel. The script downloads the latest release from GitHub, checks it against the release's SHA256SUMS, and puts one binary in ~/.local/bin; on a Mac it also puts Gutenberg.app in ~/Applications. Nothing else is touched. Read the script before you run it.

The Mac app isn't notarized. The script's copy opens as it is; a Gutenberg.app downloaded from the releases page with a browser is held the first time until you choose Open Anyway in System Settings › Privacy & Security. docs/MACOS.md in the repository has the details.

See it

Three panes, all keyboard

Sources with unread counts on the left, articles in the middle, the story on the right. j and k move, o opens, s stars. Folders, plus views for unread, starred and today.

The sources pane with folders and unread counts, the article list, and an open story

The whole story, without the clutter

Feeds often send a paragraph. Press v and Gutenberg loads the page and keeps only the article: headings, pictures, quotes and code, in your theme's font.

Reader view showing a full article with a picture of a comet

Search everything you have

Press / and matches arrive as you type, across titles, authors and summaries, newest first.

The search line above the list, with two matches for heat

Every command, a few letters away

: opens the command palette: type a few letters of what you want and press Enter. ? lists every key.

The command palette narrowed to commands matching st

232 feeds to start with

A fresh install opens on Add sources: hand-picked, checked-working feeds in 21 categories, with twelve free starters already ticked. Or bring your subscriptions with gutenberg --import.

The Add sources screen on the World category, two feeds ticked

Keyword alerts

Turn a news search into a source. Press n, type a query like "night trains", and Gutenberg asks Google News and Bing News for it on every refresh, showing each story once. Quotes, -word, site: and OR work, and lang:fr or region:CA searches another country's news.

The keyword alerts page with the query "night trains" typed

Your theme, live

Colors and font come from your Omarchy theme, light ones included, and an open window follows omarchy theme set within a fraction of a second. Where a theme's dim text would be hard to read, Gutenberg nudges it just enough to read.

Gutenberg in Tokyo Night
Tokyo Night
Gutenberg in Catppuccin Latte
Catppuccin Latte
Gutenberg in Gruvbox
Gruvbox
Gutenberg in Rosé Pine
Rosé Pine
Gutenberg in Everforest
Everforest
Gutenberg in Flexoki Light
Flexoki Light
Gutenberg in Kanagawa
Kanagawa
Gutenberg in Nord
Nord

Watch the tour

A minute, narrated, sound on: picking sources, a keyword alert, reading, one story from eight outlets, the whole story, an MCP server as a source, search, the palette, and themes. Music: “Beautiful” by avdrav.

Use

gutenberg                      # open the reader
gutenberg --add <feed-url>     # add an RSS, Atom or JSON feed

Bind it in ~/.config/hypr/bindings.conf:

bindd = SUPER, N, News, exec, gutenberg

Layout and text size live in ~/.config/gutenberg/config.toml (~/Library/Application Support/gutenberg/config.toml on macOS) and apply as you save. Drag the line between two panes, or press < and >, to change their widths; that stands in for [layout] until = resets it. Colors and font come from your Omarchy theme and the monospace font omarchy font set picks, and an open window follows them when they change. On a Mac there's no Omarchy theme: the window follows the system's light or dark appearance, in the system font with Menlo for code.

[layout]
sources = 2
list = 4
article = 6
arrangement = "columns"   # or classic, wide, reading; L cycles them

[font]
size = 14   # 8 to 32

[keys]
hints = true   # the key bar along the bottom

Rules star, read or mute new articles by a word or phrase in the headline or summary, in every source or one source or folder (in). A muted article is never stored.

[[rules]]
match = "sponsored"
action = "mute"   # or "star", "read"

[[rules]]
match = "Rust"
in = "LWN.net"     # a source's title or a folder's name
action = "star"

Share (p) opens a picker of X, Bluesky, Facebook and LinkedIn, then a comment, then the site's composer in your browser. [[share]] picks which sites, in what order, and adds any site that takes a share URL: {url}, {title} and {text} in the template become the article's link, its title and your comment.

# Share (p): the picker shows these in this order. Without any, it shows
# X, Bluesky, Facebook and LinkedIn.
[[share]]
name = "bluesky"

[[share]]
name = "x"

[[share]]
name = "Mastodon"
template = "https://mastodon.social/share?text={title}%20{url}"

[[share]]
name = "Pinboard"
template = "https://pinboard.in/add?url={url}&title={title}&description={text}"

Update

gutenberg --update

Installs the newest release over the one you run, checked against its SHA256SUMS as above. An open window says when one is out: it asks GitHub once a day (check = false under [updates] in config.toml turns that off).

Verify

Every release tarball, and the Mac app's zip, has a build attestation from this repository's release workflow. With the GitHub CLI:

gh attestation verify gutenberg-x86_64-unknown-linux-gnu.tar.gz -R avdrav1/gutenberg
gh attestation verify Gutenberg-aarch64-apple-darwin.zip -R avdrav1/gutenberg

A specific version, or somewhere else

curl -fsSL https://gutenbergapp.com/install.sh | GUTENBERG_VERSION=0.2.0 sh
curl -fsSL https://gutenbergapp.com/install.sh | GUTENBERG_INSTALL_DIR=/opt/bin sh

Uninstall

rm ~/.local/bin/gutenberg
rm -f ~/.config/omarchy/hooks/{theme,font}-set.d/gutenberg   # Omarchy hooks
rm -r ~/.config/gutenberg ~/.local/share/gutenberg   # settings and saved articles

On macOS:

rm ~/.local/bin/gutenberg
rm -r ~/Applications/Gutenberg.app
rm -r ~/Library/Application\ Support/gutenberg ~/Library/Caches/gutenberg   # settings, saved articles, pictures