Skip to content

Moskas/shinbun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shinbun

shinbun (新聞) is a terminal-based RSS/Atom feed reader written in Rust, using ratatui and crossterm. It draws some inspiration from newsboat.

./examples/feed_list.png

Features

  • RSS and Atom feed support
  • Local SQLite cache for offline reading and persistent read state
  • Tag-based feed organization
  • Query feeds that aggregate entries across multiple feeds by tag
  • Read/unread tracking with per-entry and per-feed bulk marking
  • Hide/show read entries
  • Open entries in a configurable browser or media player
  • Vim-style keybindings

Installation

Requires Rust (stable). Clone the repository and build with cargo:

cargo build --release

The binary will be at target/release/shinbun.

Configuration

Configuration files are stored in the platform config directory under shinbun/.

Linux / macOS

~/.config/shinbun/

Windows

%APPDATA%\shinbun\

Two files are used:

  • feeds.toml (required) – defines the feeds to subscribe to
  • config.toml (optional) – UI settings, general options, and query feeds

feeds.toml

Each feed is declared as a [[feeds]] entry. The link field is required. name and tags are optional.

[[feeds]]
link = "https://example.com/feed.xml"

[[feeds]]
link = "https://blog.example.org/rss"
name = "Example Blog"
tags = ["tech", "blog"]

If name is set, it overrides the title provided by the feed itself.

config.toml

[general]
browser = "firefox"           # optional, defaults to system default
media_player = "mpv"          # optional, defaults to system default

[ui]
show_borders = true           # default: true
show_read_entries = true      # default: true

[[queries]]
name = "Tech"
query = "tags:tech"

[[queries]]
name = "All"
query = "*"

Query feeds aggregate entries from all feeds whose tags match the query. Use tags:tag1,tag2 to match specific tags, or * to match everything.

Keybindings

KeyAction
j / DownMove down
k / UpMove up
l / Enter / RightOpen / Enter
h / Backspace / LeftGo back
g g / HomeGo to top
G / EndGo to bottom
rRefresh selected feed
RRefresh all feeds
mToggle read / unread
AMark feed as read
uToggle hide read entries
oOpen entry in browser
pPlay media attachment
eShow feed errors
?Toggle help
qQuit

Press ? inside the application to see the full keybinding reference.

Data Storage

Feed data and read state are cached in a SQLite database at shinbun/cache.db inside the config directory. Entries that age out of a feed’s remote source are preserved locally so history and read state are not lost. Feeds removed from feeds.toml are pruned from the cache on the next launch.

About

TUI rss/atom feed reader

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages