Skip to main content

lazyfeed is a fast and simple terminal base RSS/Atom reader built using textual.

Project description

lazyfeed

A fast, modern, and simple RSS/Atom feed reader for the terminal written in pure Python.

Loaded screenshot

Features

  • Support for RSS/Atom feeds.
  • Import from and export feeds.
  • Save for later.
  • Vim-like keybindings for navigation.
  • Theming.
  • "In-app" reading support.
  • Configuration options.

Core dependencies

Motivation

For quite some time, I have wanted to build an RSS reader for myself. While I appreciated some existing solutions, I often felt that they were missing key features or included unnecessary ones. I wanted a simple, fast, and elegant way to stay updated with my favorite feeds without the hassle of limits, ads, or cumbersome configuration files.

Coming up

  • Full-text search support.
  • Categories.
  • Better in-app reading experience.
  • Customizable keybindings.

Installation

The recommended way is by using uv:

uv tool install --python 3.13 lazyfeed

Now you just need to import your feeds from an OPML file like this:

lazyfeed < ~/Downloads/feeds.opml

Or, after starting lazyfeed, adding your favorite feeds one by one:

Add feed

Import and export

As you can see importing your RSS feeds is pretty simple and exporting them is as simple as just doing:

lazyfeed > ~/Downloads/feeds.opml

At the moment only OPML is supported.

Configuration

The configuration file for lazyfeed is located at $XSG_CONFIG_HOME/lazyfeed/config.toml. This file is generated automatically the first time you run lazyfeed and will look something like this:

# Welcome! This is the configuration file for lazyfeed.

# Available themes include:
# - "dracula"
# - "textual-dark"
# - "textual-light"
# - "nord"
# - "gruvbox"
# - "catppuccin-mocha"
# - "textual-ansi"
# - "tokyo-night"
# - "monokai"
# - "flexoki"
# - "catppuccin-latte"
# - "solarized-light"
theme = "dracula"

# If set to true, all items will be marked as read when quitting the application.
auto_read = false

# If set to true, items will be fetched at start.
auto_load = false

# If set to false, items will be marked as read without asking for confirmation.
confirm_before_read = true

# Specifies by which attribute the items will be sorted.
sort_by = "published_at" # "title", "is_read", "published_at"

# Specifies the sort order.
sort_order = "ascending" # "descending", "ascending"

[client]
# Maximum times (in seconds) to wait for all request operations.
timeout = 300

# Timeout for establishing a connection.
connect_timeout = 10

[client.headers]
# This section defines the HTTP headers that will be sent with
# each request.
# User-Agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
# Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8"
# Accept-Language = "en-US,en;q=0.6"
# Accept-Encoding = "gzip,deflate,br,zstd"

The folder that holds the configuration file as well as the SQLite database is determined by the get_app_dir utility provided by click. You can read more about it here.

Usage

To start using lazyfeed you just need to run:

lazyfeed

Some screenshots

Confirmation In-app reader Saved for later

The theme used for the screenshots is dracula.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazyfeed-0.5.0.tar.gz (723.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazyfeed-0.5.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file lazyfeed-0.5.0.tar.gz.

File metadata

  • Download URL: lazyfeed-0.5.0.tar.gz
  • Upload date:
  • Size: 723.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for lazyfeed-0.5.0.tar.gz
Algorithm Hash digest
SHA256 d142321a63469a7bafee3312f7a1907df9da4b84d21d5b38edc5a0ab2e1da04f
MD5 f3cecc6de9ef6f183ab51a8adab96c7d
BLAKE2b-256 cb7d9d23df2eaf01ccabc3efc12da5712304cb66c587182a93a4ae3fa8a2bee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyfeed-0.5.0.tar.gz:

Publisher: release.yml on dnlzrgz/lazyfeed

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lazyfeed-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: lazyfeed-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for lazyfeed-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f41d51e119556632223a3e29f97b892e3c91ef04fff7d3e8c4fbbfa2f5bb6b09
MD5 bd9082b4c78952096d9090ba9c5c214d
BLAKE2b-256 fae5a8e01f5561b8e04a840fc1fa12582dd64e0bb803c9ca6580c28de2e25919

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyfeed-0.5.0-py3-none-any.whl:

Publisher: release.yml on dnlzrgz/lazyfeed

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page