Modern desktop music streaming player with syllable-synced lyrics and reactive dynamic visuals.
Preview β’ Architecture β’ Getting Started β’ Building β’ Docs β’ Contributing β’ License
Note
Liner client connects to the official Liner API backend for music catalog, streaming playback, and synchronized lyrics.
The renderer follows Feature-Sliced Design: imports only point down the layers (app β widgets β features β entities β shared).
liner/desktop/
βββ electron/
β βββ main.ts # Main process: windows, IPC, updates, deep links
β βββ preload.ts # Context bridge between the renderer and the main process
β βββ local-tracks/ # Imported audio files and the liner-local:// protocol
β βββ youtube/ # Helpers for the YouTube playback fallback
β βββ overlay.ts # Floating overlay player window
β βββ discord.ts # Discord Rich Presence
β βββ crypto.ts # In-memory WebAssembly request signer
β βββ signer.ts # Embedded WebAssembly binary
βββ native/ # Windows snap preview add-on
βββ src/
β βββ app/ # App shell, routes, providers, global styles
β βββ widgets/ # Screen blocks: sidebar, header, player bar, fullscreen player, modals
β βββ features/ # player, lyrics, library, search, collection, settings, overlay, β¦
β βββ entities/ # track, playlist, artist, user
β βββ shared/ # API client, storage, UI kit, contracts, utilities
β βββ languages/ # Translations for 11 languages
β βββ main.tsx # Vite entry point
βββ docs/ # Design, storage, privacy, translations, FAQ
βββ package.json
βββ vite.config.ts
- Node.js
v22+and pnpmv10+ - Windows 10/11, macOS or Linux
git clone https://github.com/tryliner/desktop.git
cd desktop
pnpm install# Electron app with Vite hot reload
pnpm dev# Tests only
pnpm test
# Everything CI runs on a pull request: lint, format check, types, build, tests
pnpm check# Linux (AppImage & .deb)
pnpm electron:build:linux
# Windows (.exe installer)
pnpm electron:build:win
# macOS (.dmg & .zip, for both Intel and Apple Silicon)
pnpm electron:build:macThe macOS build produces x64 (Intel) and arm64 (Apple Silicon) packages. To build only one, add --arm64 or --x64. Packages are placed in the release/ directory.
- Design guidelines: tokens, glass surfaces, motion and building blocks
- Storage: where data lives on your device and what "Clear cache" removes
- Privacy: everything the app sends off your device
- Translations: adding strings, plurals and languages
- FAQ: answers to the most common problems
Bug fixes, small features, translations and docs fixes are welcome. Read CONTRIBUTING.md and AGENTS.md before you open a pull request, and report bugs with the issue forms. Questions and ideas go to Discussions, security issues to SECURITY.md. The license limits what a fork is allowed to do.
@braccato/core&@braccato/parsersβ Synced lyrics components and format parsers.- Kawarp β WebGL background shader the fullscreen background is based on.
- Solar Icons & MingCute Icons β Icon collections.
Liner is distributed under the Liner Source-Available & Non-Commercial Contribution License.
- Allowed: Personal non-commercial usage, local builds, and upstream contributions.
- Prohibited: Commercial distribution, public competing forks, or extracting core algorithms for third-party products.
See LICENSE for details.

