# *eilmeldung* TUI RSS reader



[](https://www.rust-lang.org/)
[](https://ratatui.rs/)


---
*eilmeldung* is
- *fast* in every aspect: non-blocking terminal user interface, (neo)vim-inspired keybindings and mouse support, instant start-up and no clutter
- *stands* on the shoulder of *giants*: based on the news-flash library, *eilmeldung* supports many RSS providers, is efficient and reliable
- *powerful* and yet *easy to use out-of-the-box*: sane defaults which work for most, and yet configurable to meet anyone's requirements, from keybindings to colors, from displayed content to RSS provider
- for reading news like a pro: filter and search news with an easy-to-learn powerful *query language*, activate *zen mode* to focus on the article content and nothing else
- available on Linux, macOS, Windows and NetBSD
- based on the awesome [news-flash](https://gitlab.com/news-flash/news_flash) library.
*eilmeldung* is German for *breaking news*
---
## Table of Contents
- [Showreel](#showreel)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Quick Reference](#quick-reference)
- [Documentation](#documentation)
- [Alternatives](#alternatives)
- [FAQ](#faq)
- [Credits](#credits)
- [Contributing](#contributing)
---
# Showreel
This video demonstrates
- basic (vim-like) navigation and reading
- *zen* mode: just show content
- opening an image link using `feh`
- creating new tags and tagging an article
- *filtering* and *searching* article list by using article queries
- *tagging* multiple articles by using an article query
---
# Installation
**Quick install:**
- **Homebrew**: `brew tap christo-auer/eilmeldung https://github.com/christo-auer/eilmeldung && brew install eilmeldung`
- **Arch (AUR)**: `paru -S eilmeldung` or `yay -S eilmeldung`
- **NixOS (unstable)**: `nix run nixpkgs#eilmeldung` for a quick try; or install `pkgs.eilmeldung` or use the home-manager module `eilmeldung`
- **Scoop** (Windows):
```
scoop install eilmeldung
```
- **Cargo**: `cargo install eilmeldung --locked`
**Important**: You need a [Nerd Font](https://github.com/ryanoasis/nerd-fonts)
compatible font/terminal for icons to display correctly! There is a
ASCII-compatible icon preset, however (see [Icon Set](docs/configuration.md#icon-set)).
For detailed installation instructions including Nix/Home Manager setup, see **[Installation Guide](docs/installation.md)**.
---
# Quick Start
1. **Install** eilmeldung (see above)
2. **Run** `eilmeldung` - you'll be guided through the initial setup
3. **Choose a provider** (select "Local" if you're new to RSS)
4. **Add feeds** with `c f` or import an OPML file with `:importopml path/to/file.opml`
5. **Sync** your feeds with `s`
6. **Start reading!** Use `j`/`k` to navigate up/down, `h`/`l` to navigate between panels, `o` to open articles in the browser, `z` to enjoy "zen mode"
Press `?` anytime to see all available commands!
For a comprehensive getting started guide, see **[Getting Started](docs/getting-started.md)**.
---
# Quick Reference
Here are some key bindings to get you started.
| Key | Action |
| ----- | -------- |
| `?` | Show all key bindings (search with `/`!) |
| `s` | Sync all feeds |
| `j` / `k` | Move down / up |
| `h` / `l` | Move between panels (left/right) |
| `o` | Open article in browser, mark as read, jump to next unread |
| `r` / `u` | Mark as read / unread |
| `m` / `v` | Mark (star) / unmark article |
| `/` | Search articles |
| `Ctrl-z` | Undo last operation(s), see [undo](docs/commands.md#undo) |
| `:` | Open command line |
| `q` | Quit |
| `1` / `2` / `3` | Show all/only unread/only marked in feed list or article list |
**Tip:** Press `?` anytime to see all available commands, and use `/` in the help dialog to search!
**Another Tip**: Navigate to the article list and use `C-j`/`C-k` to move down/up in the feed list and use `M-k`/`M-j` to scroll the article content down/up. Of course, you can remap all keys to your liking.
---
# Documentation
Complete documentation is available in the `docs/` directory:
- **[Getting Started Guide](docs/getting-started.md)** - Setup and first steps
- **[Installation Guide](docs/installation.md)** - Detailed installation instructions
- **[Key Bindings Reference](docs/keybindings.md)** - Complete keybinding reference
- **[Commands Reference](docs/commands.md)** - All available commands.
- **[Pipe Command](docs/pipe.md)** - Piping articles through external commands
- **[Article Queries](docs/queries.md)** - Powerful search and filter syntax
- **[Configuration Guide](docs/configuration.md)** - Customize appearance and behavior
- **[Command Line Arguments](docs/cli_args.md)** - Available CLI options
- **[Breaking Changes and Migration Guide](docs/migration-guides.md)** - Migrate to new versions if updates broke something
- **[FAQ](docs/faq.md)** - Frequently asked questions
You can also ask your AI chatbot anything about `eilmeldung` by using the phrase *according to eilmeldung.org ...*
Example prompts
according to eilmeldung.org...
- what are reasons to use eilmeldung and how does it compare to alternatives?
- how can I display images within articles?
- how can I select articles and then mark them as read?
- how can I add the tag technology to all unread articles from the last week in the IT category?
- what are features I don't know?
*Note*: [eilmeldung.org](https://eilmeldung.org) simply delivers a [llms.txt](https://llmstxt.org/)
---
---
# Alternatives
Of course, there are many awesome alternatives to *eilmeldung*. Check them out!
- [newsboat](https://newsboat.org/) is the battle-proven classic
- [bulletty](https://github.com/CrociDB/bulletty) lets you decide where to store your articles as markdown files and has many more features.
- [feedr](https://github.com/bahdotsh/feedr) is a feature-rich terminal-based RSS feed reader written in Rust
- [russ](https://github.com/ckampfe/russ) is a TUI RSS/Atom reader with vim-like controls and a local-first, offline-first focus.
- [elfeed](https://github.com/skeeto/elfeed) provides RSS in emacs
- [tuifeed](https://github.com/veeso/tuifeed), a terminal news feed reader with a fancy ui
- [brochure](https://github.com/Sylviromi/brochure), a terminal RSS reader: keyboard-driven, distraction-free.
---
## FAQ
Expand to see the most frequently asked questions
### Which providers are supported?
See [news_flash_gtk for all supported providers](https://gitlab.com/news-flash/news_flash_gtk).
### Does eilmeldung support smart folders?
Yes! Use queries in your feed list configuration. Example:
```toml
feed_list = [
'query: "Important Today" #important unread today',
'query: "Read Later" #readlater unread',
"feeds",
]
```
### Can I customize keybindings and colors?
Absolutely! Everything is customizable via the [configuration file](docs/configuration.md). See `examples/default-config.toml` for all options.
### How do I save articles for later?
Create a tag (`:tagadd readlater red`), bind it to a key, and create a query in your feed list. See the [FAQ](docs/faq.md#how-can-i-save-articles-for-reading-later) for details.
### Can I hide feeds/categories/tags without unread/marked articles?
Yes, focus the feed list and press `2` / `3` to show only feeds/categories/tags with unread / marked articles, show all with `1`. Change the value of the configuration option `feed_list_scope` to either `all`, `unread` or `marked` to set the default value.
### When I mark an article as read, it disappears!?
By default, the article list shows only unread items. When you mark the article as read, it is automatically hidden. You can show `all` articles by focusing the article list and pressing `1`. If you want this to be the default, set `article_scope = "all"`. The same setting exists for the feed list (see previous item).
### Can I execute automatic operations after synchronisation/refresh?
Yes, via the option `after_sync_commands` [configuration](docs/configuration.md#after-sync_commands) for some recipes.
### Can I select articles and then mark them as read/unread/tag them etc.?
Yes, you can *flag* them by pressing `f` and then press `r` to mark all flagged articles as read. Similarly for `u`(unread), `m` (mark), `t` (tag), etc. Press `D` to remove all flags.
Checkout [FAQ](docs/faq.md#features--capabilities)!
### Is mouse input supported?
Yes, mouse input is supported is very configurable: see [default mouse input configuration](docs/keybindings.md#mouse-input)] and [see here how to freely configure mouse input bindings](docs/configuration.md#mouse-input-configuration).
### Does eilmeldung support AI/LLMs? All the cool RSS readers are doing it!
No, *eilmeldung* does not have AI/LLM support. However, you can use the [Pipe Command](docs/pipe.md) for piping the article content through an LLM via an external command (like opencode).
### Can I choose a different color theme?
Yes, *eilmeldung* natively supports [Base16 Themes](https://github.com/chriskempson/base16) and in fact statically imports the Base16 themes from the [Tinted Theming Project](https://github.com/tinted-theming/schemes).
In *eilmeldung* you can preview a theme using the command `theme`: Press `:` to open the command line, type in `theme`, *space* and then press *TAB* to cycle through the themes.
In the configuration file set `theme.base16_theme` to your desired theme.
Have a look at [docs/configuration.md#theme-configuration] for more information and how to install custom themes.
---
**More questions?** See the complete [FAQ](docs/faq.md).
---
# Credits
## Mentions
- [Orhun's Blog: 800 rust projects in 3 years](https://blog.orhun.dev/800-rust-projects/) (placed 21 based on a Mastodon analysis; very hondered to be on the same list as other such great and impressive rust projects!)
- Pick on [Linux Unplugged Episode 647 (2025-12-28)](https://linuxunplugged.com/647) (1:28:35) had some very kind things to say about *eilmeldung* shortly after the initial release:
> "[eilmeldung] is [...] beautiful. It's strange to say about a TUI [...] but it is actually very beautiful."
## Screenshots by Users
- *eilmeldung* running on an iMac G4 PowerPC from 2003 (thanks to Maciej G.!) on the TTY and on X with i3:
---
## Standing on the Shoulders of Giants
*eilmeldung* was inspired by other awesome programs and libraries:
- [news-flash](https://gitlab.com/news-flash/news_flash) library and [news-flash GTK](https://gitlab.com/news-flash/news_flash_gtk), a modern Gnome/GTK RSS reader, both implemented in rust
- [newsboat](https://newsboat.org/) which has been my TUI RSS reader of choice for many years
- [spotify-player](https://github.com/aome510/spotify-player), a TUI spotify music player written in rust. In particular, the theming system and how input is handled has been a great inspiration for *eilmeldung*
- [vifm](https://vifm.info/), [neomutt](https://neomutt.org/) with [notmuch](https://notmuchmail.org/) inspired the filtering and article query systems
- [neovim](https://neovim.io/) and [vim](https://www.vim.org/) for their philosophy on user input
- [ratatui](https://ratatui.rs/) and all its supporting libraries for creating the TUI
## Third-Party Licenses
- *eilmeldung* (statically) imports/copies the base16 schemes from the [tinted-theming project](https://github.com/tinted-theming/schemes) licensed under the [MIT license](https://github.com/tinted-theming/schemes/blob/spec-0.11/LICENSE).
## On the use of LLMs in this Project
This project was built as an experiment in learning Rust through LLM use. LLMs were used as tutors (asking questions, not providing solutions) and for documentation, but every line of code was intentionally written to solve a problem I understood.
Read more about the LLM development approach in [LLM Development](docs/llm-development.md).
---
# Contributing
Contributions are welcome! Please feel free to:
- Report bugs or request features via [GitHub Issues](https://github.com/christo-auer/eilmeldung/issues)
- Submit pull requests
- Improve documentation
- Share your configuration examples
---
# License
See [LICENSE](LICENSE) file for details.