[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80455":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":13,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":31,"discoverSource":32},80455,"lyre","DeadZone-0\u002Flyre","DeadZone-0","A beautiful music visualizer and metadata TUI built with Node.js and Ink.","",null,"TypeScript",55,3,1,0,2,1.81,"ISC License",false,"main",true,[23,24,25,26,27],"cava","linux","music","music-visualizer","visualizer","2026-06-12 02:04:02","# Lyre\n\nA beautiful music visualizer and metadata TUI built with Node.js and Ink.\n\n## Features\n- **Built-in Local Player**: Browse and play your local audio files (MP3, FLAC, WAV) via a dedicated file browser with automatic queueing, shuffle, and loop.\n- **Smart Search**: Instantly filter your local music library while browsing.\n- **Media Player Selector**: Choose which active media player (e.g., Spotify, VLC, Firefox) Lyre should track.\n- **Visualizer Tweaker**: Adjust CAVA sensitivity, smoothing, and gravity in real-time.\n- **Focus Mode**: A minimalist, visualizer-only view for zero distractions (supports centered fullscreen lyrics).\n- **Real-time Visualization**: Audio visualizer using `cava` with customizable fluid or stacked bars.\n- **Synced Lyrics**: Fetches and displays time-synced lyrics that automatically scroll with the current track.\n- **Album Art**: High-resolution (half-block) or ASCII art modes.\n- **Modular Themes**: Switch between built-in visualizer themes or create your own custom gradients and styles.\n- **Custom Keybindings**: Fully remappable keys for all actions.\n- **Responsive**: Adapts to any terminal size and window resizing with smart truncation.\n\n## Prerequisites\n- **Node.js** (v18+)\n- **cava**: Required for visualization.\n- **playerctl**: Required for metadata and controls.\n- **mpv**: Required for local file playback.\n- **Nerd Fonts**: Recommended for icons.\n\n## Installation\n\n### From Source\n1. Clone the repository.\n2. Install dependencies: `npm install`\n3. Build the project: `npm run build`\n4. Link globally: `sudo npm link`\n5. Run from anywhere: `lyre`\n\n### Via NPM\n```bash\nnpm install -g lyre-tui\nlyre\n```\n\n## Configuration\n\nLyre stores all configuration files in `~\u002F.config\u002Flyre\u002F`. On first run, default configuration files are automatically generated if they do not exist.\n\n### Directory Structure\n\n```\n~\u002F.config\u002Flyre\u002F\n├── lyre.json      # UI settings (album art, visualizer, lyrics, keybindings)\n├── themes.json    # Custom visualizer themes\n└── cava.conf      # Audio visualizer parameters\n```\n\n### `lyre.json` — UI Configuration\n\nCustomize the appearance and behavior by editing `~\u002F.config\u002Flyre\u002Flyre.json`:\n\n```json\n{\n  \"albumArt\": {\n    \"enabled\": true,\n    \"mode\": \"high-res\",\n    \"maxHeight\": 18\n  },\n  \"visualizer\": {\n    \"bars\": 80,\n    \"fps\": 30,\n    \"theme\": \"default\",\n    \"sensitivity\": 100,\n    \"integral\": 85,\n    \"gravity\": 100\n  },\n  \"lyrics\": {\n    \"enabled\": true,\n    \"activeColor\": \"yellow\",\n    \"inactiveColor\": \"gray\"\n  },\n  \"keybindings\": {\n    \"quit\": \"q\",\n    \"playPause\": \" \",\n    \"next\": \"n\",\n    \"previous\": \"p\",\n    \"seekForward\": \"l\",\n    \"seekBackward\": \"h\",\n    \"volumeUp\": \"k\",\n    \"volumeDown\": \"j\",\n    \"browser\": \"b\",\n    \"themes\": \"t\",\n    \"player\": \"m\",\n    \"lyrics\": \"v\",\n    \"art\": \"a\",\n    \"focus\": \"z\",\n    \"tweaker\": \"f\",\n    \"shuffle\": \"s\",\n    \"loop\": \"r\"\n  }\n}\n```\n\n#### Visualizer Tweak Options\n\n| Option | Range | Default | Description |\n|--------|-------|---------|-------------|\n| `visualizer.sensitivity` | 10 - 200 | 100 | How reactive the bars are to sound. |\n| `visualizer.integral` | 0 - 100 | 85 | Smoothing factor. Higher = more fluid, Lower = more jittery. |\n| `visualizer.gravity` | 0 - 1000 | 100 | How fast bars fall. Lower = \"zero gravity\", Higher = instant drop. |\n\n#### Keybindings Configuration\nEvery key in the `keybindings` section can be remapped to any single character. Special keys like `upArrow` or `escape` are currently reserved for navigation and closing menus.\n\n## Keybindings\n\nLyre provides a fully interactive terminal experience. Use the **Tweaker (`f`)** to adjust these on the fly.\n\n| Key | Action |\n|-----|--------|\n| `Space` | Play \u002F Pause |\n| `n` | Next track (Local Player) |\n| `p` | Previous track (Local Player) |\n| `h` \u002F `Left` | Seek backward \u002F Previous (MPRIS) |\n| `l` \u002F `Right` | Seek forward \u002F Next (MPRIS) |\n| `k` \u002F `Up` | Volume up (+5%) |\n| `j` \u002F `Down` | Volume down (-5%) |\n| `b` | Toggle Local File Browser |\n| `\u002F` | Smart Search (while in Browser) |\n| `m` or `p` | Select Media Player (lock source) |\n| `f` | Open Visualizer Tweaker |\n| `z` | Toggle Focus Mode (minimalist) |\n| `s` | Toggle Shuffle (Local Player) |\n| `r` | Toggle Loop\u002FRepeat (Local Player) |\n| `v` | Toggle Synced Lyrics Mode |\n| `t` | Open Theme Selector Menu |\n| `a` | Toggle Album Art Visibility |\n| `q` | Quit |\n| `Ctrl+C` | Force quit (with cleanup) |\n\n## Supported Players\n\nAny MPRIS-compatible media player works with Lyre via `playerctl`, including:\n- Spotify (with `spotifyd` or the official client)\n- VLC\n- Firefox \u002F Chrome (with media keys support)\n- MPD (with `mpd-mpris`)\n\n## Troubleshooting\n\n### Run in Debug Mode\nIf you encounter persistent issues (like bars not showing), run Lyre with the `--debug` flag:\n```bash\nlyre --debug\n```\nThis will generate a log file at `~\u002F.config\u002Flyre\u002Fdebug.log`. Please include this log when reporting issues.\n\n### No visualizer bars appearing\nEnsure `cava` is installed and can detect your audio output. Run `cava` standalone to verify.\n\n### \"playerctl: command not found\"\nInstall `playerctl` from your package manager (`sudo pacman -S playerctl`, `sudo apt install playerctl`, etc.).\n\n### Album art not rendering\n- Ensure your terminal supports true color (24-bit).\n- If colors appear wrong, try setting `albumArt.mode` to `\"ascii\"` in your config.\n\n### Menu Clipping\nLyre is highly responsive. If a menu looks cut off, simply resize your terminal; the app will automatically recalculate the layout and pagination.\n\n## Star Chart\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=DeadZone-0%2Flyre&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=DeadZone-0\u002Flyre&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=DeadZone-0\u002Flyre&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=DeadZone-0\u002Flyre&type=date&theme=dark&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\nISC\n","Lyre 是一个基于 Node.js 和 Ink 构建的音乐可视化和元数据终端用户界面。它具备内置本地播放器，支持浏览、播放 MP3、FLAC 和 WAV 等格式的音频文件，并提供自动队列、随机播放和循环播放功能。此外，Lyre 还支持智能搜索、媒体播放器选择、可视化调节以及实时歌词同步显示等功能。该项目特别适合那些喜欢在 Linux 终端环境下欣赏音乐并希望拥有丰富视觉体验的用户使用。通过自定义主题、键位绑定等设置，用户可以轻松调整界面以满足个人偏好。","2026-06-11 04:00:50","CREATED_QUERY"]