Metadata-Version: 2.4
Name: jellytoast
Version: 0.1.7
Summary: A desktop music player for Jellyfin and Navidrome servers — bit-perfect mpv playback (Linux + Windows).
Author-email: august <august@wolfgangwarehaus.com>
License: GPL-2.0-or-later
Project-URL: Homepage, https://github.com/wolfgangwarehaus/jellytoast
Project-URL: Repository, https://github.com/wolfgangwarehaus/jellytoast
Project-URL: Issues, https://github.com/wolfgangwarehaus/jellytoast/issues
Project-URL: Changelog, https://github.com/wolfgangwarehaus/jellytoast/blob/main/docs/CHANGELOG.md
Keywords: jellyfin,navidrome,subsonic,media,music,mpv,linux,windows,kde
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: COPYING
Requires-Dist: PySide6<7.0,>=6.6.0
Requires-Dist: python-mpv>=1.0.5
Requires-Dist: pychromecast<16,>=14.0.0
Requires-Dist: zeroconf>=0.149.12
Requires-Dist: ifaddr>=0.1.7
Requires-Dist: dbus-next>=0.2.3; sys_platform == "linux"
Requires-Dist: jeepney>=0.6; sys_platform == "linux"
Requires-Dist: pyatv<1.0,>=0.17; sys_platform != "win32"
Requires-Dist: python-xlib>=0.30; sys_platform == "linux"
Requires-Dist: requests>=2.32.4
Requires-Dist: keyring>=23.0
Requires-Dist: cryptography>=43.0.1
Requires-Dist: numpy>=1.24
Requires-Dist: async-upnp-client<1.0,>=0.47.0
Requires-Dist: aiohttp>=3.14.0
Requires-Dist: soco<1,>=0.31
Requires-Dist: winrt-runtime>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.ApplicationModel>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Media>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Media.Interop>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Storage.Streams>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Foundation>=2.0; sys_platform == "win32"
Requires-Dist: windows-toasts>=1.1; sys_platform == "win32"
Requires-Dist: comtypes>=1.2; sys_platform == "win32"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.0; extra == "dev"
Requires-Dist: pytest-randomly>=3.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: pre-commit>=3.0; extra == "dev"
Requires-Dist: mypy>=1.8; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: pip-audit>=2.7; extra == "dev"
Requires-Dist: dbus-next>=0.2.3; extra == "dev"
Provides-Extra: windows
Provides-Extra: macos
Requires-Dist: pyobjc-core>=10.0; sys_platform == "darwin" and extra == "macos"
Requires-Dist: pyobjc-framework-Cocoa>=10.0; sys_platform == "darwin" and extra == "macos"
Requires-Dist: pyobjc-framework-MediaPlayer>=10.0; sys_platform == "darwin" and extra == "macos"
Requires-Dist: pyobjc-framework-UserNotifications>=10.0; sys_platform == "darwin" and extra == "macos"
Requires-Dist: pyobjc-framework-ServiceManagement>=10.0; sys_platform == "darwin" and extra == "macos"
Dynamic: license-file

<h1 align="center">jellytoast</h1>

<p align="center">
  A desktop music player for <a href="https://jellyfin.org/">Jellyfin</a> and
  <a href="https://www.navidrome.org/">Navidrome</a> servers —<br>
  bit-perfect playback, casting, mini-player, and offline downloads.
</p>

<p align="center">
  <a href="https://github.com/wolfgangwarehaus/jellytoast/actions/workflows/ci.yml"><img src="https://github.com/wolfgangwarehaus/jellytoast/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-GPL--2.0--or--later-blue" alt="License"></a>
</p>

<!-- hero screenshot: docs/screenshots/hero.png (Library view, Frosted dark) -->
<!-- <p align="center"><img src="docs/screenshots/hero.png" width="800" alt="jellytoast — library view"></p> -->

## Features

- **Desktop app for your self-hosted music** — supports Jellyfin and Navidrome, with multiple libraries.
- **Bit-perfect audio** — FLAC / ALAC / OPUS / DSD playback via [mpv](https://mpv.io/).
- **Cast anywhere** — send music to Chromecast, AirPlay 2, Sonos, or DLNA. Local relay for offline or Tailscale casting.
- **Offline mode** — cache albums, playlists, or your whole library for offline playback.
- **Floating mini player** — compact and album-art views.
- **Desktop features** — media keys, a tray icon, optional notifications, and a start-at-login option.
- **Frosted glass** — background blur on KDE, macOS, and Windows. Light and dark themes with a choice of accent color.
- **And more** — synced lyrics, an audio visualizer, smart playlists, smart shuffle, a sleep timer, ListenBrainz scrobbling, and tag editing (Jellyfin).

## Install

Latest builds are on [**Releases**][rel].

- **Linux** — [.deb][rel] · [AppImage][rel] · AUR *(soon)*
- **macOS** — [Apple Silicon][rel] · [Intel][rel] · App Store *(soon)*
- **Windows** — [Microsoft Store][store] · [.exe][rel] · `winget install jellytoast`
- **Any OS** — `pipx install jellytoast`

**From source** (Python 3.11+, Qt 6, libmpv):

```bash
git clone https://github.com/wolfgangwarehaus/jellytoast.git
cd jellytoast && pip install -e .
jellytoast
```

Want to contribute? [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) has the dev setup, the architecture, and the conventions this codebase follows.

[rel]: https://github.com/wolfgangwarehaus/jellytoast/releases/latest
[store]: https://apps.microsoft.com/detail/9PNLTPXGHN79

## Documentation

- [`user_guide.md`](docs/user_guide.md) — how to use every feature
- [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) — dev setup, architecture & conventions
- [`SPEC.md`](docs/SPEC.md) — what the app actually does today
- [`SECURITY.md`](.github/SECURITY.md) — how to report a vulnerability
- [`CHANGELOG.md`](CHANGELOG.md) — what changed in each release

## License

GPL-2.0-or-later. See [`LICENSE`](LICENSE).

## Support

Want to leave a tip? [Ko-fi ☕](https://ko-fi.com/wolfgangwarehaus)
