Modern desktop music streaming player with syllable-synced lyrics and reactive dynamic visuals.
Preview • Architecture • Getting Started • Building • Contributing • License
Note
Liner client connects to the official Liner API backend for music catalog, streaming playback, and synchronized lyrics.
liner/desktop/
├── electron/
│ ├── main.ts # Electron main process & IPC handlers
│ ├── preload.ts # Context bridge & secure renderer bindings
│ ├── crypto.ts # High-performance in-memory WebAssembly signer
│ └── signer.ts # Embedded WebAssembly binary
├── src/
│ ├── assets/ # Static assets and media
│ ├── components/ # Shared reusable UI components
│ ├── features/ # Feature modules (player, lyrics, queue, library, search, auth)
│ ├── pages/ # Route views (Home, Search, Album, Artist, Playlist)
│ ├── shared/ # API client, state stores (Zustand), and data contracts
│ ├── App.tsx # Application root
│ └── main.tsx # Vite entry point
├── package.json
└── vite.config.ts
- Node.js
v20+and pnpm or Bun - Modern OS (Windows 10/11, macOS, or Linux)
# 1. Clone repository
git clone https://github.com/tryliner/desktop.git
cd desktop
# 2. Install dependencies (pnpm or Bun)
pnpm install
# or
bun install# Start Liner in development mode (Electron app with Vite hot-reload)
pnpm run dev
# or
bun run dev# Run test suite with Vitest
bun run test
# or
pnpm test# Build desktop packages for your current OS:
# Linux (AppImage & .deb)
bun run electron:build:linux
# Windows (.exe installer)
bun run electron:build:winCompiled distributions will be placed in the release/ directory.
Bug fixes, small features, and docs fixes are welcome. Read

