Skip to main content

A Python TUI client for Miniflux RSS reader with feed sorting capabilities

Project description

miniflux-tui-py

miniflux-tui-py logo

PyPI version Python 3.11+ License: MIT Test Status codecov Documentation pre-commit OpenSSF Scorecard OpenSSF Best Practices

A Python TUI (Terminal User Interface) client for the Miniflux self-hosted RSS reader built with textual.

Installation

From PyPI (Recommended with uv)

# Install uv (see: https://docs.astral.sh/uv/getting-started/installation/)
# On macOS/Linux: brew install uv
# On Windows: winget install astral-sh.uv
# Or visit https://docs.astral.sh/uv/getting-started/installation/

# Install miniflux-tui-py
uv tool install miniflux-tui-py

# Create configuration
miniflux-tui --init

# Run the application
miniflux-tui

Alternative: Using pip

pip install miniflux-tui-py
miniflux-tui --init
miniflux-tui

Prebuilt Binaries (GitHub Releases)

If you do not want to manage a Python environment, each tagged release now attaches standalone binaries for Linux (x86_64), macOS (arm64), and Windows (x86_64):

  1. Download the archive for your platform from the GitHub Releases page.
  2. Extract the archive:
    • Linux/macOS: tar -xzf miniflux-tui-<os>-<arch>.tar.gz
    • Windows: right-click the .zip file and choose Extract All…
  3. (Linux/macOS only) Make the binary executable: chmod +x miniflux-tui
  4. Run the TUI: ./miniflux-tui --init

Note: macOS may quarantine binaries downloaded from the internet. If macOS blocks execution, run xattr -d com.apple.quarantine miniflux-tui once after extraction.

Container Image (Docker/Podman)

# Pull the signed image from GitHub Container Registry
# `latest` tracks the default branch. Replace with a release tag (e.g. v0.4.0) to pin.
docker pull ghcr.io/reuteras/miniflux-tui:latest

# Create a configuration directory on the host if it does not exist
mkdir -p ~/.config/miniflux-tui

# Generate a config file (writes to the mounted directory)
docker run --rm -it \
  -v ~/.config/miniflux-tui:/home/miniflux/.config/miniflux-tui \
  ghcr.io/reuteras/miniflux-tui:latest \
  --init

# Launch the TUI (shares configuration and uses your terminal)
docker run --rm -it \
  -v ~/.config/miniflux-tui:/home/miniflux/.config/miniflux-tui \
  ghcr.io/reuteras/miniflux-tui:latest

The image is built in CI, published to GHCR, and signed with Sigstore Cosign using GitHub OIDC so you can verify it with:

cosign verify ghcr.io/reuteras/miniflux-tui:latest

From Source (For Developers)

# Install uv (see: https://docs.astral.sh/uv/getting-started/installation/)
# On macOS/Linux: brew install uv
# On Windows: winget install astral-sh.uv
# Or visit https://docs.astral.sh/uv/getting-started/installation/

# Clone the repository
git clone https://github.com/reuteras/miniflux-tui-py.git
cd miniflux-tui-py

# Install all dependencies (including dev and docs)
uv sync --all-groups

# Create default configuration
uv run miniflux-tui --init

# Run the application
uv run miniflux-tui

Documentation

Full documentation is available at reuteras.github.io/miniflux-tui-py

Configuration

Create a configuration file at:

  • Linux: ~/.config/miniflux-tui/config.toml
  • macOS: ~/.config/miniflux-tui/config.toml
  • Windows: %APPDATA%\miniflux-tui\config.toml

Example configuration:

server_url = "https://miniflux.example.com"
api_key = "your-api-key-here"
allow_invalid_certs = false

[theme]
unread_color = "cyan"
read_color = "gray"

[sorting]
default_sort = "feed"  # Options: "feed", "date", "status"
default_group_by_feed = false

To generate an API key for your Miniflux account:

  1. Log into your Miniflux server
  2. Go to Settings -> API Keys -> Create a new API key

Keyboard Shortcuts

Entry List View

Key Action
↑/↓ or k/j Navigate entries
Enter Open entry
m Toggle read/unread
* Toggle star
e Save entry to third-party service
s Cycle sort mode (date/feed/status)
g Toggle grouping by feed
Shift+G Expand all feeds (when grouped)
Shift+Z Collapse all feeds (when grouped)
o Toggle fold/unfold on feed header (when grouped)
h or ← Collapse individual feed (when grouped)
l or → Expand individual feed (when grouped)
r or , Refresh entries
u Show unread entries
t Show starred entries
? Show keyboard help
q Quit application

Entry Reader View

Key Action
↑/↓ or k/j Scroll up/down
PageUp/PageDown Fast scroll
J Next entry
K Previous entry
m Toggle read/unread
* Toggle star
e Save entry to third-party service
o Open in browser
f Fetch original content
b or Esc Back to list
? Show keyboard help

Contributing

Contributions are welcome! See CONTRIBUTING.md for details on:

  • Setting up your development environment
  • Running tests and checks
  • Submitting pull requests

For release information and troubleshooting, see:

Development

# Install all development dependencies
uv sync --all-groups

# Lint code
uv run ruff check .

# Type check
uv run pyright miniflux_tui tests

# Run tests
uv run pytest tests --cov=miniflux_tui

# Preview documentation locally
uv run mkdocs serve

Why Python?

This project is a Python implementation of cliflux (Rust), created since I don't now Rust and wanted to do some changes to that code.

License

MIT License - see LICENSE file for details.

Related Projects

  • cliflux - Original Rust TUI client for Miniflux that inspired this tool.
  • Miniflux is a minimalist and opinionated feed reader.
  • textual

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

miniflux_tui_py-0.4.10.tar.gz (287.1 kB view details)

Uploaded Source

Built Distribution

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

miniflux_tui_py-0.4.10-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

Details for the file miniflux_tui_py-0.4.10.tar.gz.

File metadata

  • Download URL: miniflux_tui_py-0.4.10.tar.gz
  • Upload date:
  • Size: 287.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for miniflux_tui_py-0.4.10.tar.gz
Algorithm Hash digest
SHA256 b5583880c8aead6bd04d687370b99a306164cf244c7a9123d6e8dd494dfc4f45
MD5 3d390ce0e5a30cd10ab449252240e9d4
BLAKE2b-256 28d45583abf7850c43b75cf5157156db38dd3ed18cfb703e99f3d32095980320

See more details on using hashes here.

Provenance

The following attestation bundles were made for miniflux_tui_py-0.4.10.tar.gz:

Publisher: publish.yml on reuteras/miniflux-tui-py

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

File details

Details for the file miniflux_tui_py-0.4.10-py3-none-any.whl.

File metadata

File hashes

Hashes for miniflux_tui_py-0.4.10-py3-none-any.whl
Algorithm Hash digest
SHA256 ee2ed7145118234b507e0a8f22c7366cf87994fc2c2226d611e18d6885dff4ab
MD5 225c9435ec67c680d25df4b9d9e83673
BLAKE2b-256 7dd9f63b420dcb2d004267e243bc14d4f11127759e11c9c7ef90a6a59813e1a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for miniflux_tui_py-0.4.10-py3-none-any.whl:

Publisher: publish.yml on reuteras/miniflux-tui-py

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