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.
Contributions, bug fixes, and feature enhancements are welcome:
- Fork the repository.
- Create your feature branch (
git checkout -b feat/my-feature). - Commit your changes (
git commit -m 'feat: add amazing feature'). - Push to your branch (
git push origin feat/my-feature). - Open a Pull Request to
tryliner/desktop.
@braccato/core&@braccato/parsers— Synced lyrics components and format parsers.@kawarp/react&@kawarp/core— WebGL background shader components.- 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.

