101 lines
3.2 KiB
Markdown
101 lines
3.2 KiB
Markdown
# FeedTheMonkey
|
||
|
||
<img align="right" src="data/icons/net.jeena.FeedTheMonkey.png" width="256" alt="Icon">
|
||
|
||
FeedTheMonkey is a desktop client for any server that implements the
|
||
[Greader API](https://github.com/theoldreader/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](http://scripting.com/2014/06/02/whatIsARiverOfNewsAggregator.html) 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; skipped on metered connections unless enabled in preferences
|
||
- **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
|
||
|
||
```sh
|
||
cargo build --release
|
||
```
|
||
|
||
The binary is at `target/release/feedthemonkey`.
|
||
|
||
## Installing
|
||
|
||
```sh
|
||
sudo ./install.sh
|
||
```
|
||
|
||
This installs the binary, icon, desktop entry, and GSettings schema to `/usr/local`.
|
||
Set `PREFIX` to install elsewhere:
|
||
|
||
```sh
|
||
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
|
||
|
||

|
||
|
||
## 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.
|