Skip to content

offband/reaper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reaper Ticker

Reaper Ticker banner

A clean terminal RSS and Atom ticker with live scrolling, keyboard navigation, and fast multi-feed setup.

Reaper Ticker is for people who want a simple news wire in the terminal without a bloated reader, sync service, or browser tab farm. It pulls multiple feeds, merges them into one time-ordered stream, and keeps the UI focused on reading.

Why This Exists

Most RSS tools are either heavy, old, or trying to do too much. Reaper Ticker aims for a narrower target:

  • one terminal window
  • one merged feed
  • clear keyboard controls
  • readable defaults
  • enough config to be useful without turning into a dashboard project

Screenshots

Splash screen Main ticker view

Demo

Reaper Ticker Demo Click to watch the full demo

Features

  • Pulls from multiple RSS and Atom feeds.
  • Merges entries into one chronological live feed.
  • Auto-scrolls in a curses UI with manual browse mode when you want to stop.
  • Opens the selected story in your default browser.
  • Supports feed filters, source filters, and keyword filters.
  • Includes multiple built-in theme presets.
  • Works well as a lightweight terminal dashboard on macOS and Linux.

Install

The recommended install path matches the other Offband Python CLI tools:

brew install pipx
pipx ensurepath
pipx install git+https://github.com/offband/reaper.git

After installing, restart your shell if pipx ensurepath asks you to, then run:

reaper --help

Upgrade from GitHub:

pipx upgrade reaper

Uninstall:

pipx uninstall reaper

Quick Start

reaper config init
reaper

If --config is omitted, Reaper Ticker searches ~/.reaper/config.json first and then ./config.json.

Requires Python 3.11 or newer.

Configuration

You can start from the packaged sample config:

reaper config init

That writes ~/.reaper/config.json. To overwrite an existing global config with the current packaged defaults:

reaper config init --force

To print the packaged default config without writing it:

reaper --dump-default-config > config.json

Feeds in the packaged example are starter entries. If an entry has "enabled": false, flip it to true before expecting it to appear in the ticker:

{
  "name": "Example Feed",
  "url": "https://example.com/feed.xml",
  "enabled": true
}

Validate before running:

reaper --validate-config --config config.json

The sample config includes a practical starter mix of news and tech feeds from:

  • Hacker News
  • BBC World
  • NPR News
  • Ars Technica
  • Engadget

Common Commands

reaper --config /path/to/config.json
reaper --theme matrix --refresh-interval 120 --config /path/to/config.json
reaper --ordering oldest_first --density compact --config /path/to/config.json
reaper config path
reaper config init --stdout
reaper config show --resolved --config /path/to/config.json
reaper feed list --config /path/to/config.json
reaper theme list
reaper doctor --config /path/to/config.json

TUI Controls

  • q: quit
  • ?: toggle help
  • p or Space: pause or resume scrolling
  • r: refresh feeds now
  • o or Enter: open the active item in your browser
  • Up / Down or j / k: move selection
  • PageUp / PageDown: jump one page
  • u / d: jump half a page
  • g / G: jump to the top or bottom of the retained list
  • n: return to the live item and resume auto-scroll

Runtime Overrides

  • --theme, --header-title, --header-tagline
  • --no-color, --no-splash
  • --refresh-interval, --scroll-speed, --max-items
  • --density, --ordering
  • --include-keyword, --exclude-keyword
  • --include-source, --exclude-source
  • --disable-open-links
  • --feed, --feed-file

Config precedence is: built-in defaults, then config file, then top-level flags.

Themes

Built-in presets:

  • default
  • amber
  • matrix
  • ice
  • newspaper

Example theme override:

{
  "theme": {
    "preset": "matrix",
    "header_title": "REAPER TICKER",
    "header_tagline": "GREEN ROOM FEED",
    "palette": {
      "selected": "magenta"
    }
  }
}

Testing

python3 -m unittest discover -s tests -q

Current Scope

Reaper Ticker is intentionally narrow. It is not trying to be:

  • a full read-later system
  • a synchronized account-based RSS service
  • a GUI feed manager

It is a terminal feed wire that starts quickly, looks clean, and stays out of the way.

About

Terminal-based live RSS wirefeed with a scrolling, theme selection and fully customizable sources, filters, and display behavior.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages