FeedShell is a terminal RSS and Atom reader. Manage feeds, browse unread articles with Vim-style navigation, read extracted article text without leaving the terminal, and open the original page when needed.
brew install toropanov/tap/feedshellHomebrew 6 may ask you to trust the third-party formula explicitly:
brew trust --formula toropanov/tap/feedshellTo run the project from a checkout instead:
npm link# Add a feed; its title is detected automatically.
feedshell add https://example.com/feed.xml
# Open the interactive reader.
feedshell
# Refresh feeds and list unread articles.
feedshell fetch
feedshell articles| Command | Description |
|---|---|
feedshell add <url> [--title <name>] |
Add a feed. |
feedshell sources |
List feeds. Alias: list. |
feedshell remove <num|id|url> |
Remove a feed. Alias: rm. |
feedshell fetch |
Refresh RSS and Atom feeds. Alias: refresh. |
feedshell articles [source] |
List unread articles. |
feedshell read [source] <num> |
Read an article's extracted text. Alias: open. |
feedshell browse |
Open the interactive reader. This is the default command. |
feedshell config |
Print the active config path. |
| Keys | Action |
|---|---|
j / ↓, k / ↑ |
Move down or up. |
Ctrl+d / Space, Ctrl+u / b |
Move one page down or up. |
g / Home, G / End |
Jump to the beginning or end. |
Enter / l / → |
Open an article. |
h / ← / Esc |
Go back. |
o |
Open the original page in a browser and mark it read. |
r |
Refresh feeds. |
n, p |
Open the next or previous article. |
q / Ctrl+c |
Go back or quit. |
Vim-style keys work with a Russian keyboard layout too.
Feedshell keeps user data outside the application directory:
$XDG_CONFIG_HOME/feedshell/config.json, whenXDG_CONFIG_HOMEis set;~/.config/feedshell/config.jsonotherwise.
Use a separate config file when needed:
feedshell --config /path/to/config.json browse
FEEDSHELL_CONFIG=/path/to/config.json feedshellUse entryTitleFilters in the config to exclude unwanted articles by a word or regular expression.
Requires Node.js 18 or later.
npm run check
npm test