No description
Find a file
Jeena 9a4bf4b9f8 article-row: fix bold on initial load, add right-click menu
Set unread bold state directly in bind() instead of relying on
obj.notify("unread"), which was unreliable during list factory binding
(GLib may defer or drop notifications during initial bind).

Also add a right-click context menu on each article row with a single
"Mark as Unread" item. The menu is a GtkPopover positioned at the
cursor. Clicking it activates the new win.mark-article-unread action,
which takes the article ID as a string parameter and reuses the
existing mark-unread logic.

Refactor do_mark_unread() to delegate to the new do_mark_article_unread()
so the behaviour is consistent whether triggered from the toolbar button,
keyboard shortcut, or right-click menu.
2026-03-22 01:51:12 +00:00
data sidebar: fix unread bold via notify, larger title font, sidebar zoom 2026-03-22 00:34:51 +00:00
html ui: overhaul sidebar, add content filters and state improvements 2026-03-21 01:13:01 +00:00
src article-row: fix bold on initial load, add right-click menu 2026-03-22 01:51:12 +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 20152026 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.