Skip to content

pitill0/fluxtuner

Repository files navigation

FluxTuner

Version Python License TUI GUI Player GitHub stars GitHub forks GitHub issues

Website: https://fluxtuner.vjml.es

FluxTuner is a modern internet radio player for the terminal and desktop.

It combines a fast keyboard-oriented Textual TUI, a GTK4 desktop GUI, smart favorites and playlists, theming, live metadata, data usage tracking and modular playback backends.


Highlights

  • Search internet radio stations by name, genre/tag and country.
  • Play streams through mpv, ffplay, mpg123 or ogg123 with automatic backend detection.
  • Manage favorites, custom favorite names, tags and playlists.
  • Use dynamic tag playlists, random playback and station history.
  • Switch built-in TUI themes with live preview.
  • Run either the default Textual TUI, the GTK4 desktop GUI or the legacy numbered CLI.
  • Store user data in XDG-style config, data and cache locations.

Screenshots

GTK GUI

GUI Search

GUI Favorites

GUI Playlists

Terminal UI

TUI

TUI Theme Selector


Quick start

Requirements

  • Python 3.11+
  • mpv recommended, ffmpeg / ffplay as broad fallback, or optional lightweight mpg123 / ogg123 backends
  • Optional GUI dependencies: GTK4 and PyGObject

Run from source

git clone https://github.com/pitill0/fluxtuner.git
cd fluxtuner

python -m venv .venv
source .venv/bin/activate
python -m pip install -e .

python -m fluxtuner

Install with pipx

pipx install git+https://github.com/pitill0/fluxtuner.git
fluxtuner

Run from source tarball

You can run FluxTuner directly from a tagged source archive:

wget https://github.com/pitill0/fluxtuner/archive/refs/tags/v0.4.0.tar.gz
tar xvf v0.4.0.tar.gz
cd fluxtuner-0.4.0

Install the Python dependencies required by the terminal interface.

For pip-based environments:

python -m pip install requests rich textual

On systems using distribution packages, install the equivalent packages instead, for example:

requests
rich
textual

Then launch FluxTuner:

python -m fluxtuner

For playback, make sure at least one supported player backend is installed:

mpv
ffplay
mpg123
ogg123

mpv is recommended for the best general compatibility.

GTK GUI dependencies

To run the GTK interface, you also need GTK 4 and PyGObject available on your system.

For pip-based environments, PyGObject may still require system GTK development/runtime packages, so distribution packages are often preferred.

On Debian/Ubuntu-based systems:

sudo apt install python3-gi gir1.2-gtk-4.0

On Arch Linux:

sudo pacman -S gtk4 python-gobject

On systems using source-based or ports-based package managers, install the equivalent packages for:

GTK 4
PyGObject
GObject Introspection

Then launch the GUI mode using the documented FluxTuner GUI option.

This method is useful for testing a release quickly. For regular use, prefer the packaged installation methods when available.

Launch modes

fluxtuner              # default Textual TUI
fluxtuner --gui        # GTK4 desktop GUI
fluxtuner --cli        # legacy numbered CLI

Common commands

fluxtuner --help
fluxtuner --version
fluxtuner --list-players
fluxtuner --doctor
fluxtuner --list-themes
fluxtuner --theme nord
fluxtuner --theme nord --save-theme
fluxtuner --export-favs favorites.json
fluxtuner --import-favs favorites.json
fluxtuner --export-playlists playlists.json
fluxtuner --import-playlists playlists.json
fluxtuner --clear-cache

Documentation

Topic Link
Project website, overview, screenshots and quick introduction FluxTuner website
Installation, launch modes, player backends, themes, keybindings and data storage Usage guide
Architecture, modules, storage and playback flow Architecture
Local development, tests, quality checks and troubleshooting Development guide
Release process Release guide
Flatpak packaging notes Flatpak guide
Security policy Security
Changes by version Changelog
Contributing workflow Contributing

Architecture at a glance

flowchart LR
    User["User"] --> Entry["fluxtuner command"]
    Entry --> TUI["Textual TUI"]
    Entry --> GUI["GTK4 GUI"]
    Entry --> CLI["Legacy CLI"]

    TUI --> Services["Core services"]
    GUI --> Services
    CLI --> Services

    Services --> Search["Radio Browser search"]
    Services --> Compatibility["Station compatibility"]
    Services --> Library["Favorites, playlists, history"]
    Services --> Config["Config and playback state"]
    Services --> PlayerRegistry["Player registry"]

    Search --> Compatibility
    Compatibility --> PlayerRegistry

    PlayerRegistry --> MPV["mpv backend"]
    PlayerRegistry --> FFPLAY["ffplay backend"]
    PlayerRegistry --> MPG123["mpg123 backend"]
    PlayerRegistry --> OGG123["ogg123 backend"]
    MPV --> Streams["Online radio streams"]
    FFPLAY --> Streams
    MPG123 --> Streams
    OGG123 --> Streams

    Library --> Storage["XDG data files"]
    Config --> Storage
Loading

See the full design notes in docs/architecture.md.


Current focus

FluxTuner is under active development. The current focus is to keep improving the stable TUI and GTK desktop GUI, refine playlist and favorites workflows, improve packaging/distribution paths, and continue hardening reliability, tests and documentation.

The roadmap is intentionally kept out of the README until items are confirmed. Please use GitHub issues and discussions for proposed features, bugs and packaging requests.


Contributing

Issues, feature requests, screenshots, workflows and pull requests are welcome.

A good first contribution can be as simple as:

  • trying FluxTuner on your Linux/macOS setup,
  • reporting whether mpv, ffplay, mpg123 or ogg123 detection works,
  • sharing terminal or GTK screenshots,
  • suggesting stations, playlist workflows or packaging improvements,
  • opening a small documentation or bug-fix PR.

See CONTRIBUTING.md and docs/development.md.


Commercial use

FluxTuner is open source and available under the MIT license.

You are free to use, modify and distribute it, including for commercial purposes. If you plan to integrate FluxTuner into a commercial product, service or distribution, collaboration, attribution or feedback would be appreciated.


License

MIT


Support the project

If you find FluxTuner useful, please consider starring the repository, opening issues, suggesting improvements or sharing your setup. Feedback helps shape the future of the project.

About

A modern internet radio player for the terminal (tui) and desktop (gui).

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages