Tidal Player for Sailfish OS

August 27, 2025 ยท View on GitHub

A native Tidal music streaming client for Sailfish OS, built with QML/Qt and Python using the tidalapi v0.7.1 (https://tidalapi.netlify.app/).

TIDAL API Usage

As v0.7.1 is not fully compatible with TIDAL anymore, line 114 of tidalapi/user.py is removed during the packaging process.

Development History

This project development is driven by Claude 3.5 Sonnet AI. The icon is created by Midjourney.

โœจ Features

๐ŸŽต Core Music Features

  • โœ… Tidal Account Integration - Full OAuth authentication with token refresh
  • โœ… Music Library Access - Browse and search Tidal's complete music catalog
  • โœ… Playlist Management - Create, edit, and manage personal playlists
  • โœ… Playback Control - Play tracks, albums, playlists, and mixes
  • โœ… Media Controls - Play, pause, next, previous with MPRIS system integration
  • โœ… Track Information - Complete metadata display with album artwork
  • โœ… Favorites System - Save favorite tracks, albums, artists, and playlists

๐Ÿ  Advanced Homescreen System

  • โœ… Configurable Sections - 8 customizable content sections
    • Recently Played, Popular Playlists, Top Artists, Top Albums
    • Top Tracks, Personal Playlists, Custom Mixes, Radio Stations
  • โœ… Cache-First Loading - Instant startup with cached content
  • โœ… Priority-Based Refresh - Smart background updates
  • โœ… Toggle Interface - Switch between classic and modern homescreen

๐ŸŽฎ Advanced Play Actions

  • โœ… Context Menus - Right-click for advanced play options
  • โœ… Multiple Play Modes:
    • Replace Playlist & Play
    • Add to Playlist & Play
    • Play Now (Keep Playlist)
    • Add to Queue
  • โœ… Configurable Defaults - Set preferred play action in settings
  • โœ… Single-Click Navigation - Click to view details, long-press for play menu

โฐ Sleep Timer System

  • โœ… Modern UI - Sailfish OS native TimePicker integration
  • โœ… Quick Presets - 8 preset buttons (5m, 10m, 15m, 30m, 45m, 1h, 1.5h, 2h)
  • โœ… Custom Time Selection - Full time picker for any duration
  • โœ… Multiple Actions:
    • Pause playback
    • Stop playback
    • Fade out and pause (10-second fade)
    • Close application
  • โœ… Live Progress Feedback - Real-time countdown with system notifications
  • โœ… Cover Integration - Timer display in application cover

๐Ÿš€ Performance Optimizations

  • โœ… Async-First API - 30-50% UI responsiveness improvement
  • โœ… Database Batching - 25% query performance improvement
  • โœ… Request Deduplication - 30% network efficiency improvement
  • โœ… Incremental Cache Cleanup - Eliminated periodic UI freezes
  • โœ… LRU Cache Management - Memory leak prevention

๐Ÿ”ง System Integration

  • โœ… MPRIS Media Controls - System-wide media control integration
  • โœ… Reduced Permissions - Only Internet + Audio permissions required
  • โœ… System Notifications - Native notification banners
  • โœ… Cover Page Support - Track info and timer display in cover
  • โœ… MiniPlayer - Persistent mini player with progress slider

Requirements

Include https://openrepos.net/user/7598/repository and https://openrepos.net/user/2414/repository as repository:

or look for Python3-request and Python3-future

in storeman and add the corresponding repos.

and

  • Python 3.x
  • Qt/QML
  • PyOtherSide
  • Tidal API credentials

๐Ÿ“ฆ Getting Test Builds

Automatic RPM Builds

This project automatically builds RPM packages for all Sailfish OS architectures:

For Testing Latest Features:

  • ๐Ÿ”„ Master Branch Builds - Every push to master triggers automatic builds
  • ๐Ÿงช Pull Request Builds - Every PR gets tested with automatic builds
  • ๐Ÿ“ฅ Download Location - Go to Actions, click on latest build, download artifacts

For Stable Releases:

  • ๐Ÿš€ Tagged Releases - Official releases with changelog in Releases
  • ๐Ÿ“‹ Release Notes - Complete changelog and installation instructions

Supported Architectures

  • aarch64 - Modern ARM64 devices (Xperia 10 II/III/IV, etc.)
  • armv7hl - Older ARM32 devices (Jolla Phone, Xperia X, etc.)
  • i486 - x86 emulator and Intel-based devices

Installation

  1. Download the appropriate RPM for your device architecture
  2. Transfer to your Sailfish OS device
  3. Install via Settings โ†’ System โ†’ Software Updates โ†’ Manual Installation
  4. Or use pkcon install-local harbour-tidalplayer-*.rpm from terminal