A cross-platform menu bar internet radio player.
eter lives in your menu bar (macOS) or system tray (Windows, Linux) and plays internet radio. It ships with curated station packs, shows the current song with an audio-reactive waveform, and lets you add your own stations. Built with Python and Qt 6.
Grab the latest release for your platform from GitHub Releases.
| Platform | Format |
|---|---|
| macOS | .dmg |
| Windows | Installer (.exe) or portable .zip |
| Linux | .deb, .rpm, or .tar.gz |
Builds are not code-signed. On macOS, right-click the app and choose Open the first time. On Windows, click More info then Run anyway if SmartScreen appears.
-
Plays MP3 and AAC internet radio streams
-
Handles
.pls,.m3u, and.m3u8playlists -
Audio-reactive waveform visualization
-
Volume control with song-change notifications
-
Auto-reconnect with exponential backoff
-
Ships with curated station packs (Macedonian, ex-Yugoslav, World)
-
Station packs update from GitHub without a new app release
-
Create, edit, and organize your own stations and packs (with full undo/redo)
-
Favorites overlay: star stations from any pack
-
Menu bar on macOS (no Dock icon), system tray on Windows and Linux
-
Falls back to a desktop window when no tray is available
-
Now-playing metadata from multiple sources (stream metadata, ICY headers, web scraping)
-
Sleep timer (15 minutes to 2 hours)
-
Resume on launch (remembers your last station)
-
Launch at login
-
Built-in update checker
-
Light and dark theme (follows your OS)
Requires Python 3.9+ and PySide6 6.8+.
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
python -m eterLinux note: On stock GNOME, the system tray requires the AppIndicator extension. Without it, eter runs in windowed mode.
pyinstaller eter.specProduces dist/eter.app on macOS and dist/eter/ on Windows and Linux. The
spec bundles the Qt FFmpeg audio plugin and excludes unused Qt modules.
Pushing a v* tag triggers .github/workflows/release.yml, which builds and
publishes all platform packages to a GitHub Release.
QT_QPA_PLATFORM=offscreen pytest