{"id":49829495,"url":"https://github.com/yelanxin/hiresTI","last_synced_at":"2026-05-30T10:00:39.822Z","repository":{"id":338541900,"uuid":"1157703172","full_name":"yelanxin/hiresTI","owner":"yelanxin","description":"hiresTI is a modern, high-fidelity TIDAL client for Linux, designed for USB passthrough and bit-perfect playback.","archived":false,"fork":false,"pushed_at":"2026-05-21T02:45:14.000Z","size":84175,"stargazers_count":140,"open_issues_count":5,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-21T07:54:22.851Z","etag":null,"topics":["bit-perfect","hifi","linux","music-player"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yelanxin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"yelanxin"}},"created_at":"2026-02-14T06:47:48.000Z","updated_at":"2026-05-21T07:22:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"51d6a231-74c6-49c4-961c-81db110b5cce","html_url":"https://github.com/yelanxin/hiresTI","commit_stats":null,"previous_names":["yelanxin/hiresti"],"tags_count":77,"template":false,"template_full_name":null,"purl":"pkg:github/yelanxin/hiresTI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yelanxin%2FhiresTI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yelanxin%2FhiresTI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yelanxin%2FhiresTI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yelanxin%2FhiresTI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yelanxin","download_url":"https://codeload.github.com/yelanxin/hiresTI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yelanxin%2FhiresTI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33687722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bit-perfect","hifi","linux","music-player"],"created_at":"2026-05-13T20:00:48.389Z","updated_at":"2026-05-30T10:00:39.816Z","avatar_url":"https://github.com/yelanxin.png","language":"Python","funding_links":["https://github.com/sponsors/yelanxin"],"categories":["linux"],"sub_categories":[],"readme":"# hiresTI Music Player\n\n![Python](https://img.shields.io/badge/Python-3.10%2B-blue)\n![Rust](https://img.shields.io/badge/Rust-1.70%2B-orange?logo=rust)\n![GTK4](https://img.shields.io/badge/UI-GTK4%20%2B%20Libadwaita-green)\n![License](https://img.shields.io/badge/License-GPL--3.0-purple)\n\n`hiresTI` is a native Linux TIDAL client built for audiophiles, combining high-fidelity playback, rock-solid stability, and a modern GTK4/Libadwaita user experience. \n\n\u003e [!IMPORTANT]\n\u003e **Re-login required for FLAC / Hi-Res quality.**\n\u003e The legacy OAuth (device-code) login that previous versions used is now capped by TIDAL at 320 kbps AAC. A new **PKCE** login flow (added in `v1.9.5`) restores access to full FLAC CD-quality and Hi-Res Lossless streams.\n\u003e\n\u003e If you're still on the old OAuth session, open **Account**, sign out, and sign back in — the login dialog will use PKCE automatically and your library will resume at the higher tiers.\n\n## Highlights\n\n- A high performance Rust audio engine core\n- Bit-perfect playback flow with optional exclusive output controls\n- Built-in USB rawlink driver enables direct USB passthrough, bypassing OS drivers and mixing for purer sound.\n- High-flexibility DSP workspace with reorderable processing, PEQ, convolution, tube/tape color, stereo widening, limiter, and resampler\n- TIDAL PKCE login (recommended for FLAC / Hi-Res) with legacy OAuth fallback, account-scoped library access\n- TIDAL Max Hi-Res Lossless streaming up to 24-bit / 192kHz\n- Built-in queue drawer, lyrics support, and visualizer modules\n- MPRIS support (`org.mpris.MediaPlayer2.hiresti`) for desktop media controls\n- Built-in remote control with HTTP JSON-RPC, MCP endpoint.\n\nAudio Optimization Guide: [audio-optimization-guide.md](audio-optimization-guide.md)\n\n## Screenshots\n### Main Window\n![Main Window](screenshots/1.8.0-2.png)\n![Main Window](screenshots/1.4.5-2.png)\n![Main Window](screenshots/1.6.0-1.png)\n![Main Window](screenshots/1.8.0-1.png)\n![Main Window](screenshots/1.6.5-1.png)\n\n\n### Mini Mode\n\u003cimg src=\"screenshots/1.0.4-5.png\" width=\"400\"\u003e\n\n\n## Tech Stack\n\n- Python 3.10+\n- GTK4 + Libadwaita (PyGObject)\n- Rust audio engine core (`rust_audio_core`) — symphonia decode + native ALSA mmap / USB rawlink output\n- Rust visualizer core (`rust_viz_core`) — FFT + spectrum draw helpers\n- `tidalapi` (TIDAL integration)\n\n## Audio Engine Note\n\nStarting from `v1.2.0`, playback is driven by the Rust audio engine core by default.\nPython remains the UI/application layer, while transport/output routing and core playback runtime run through Rust.\n\n## Runtime Requirements\n\nInstall these system packages first:\n\n- Python 3.10+\n- GTK4\n- Libadwaita\n- PyGObject bindings\n- WebKitGTK 6.0 (for the embedded PKCE login flow; optional — paste-URL fallback works without it)\n\nBundled Python dependencies used by packaging:\n\n- `tidalapi`\n- `requests`\n- `urllib3`\n- `PyOpenGL`\n- `pystray`\n- `pillow`\n\n## Quick Start (Source)\n\n```bash\npython3 -m pip install -r requirements.txt\ncargo build --manifest-path src_rust/rust_audio_core/Cargo.toml --release\ncargo build --manifest-path src_rust/rust_viz_core/Cargo.toml --release\npython3 src/main.py\n```\n\n`hiresTI` loads the Rust audio and visualizer cores from `src_rust/*/target/release`, so the `--release` build step is required before running from source.\n\n## Install Prebuilt Packages\nPlease download prebuilt package from release page.\n\n### Debian / Ubuntu (DEB)\n\n```bash\nsudo apt install ./hiresti_\u003cversion\u003e_amd64.deb\n```\n\n### Fedora (RPM)\n\n```bash\nsudo dnf install ./hiresti-\u003cversion\u003e-1.fedora.\u003carch\u003e.rpm\n```\n\n### EL9 (Rocky / Alma / RHEL 9)\n\n```bash\nsudo dnf install ./hiresti-\u003cversion\u003e-1.el9.\u003carch\u003e.rpm\n```\n\n### Arch Linux\n\n```bash\nsudo pacman -U ./hiresti-\u003cversion\u003e-1-\u003carch\u003e.pkg.tar.zst\n```\n\n### Nix / NixOS\n\n`hiresTI` ships a flake that exposes `packages.default`, so users on Nix or NixOS can run / install directly from the GitHub repo with no manual dependency setup:\n\n```bash\n# One-shot run (no install)\nnix run github:yelanxin/hiresTI\n\n# Install into your user profile\nnix profile install github:yelanxin/hiresTI\n```\n\nThe flake builds the Rust audio + visualizer cores via `rustPlatform.buildRustPackage` and wraps the Python tree with `wrapGAppsHook4`, pulling all GTK4 / WebKit / GStreamer / PipeWire / ALSA dependencies from nixpkgs — no system packages need to be pre-installed.\n\n### Flatpak\n\n```bash\nflatpak install ./hiresti-\u003cversion\u003e.flatpak\n```\n\nRun:\n\n```bash\nflatpak run com.hiresti.player\n```\n\n\u003e **Note:** Requires GNOME Platform runtime 48. If not already installed:\n\u003e ```bash\n\u003e flatpak install flathub org.gnome.Platform//48 org.gnome.Sdk//48\n\u003e ```\n\u003e\n\u003e User data is stored under `~/.var/app/com.hiresti.player/`.\n\n\u003e ⚠️ **Flatpak limitations:** Due to sandbox restrictions, some audio features (such as automatic Pro-Audio profile switching, exclusive mode) may have reduced functionality compared to native packages. For the best experience, it is recommended to use the native package for your distribution (RPM, DEB, or Arch).\n\n\n## Upgrade Guide\n\n### Playlist migration note\n\nStarting from `v1.1.0`, local playlists are removed.\nOnly cloud playlists are supported.\n\n### Fedora / EL9 RPM upgrades\n\nUse upgrade mode when moving to a newer version:\n\n```bash\nsudo dnf upgrade ./hiresti-\u003cversion\u003e-1.fedora.\u003carch\u003e.rpm\n```\n\nor:\n\n```bash\nsudo rpm -Uvh ./hiresti-\u003cversion\u003e-1.fedora.\u003carch\u003e.rpm\n```\n\nFor EL9 packages, replace `fedora` with `el9`.\n\nDo not use `rpm -i` for upgrades, because it installs side-by-side and can cause file conflict errors.\n\n## Support\n\nIf you run into issues, have feature requests, or want to report bugs, please open a GitHub issue:\n\n- https://github.com/yelanxin/hiresTI/issues\n\n## Troubleshooting With Logs\n\nIf you hit a problem, please start the app from terminal and attach logs in your issue:\n\n```bash\nhiresti 2\u003e\u00261 | tee /tmp/hiresti.log\n```\n\nFor GTK debug output:\n\n```bash\nG_MESSAGES_DEBUG=all hiresti 2\u003e\u00261 | tee /tmp/hiresti-gtk.log\n```\n\nWhen reporting, include:\n\n- your distro and desktop environment\n- app version\n- steps to reproduce\n- relevant log snippets (or the full log file path above)\n\n## Acknowledgements\n\nSpecial thanks to everyone who shares feedback. In particular, [ilijagosp](https://github.com/ilijagosp) has provided feedback and suggestions with every new release.\n\n## Sponsors\n\nThanks to those supporting hiresTI ❤\n\n\u003ca href=\"https://github.com/AriZone\"\u003e\u003cimg src=\"https://github.com/AriZone.png\" width=\"60\" height=\"60\" alt=\"AriZone\" /\u003e\u003c/a\u003e\n\nIf you'd like to support development, you can sponsor via [GitHub Sponsors](https://github.com/sponsors/yelanxin).\n\n## License\n\nGPL-3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyelanxin%2FhiresTI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyelanxin%2FhiresTI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyelanxin%2FhiresTI/lists"}