No description
Find a file
Jeena 36bac44395 data: Update desktop comment to reflect Greader API support
The old comment described FeedTheMonkey as a Tiny Tiny RSS client
only, which no longer matches reality and could mislead users in
software centers. The app now talks to any Greader API server, so
name FreshRSS and Miniflux explicitly.
2026-09-20 06:02:53 +00:00
data data: Update desktop comment to reflect Greader API support 2026-09-20 06:02:53 +00:00
html ui: overhaul sidebar, add content filters and state improvements 2026-03-21 01:13:01 +00:00
src window: only mark articles as read when navigating away 2026-03-28 22:57:04 +00:00
.gitignore app: implement Epics 2–10 2026-03-20 11:57:06 +00:00
.travis.yml Add deploy step 2019-03-31 10:25:10 +02:00
build.rs ui: overhaul sidebar, add content filters and state improvements 2026-03-21 01:13:01 +00:00
Cargo.lock feature: cache article images for offline reading 2026-03-21 01:19:49 +00:00
Cargo.toml feature: cache article images for offline reading 2026-03-21 01:19:49 +00:00
COPYING scaffold: Epic 1 — project scaffold 2026-03-20 11:22:19 +00:00
install.sh data: replace generated SVG icon with original PNG 2026-03-21 12:27:13 +00:00
README.md docs: fix image caching description in README 2026-03-21 12:47:06 +00:00

FeedTheMonkey

Icon

FeedTheMonkey is a desktop client for any server that implements the Greader API.

It doesn't work as a standalone feed reader — it connects to a server to fetch articles and sync read state.

It follows the river of news philosophy: all unread articles appear in a single flat list and are automatically marked as read as you flip through them one by one.

Features

  • River of news: all unread articles in one flat list, auto-marked as read as you flip through them one by one
  • Offline reading: article content and images are cached locally so you can read without a connection
  • Image caching: images are pre-fetched after each reload; can be disabled in preferences and is always skipped on metered connections
  • Offline sync: read/unread state changes made offline are queued and pushed to the server next time you're online
  • Persistent state: the article list, selected article, and scroll position are restored when you reopen the app
  • Dark mode: follows the system color scheme automatically
  • Keyboard navigation: vi-style shortcuts for hands-free reading
  • Zoom: adjustable content zoom, persisted across restarts
  • Fullscreen and toggleable sidebar

When logging in, enter:

  • FreshRSS: https://example.com/api/greader.php
  • Miniflux: https://example.com
  • Other compatible servers: consult your server's documentation for the Greader API endpoint

Dependencies

Runtime

  • GTK 4 (gtk4)
  • libadwaita (libadwaita)
  • WebKitGTK 6 (webkitgtk-6.0)
  • GLib / GIO (glib-2.0, gio-2.0)

On Arch Linux: sudo pacman -S gtk4 libadwaita webkitgtk-6.0

Build

  • Rust toolchain (rustup / cargo)
  • blueprint-compiler — compiles .blp UI files to .ui
  • glib-compile-schemas — compiles GSettings schemas (part of glib2)
  • glib-compile-resources — compiles GResource bundles (part of glib2)

On Arch Linux: sudo pacman -S blueprint-compiler glib2

Building

cargo build --release

The binary is at target/release/feedthemonkey.

Installing

sudo ./install.sh

This installs the binary, icon, desktop entry, and GSettings schema to /usr/local. Set PREFIX to install elsewhere:

sudo PREFIX=/usr ./install.sh

Trivia

This is version 3 of FeedTheMonkey, rewritten in Rust with GTK4 and libadwaita. Version 2 was written in C++ with Qt and QML, and version 1 in PyQt — you can find them in the v2 and v1 branches of this repo.

Screenshot

FeedTheMonkey screenshot

Keyboard shortcuts

Key Action
j or → Next article
k or ← Previous article
Return Open in browser
r Reload
F11 Toggle fullscreen
Ctrl+W Quit
Ctrl++ Zoom in
Ctrl+- Zoom out
Ctrl+0 Reset zoom

License

Copyright 2015–2026 Jeena

FeedTheMonkey is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.