Disclaimer
Tonearm is not affiliated with or endorsed by TIDAL. Tonearm is provided as-is without any warranty or guarantees. We explicitly do not offer and are not planning to offer any kind of offline playback functionality, Tonearm is not a downloader. A paid TIDAL account is required for full-length playback.
Features
- Background Playback
- Can be brought back to the front by MPRIS or by simply starting the app again
- Configurable through dconf
- Gapless Playback
- MPRIS playback information and player controls
- Position-aware Lyrics Viewer
- Fallback to plain lyrics viewer if the song does not have timestamped lyrics
- Scrobbling to ListenBrainz-compatible servers
- Sign-in to your account via QR code / device linking code
- Also works without signing in, with limited playback duration (Same as TIDAL web)
- Supports playback of tracks in Max (AKA Master) quality
- Currently, Tonearm will always play at the highest available quality
- Works with "Open in TIDAL" links (E.g. tidal://my-collection)
About the Project
We set out to create a native, modern looking streaming client for TIDAL built with GTK4 and Libadwaita. We oriented a lot on existing GNOME apps (both official and third-party) to ensure the client really fits into the GNOME desktop and its applications, something web apps and electron apps often struggle with. We also try to keep the general spirit of TIDAL's UI so users can understand the app relatively quickly.
Tonearm came to existence as a learning project on how to implement GTK apps using GoLang, a rather unconventional choice. It was also an attempt at re-creating the look and feel of writing GUI applications in SwiftUI. This resulted in the development of the UI library schwifty which may be extracted into its own repository at some point.
The current design for Tonearm originally came to be when I tried myself on a re-design of High Tide. This is why the sidebar features a very similar player layout. The rest of the application has largely been designed after common GNOME app practices and the TIDAL web interface.
Installation
Currently the only tested installation method is the Nix flake provided in the repository. If you want to package this software for another distro or marketplace, please do open an issue so we can coordinate.
NixOS (Flake)
This assumes that your system configuration is already done using a system flake. First add this repository as an input to your flake.
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
... your other inputs ...
tonearm = {
url = "git+https://codeberg.org/dergs/Tonearm.git";
inputs.nixpkgs.follows = "nixpkgs";
};
}
then add this anywhere in your system configuration as you see fit
{ inputs, ... }:
{
# System Packages
environment.systemPackages = [
inputs.tonearm.packages.${pkgs.stdenv.hostPlatform.system}.tonearm
];
# Or if you prefer via Home Manager
home.packages = [
inputs.tonearm.packages.${pkgs.stdenv.hostPlatform.system}.tonearm
];
}
Arch Linux (AUR)
You will require an AUR helper, such as yay or paru.
This assumes you are using the yay helper. If using paru, adapt the commands accordingly.
yay -S tonearm
Translations
You can bring Tonearm to even more people by helping us translate it into their native language! To make this easier, Tonearm's translations can be edited on Codeberg's Weblate instance!
Screenshots
Explore Page
Search + Lyrics
Acknowledgements
The following projects and resources served as inspiration or were helpful during the development of Tonearm.
- High Tide for the original design of the player in the sidebar
- puregotk for making this project possible with only minimal CGO bindings
- TIDAL for the overall page designs, which we adapted for GTK