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.
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:
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_dirutility provided byclick. You can read more about it here.
Usage
To start using lazyfeed you just need to run:
lazyfeed
Some screenshots
The theme used for the screenshots is
dracula.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lazyfeed-0.5.9.tar.gz.
File metadata
- Download URL: lazyfeed-0.5.9.tar.gz
- Upload date:
- Size: 725.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe6803f5c6e1f2b78ab35978c6915d180bb35469a67e7c99707b64a8c221ee0a
|
|
| MD5 |
95d953bc9bdc2a1be1e86a08bde91bfe
|
|
| BLAKE2b-256 |
260d819b81b4cd5bcf2270463018268c53f08bfa58daa46d4af4b815cd3cb3bc
|
Provenance
The following attestation bundles were made for lazyfeed-0.5.9.tar.gz:
Publisher:
release.yml on dnlzrgz/lazyfeed
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lazyfeed-0.5.9.tar.gz -
Subject digest:
fe6803f5c6e1f2b78ab35978c6915d180bb35469a67e7c99707b64a8c221ee0a - Sigstore transparency entry: 158870141
- Sigstore integration time:
-
Permalink:
dnlzrgz/lazyfeed@83d9bf3d0be26dd00c563fdf32f91d9c081a979c -
Branch / Tag:
refs/tags/v0.5.9 - Owner: https://github.com/dnlzrgz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@83d9bf3d0be26dd00c563fdf32f91d9c081a979c -
Trigger Event:
release
-
Statement type:
File details
Details for the file lazyfeed-0.5.9-py3-none-any.whl.
File metadata
- Download URL: lazyfeed-0.5.9-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44cc2f412072bab03a87245a98e97b415a6e02ca8d3eb73d2f6a86c3c112bf68
|
|
| MD5 |
afe613c5dd76aa9305f1e3f46d0c60f6
|
|
| BLAKE2b-256 |
6ec4c34b237e3e813b72e006c4787daccf140213d2106145056c9e582fb49bbd
|
Provenance
The following attestation bundles were made for lazyfeed-0.5.9-py3-none-any.whl:
Publisher:
release.yml on dnlzrgz/lazyfeed
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lazyfeed-0.5.9-py3-none-any.whl -
Subject digest:
44cc2f412072bab03a87245a98e97b415a6e02ca8d3eb73d2f6a86c3c112bf68 - Sigstore transparency entry: 158870142
- Sigstore integration time:
-
Permalink:
dnlzrgz/lazyfeed@83d9bf3d0be26dd00c563fdf32f91d9c081a979c -
Branch / Tag:
refs/tags/v0.5.9 - Owner: https://github.com/dnlzrgz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@83d9bf3d0be26dd00c563fdf32f91d9c081a979c -
Trigger Event:
release
-
Statement type: