Package Details: lx-music 2.7.0-2

Git Clone URL: (read-only, click to copy)
Package Base: lx-music
Description: An Electron-based music player
Upstream URL:
Licenses: Apache
Submitter: huyz
Maintainer: sukanka
Last Packager: sukanka
Votes: 3
Popularity: 0.010016
First Submitted: 2020-12-02 13:07 (UTC)
Last Updated: 2024-04-24 15:43 (UTC)

Dependencies (7)

Required by (0)

Sources (4)

Latest Comments

1 2 Next › Last »

SamLukeYes commented on 2024-04-24 13:25 (UTC)

To avoid downloading electron binary from github while building, set ELECTRON_SKIP_BINARY_DOWNLOAD=1 before npm install.

sukanka commented on 2023-05-04 10:52 (UTC)

@DoudiNCer there must be something wrong with your network, notice the keyword ETIMEDOUT. I have a prebuilt binary, you can find it at

DoudiNCer commented on 2023-05-04 05:32 (UTC)

2.2.2 and 2.2.0 can't build: When I run makepkg -s, it shown:

==> Starting build()...
yarn add v1.22.19
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/5] Validating package.json...
[2/5] Resolving packages...
error An unexpected error occurred: " ETIMEDOUT".
info If you think this is a bug, please open a bug report with the information provided in "/dev/shm/lx-music/src/lx-music-desktop-2.2.2/yarn-error.log".
info Visit for documentation about this command.
==> ERROR: A failure occurred in build().

The log file is:

  /usr/bin/node /usr/bin/yarn add eslint-plugin-n


Yarn version: 

Node version: 

  linux x64

      at Timeout._onTimeout (/usr/lib/node_modules/yarn/lib/cli.js:141550:19)
      at listOnTimeout (node:internal/timers:573:17)
      at process.processTimers (node:internal/timers:514:7)

npm manifest: 
    "name": "lx-music-desktop",
    "version": "2.2.2",
    "description": "一个免费的音乐查找助手",
    "main": "./dist/main.js",
    "productName": "lx-music-desktop",
    "scripts": {
      "pack": "node build-config/pack.js && npm run pack:win:setup:x64",
      "pack:win": "node build-config/pack.js && npm run pack:win:setup:x64 && npm run pack:win:setup:x86 && npm run pack:win:setup:arm64 && npm run pack:win:setup:x86_64 && npm run pack:win:7z",
      "pack:win:setup:x86_64": "cross-env TARGET=Setup ARCH=x86_64 electron-builder -w=nsis --x64 --ia32 -p never",
      "pack:win:setup:x64": "cross-env TARGET=Setup ARCH=x64 electron-builder -w=nsis --x64 -p never",
      "pack:win:setup:x86": "cross-env TARGET=Setup ARCH=x86 electron-builder -w=nsis --ia32 -p never",
      "pack:win:setup:arm64": "cross-env TARGET=Setup ARCH=arm64 electron-builder -w=nsis --arm64 -p never",
      "pack:win:portable": "npm run pack:win:portable:x86_64 && npm run pack:win:portable:x64 && npm run pack:win:portable:x86",
      "pack:win:portable:x86_64": "cross-env TARGET=portable ARCH=x86_64 electron-builder -w=portable --x64 --ia32 -p never",
      "pack:win:portable:x64": "cross-env TARGET=portable ARCH=x64 electron-builder -w=portable --x64 -p never",
      "pack:win:portable:x86": "cross-env TARGET=portable ARCH=x86 electron-builder -w=portable --ia32 -p never",
      "pack:win:7z": "npm run pack:win:7z:x64 && npm run pack:win:7z:x86",
      "pack:win:7z:x64": "cross-env TARGET=green ARCH=win_x64 electron-builder -w=7z --x64 -p never",
      "pack:win:7z:x86": "cross-env TARGET=green ARCH=win_x86 electron-builder -w=7z --ia32 -p never",
      "pack:win:7z:arm64": "cross-env TARGET=green ARCH=win_arm64 electron-builder -w=7z --arm64 -p never",
      "pack:linux": "node build-config/pack.js && npm run pack:linux:deb && npm run pack:linux:appImage && npm run pack:linux:rpm && npm run pack:linux:pacman",
      "pack:linux:appImage": "cross-env ARCH=x64 electron-builder -l=AppImage -p never",
      "pack:linux:deb": "npm run pack:linux:deb:x64 && npm run pack:linux:deb:arm64 && npm run pack:linux:deb:armv7l",
      "pack:linux:deb:x64": "cross-env ARCH=x64 electron-builder -l=deb --x64 -p never",
      "pack:linux:deb:arm64": "cross-env ARCH=arm64 electron-builder -l=deb --arm64 -p never",
      "pack:linux:deb:armv7l": "cross-env ARCH=armv7l electron-builder -l=deb --armv7l -p never",
      "pack:linux:rpm": "cross-env ARCH=x64 electron-builder -l=rpm --x64 -p never",
      "pack:linux:pacman": "cross-env ARCH=x64 electron-builder -l=pacman --x64 -p never",
      "pack:mac": "node build-config/pack.js && npm run pack:mac:dmg && npm run pack:mac:dmg:arm64",
      "pack:mac:dmg": "cross-env electron-builder -m=dmg -p never",
      "pack:mac:dmg:arm64": "cross-env electron-builder -m=dmg --arm64 -p never",
      "pack:dir": "node build-config/pack.js && electron-builder --dir",
      "publish": "node publish",
      "publish:win:setup:x64:always": "cross-env TARGET=Setup ARCH=x64 electron-builder -w=nsis --x64 -p always",
      "publish:win:setup:x64": "cross-env TARGET=Setup ARCH=x64 electron-builder -w=nsis --x64 -p always",
      "publish:win:setup:x86": "cross-env TARGET=Setup ARCH=x86 electron-builder -w=nsis --ia32 -p onTagOrDraft",
      "publish:win:setup:arm64": "cross-env TARGET=Setup ARCH=arm64 electron-builder -w=nsis --arm64 -p onTagOrDraft",
      "publish:win:setup:x86_64": "cross-env TARGET=Setup ARCH=x86_64 electron-builder -w=nsis --x64 --ia32 -p onTagOrDraft",
      "publish:win:portable": "npm run publish:win:portable:x86_64 && npm run publish:win:portable:x64 && npm run publish:win:portable:x86",
      "publish:win:portable:x86_64": "cross-env TARGET=portable ARCH=x86_64 electron-builder -w=portable --x64 --ia32 -p onTagOrDraft",
      "publish:win:portable:x64": "cross-env TARGET=portable ARCH=x64 electron-builder -w=portable --x64 -p onTagOrDraft",
      "publish:win:portable:x86": "cross-env TARGET=portable ARCH=x86 electron-builder -w=portable --ia32 -p onTagOrDraft",
      "publish:win:7z:x64": "cross-env TARGET=green ARCH=win_x64 electron-builder -w=7z --x64 -p onTagOrDraft",
      "publish:win:7z:x86": "cross-env TARGET=green ARCH=win_x86 electron-builder -w=7z --ia32 -p onTagOrDraft",
      "publish:win:7z:arm64": "cross-env TARGET=green ARCH=win_arm64 electron-builder -w=7z --arm64 -p onTagOrDraft",
      "publish:mac:dmg:always": "electron-builder -m=dmg -p always",
      "publish:mac:dmg": "electron-builder -m=dmg -p onTagOrDraft",
      "publish:mac:dmg:arm64": "electron-builder -m=dmg --arm64 -p onTagOrDraft",
      "publish:linux:deb:x64:always": "cross-env ARCH=x64 electron-builder -l=deb --x64 -p always",
      "publish:linux:deb:x64": "cross-env ARCH=x64 electron-builder -l=deb --x64 -p onTagOrDraft",
      "publish:linux:deb:arm64": "cross-env ARCH=arm64 electron-builder -l=deb --arm64 -p onTagOrDraft",
      "publish:linux:deb:armv7l": "cross-env ARCH=armv7l electron-builder -l=deb --armv7l -p onTagOrDraft",
      "publish:linux:appImage": "cross-env ARCH=x64 electron-builder -l=AppImage -p onTagOrDraft",
      "publish:linux:rpm": "cross-env ARCH=x64 electron-builder -l=rpm --x64 -p onTagOrDraft",
      "publish:linux:pacman": "cross-env ARCH=x64 electron-builder -l=pacman --x64 -p onTagOrDraft",
      "dev": "cross-env NODE_OPTIONS=--max-http-header-size=200000 node build-config/runner-dev.js",
      "clean:electron": "rimraf dist",
      "clean": "rimraf dist && rimraf build",
      "build:theme": "node src/common/theme/createThemes.js",
      "build:src": "node build-config/pack.js",
      "build:main": "cross-env NODE_ENV=production webpack --config build-config/main/ --progress",
      "build:renderer": "cross-env NODE_ENV=production webpack --config build-config/renderer/ --progress",
      "build:renderer-lyric": "cross-env NODE_ENV=production webpack --config build-config/renderer-lyric/ --progress",
      "build:renderer-scripts": "cross-env NODE_ENV=production webpack --config build-config/renderer-scripts/ --progress",
      "build": "npm run clean:electron && npm run build:main && npm run build:renderer && npm run build:renderer-lyric && npm run build:renderer-scripts",
      "lint": "eslint --ext .ts,.js,.vue -f node_modules/eslint-formatter-friendly src",
      "lint:fix": "eslint --ext .ts,.js,.vue -f node_modules/eslint-formatter-friendly --fix src",
      "postinstall": "electron-builder install-app-deps",
      "dp": "cross-env ELECTRON_GET_USE_PROXY=true GLOBAL_AGENT_HTTPS_PROXY= npm run pack",
      "up": "cross-env ELECTRON_GET_USE_PROXY=true GLOBAL_AGENT_HTTPS_PROXY= npm i"
    "browserslist": [
      "Electron 22.3.0"
    "engines": {
      "node": ">= 16",
      "npm": ">=8.5.2"
    "build": {
      "appId": "",
      "beforePack": "./build-config/build-before-pack.js",
      "afterPack": "./build-config/build-after-pack.js",
      "protocols": {
        "name": "lx-music-protocol",
        "schemes": [
      "directories": {
        "buildResources": "./resources",
        "output": "./build"
      "files": [
      "asar": {
        "smartUnpack": false
      "extraResources": [
      "win": {
        "icon": "./resources/icons/icon.ico",
        "legalTrademarks": "lyswhut",
        "artifactName": "${productName} v${version} ${env.ARCH} ${env.TARGET}.${ext}"
      "mac": {
        "icon": "./resources/icons/icon.icns",
        "category": ""
      "linux": {
        "maintainer": "lyswhut <>",
        "artifactName": "${productName} v${version} ${env.ARCH}.${ext}",
        "icon": "./resources/icons",
        "category": "Utility;AudioVideo;Audio;Player;Music;",
        "desktop": {
          "Name": "LX Music",
          "Name[zh_CN]": "LX Music",
          "Name[zh_TW]": "LX Music",
          "Encoding": "UTF-8",
          "MimeType": "x-scheme-handler/lxmusic",
          "StartupNotify": "false"
      "nsis": {
        "oneClick": false,
        "language": "2052",
        "allowToChangeInstallationDirectory": true,
        "differentialPackage": true,
        "license": "./licenses/license.rtf",
        "shortcutName": "LX Music"
      "dmg": {
        "window": {
          "width": 600,
          "height": 400
        "contents": [
            "x": 106,
            "y": 252,
            "name": "LX Music"
            "x": 490,
            "y": 252,
            "type": "link",
            "path": "/Applications"
        "title": "洛雪音乐助手 v${version}"
      "appImage": {
        "license": "./licenses/license_zh.txt",
        "category": "Utility;AudioVideo;Audio;Player;Music;"
      "publish": [
          "provider": "github",
          "owner": "lyswhut",
          "repo": "lx-music-desktop"
      "electronDist": "/usr/lib/electron",
      "electronVersion": "22.3.3"
    "macLanguagesInfoPlistStrings": {
      "en": {
        "CFBundleDisplayName": "LX Music",
        "CFBundleName": "LX Music"
      "zh_CN": {
        "CFBundleDisplayName": "LX Music",
        "CFBundleName": "LX Music"
      "zh_TW": {
        "CFBundleDisplayName": "LX Music",
        "CFBundleName": "LX Music"
    "repository": {
      "type": "git",
      "url": "git+"
    "keywords": [
    "author": {
      "name": "lyswhut",
      "email": ""
    "license": "Apache-2.0",
    "bugs": {
      "url": ""
    "homepage": "",
    "devDependencies": {
      "@babel/core": "^7.21.5",
      "@babel/eslint-parser": "^7.21.3",
      "@babel/plugin-proposal-class-properties": "^7.18.6",
      "@babel/plugin-syntax-dynamic-import": "^7.8.3",
      "@babel/plugin-transform-modules-umd": "^7.18.6",
      "@babel/plugin-transform-runtime": "^7.21.4",
      "@babel/preset-env": "^7.21.5",
      "@babel/preset-typescript": "^7.21.5",
      "@types/better-sqlite3": "^7.6.4",
      "@types/needle": "^3.2.0",
      "@types/tunnel": "^0.0.3",
      "@typescript-eslint/eslint-plugin": "^5.59.1",
      "@typescript-eslint/parser": "^5.59.1",
      "@volar/vue-language-plugin-pug": "^1.6.1",
      "babel-loader": "^9.1.2",
      "browserslist": "^4.21.5",
      "chalk": "^4.1.2",
      "changelog-parser": "^3.0.1",
      "copy-webpack-plugin": "^11.0.0",
      "core-js": "^3.30.1",
      "cross-env": "^7.0.3",
      "css-loader": "^6.7.3",
      "css-minimizer-webpack-plugin": "^5.0.0",
      "del": "^6.1.1",
      "electron": "22.3.3",
      "electron-builder": "^24.3.0",
      "electron-debug": "^3.2.0",
      "electron-devtools-installer": "^3.2.0",
      "electron-to-chromium": "^1.4.377",
      "electron-updater": "^6.1.0",
      "eslint": "^8.39.0",
      "eslint-config-standard": "^17.0.0",
      "eslint-config-standard-with-typescript": "^34.0.1",
      "eslint-formatter-friendly": "github:lyswhut/eslint-friendly-formatter#2170d1320e2fad13615a9dcf229669f0bb473a53",
      "eslint-plugin-html": "^7.1.0",
      "eslint-plugin-import": "^2.27.5",
      "eslint-plugin-n": "^15.7.0",
      "eslint-plugin-promise": "^6.1.1",
      "eslint-plugin-vue": "^9.11.0",
      "eslint-webpack-plugin": "^4.0.1",
      "html-webpack-plugin": "^5.5.1",
      "less": "^4.1.3",
      "less-loader": "^11.1.0",
      "mini-css-extract-plugin": "^2.7.5",
      "node-loader": "^2.0.0",
      "postcss": "^8.4.23",
      "postcss-loader": "^7.3.0",
      "postcss-pxtorem": "^6.0.0",
      "pug": "^3.0.2",
      "pug-plain-loader": "^1.1.0",
      "rimraf": "^5.0.0",
      "spinnies": "github:lyswhut/spinnies#233305c58694aa3b053e3ab9af9049993f918b9d",
      "svg-sprite-loader": "^6.0.11",
      "svg-transform-loader": "^2.0.13",
      "svgo-loader": "^4.0.0",
      "terser": "^5.17.1",
      "terser-webpack-plugin": "^5.3.7",
      "ts-loader": "^9.4.2",
      "typescript": "^5.0.4",
      "vue-eslint-parser": "^9.1.1",
      "vue-loader": "^17.1.0",
      "vue-template-compiler": "^2.7.14",
      "webpack": "^5.81.0",
      "webpack-cli": "^5.0.2",
      "webpack-dev-server": "^4.13.3",
      "webpack-hot-middleware": "github:lyswhut/webpack-hot-middleware#329c4375134b89d39da23a56a94db651247c74a1",
      "webpack-merge": "^5.8.0"
    "dependencies": {
      "@simonwep/pickr": "^1.8.2",
      "better-sqlite3": "^8.3.0",
      "bufferutil": "^4.0.7",
      "comlink": "~4.3.1",
      "crypto-js": "^4.1.1",
      "electron-log": "^4.4.8",
      "electron-store": "^8.1.0",
      "font-list": "^1.4.5",
      "iconv-lite": "^0.6.3",
      "image-size": "^1.0.2",
      "jschardet": "^3.0.0",
      "long": "^5.2.3",
      "music-metadata": "^8.1.4",
      "needle": "github:lyswhut/needle#93299ac841b7e9a9f82ca7279b88aaaeda404060",
      "node-id3": "^0.2.6",
      "sortablejs": "^1.15.0",
      "tunnel": "^0.0.6",
      "utf-8-validate": "^6.0.3",
      "vue": "^3.2.47",
      "vue-router": "^4.1.6",
      "ws": "^8.13.0"
    "overrides": {
      "got": "^11",
      "json5": "latest",
      "minimatch": "latest",
      "svg-sprite-loader": {
        "postcss": "latest"
      "svg-baker": {
        "postcss": "latest"
      "http-cache-semantics": "latest"

yarn manifest: 
  No manifest

  No lockfile

SamLukeYes commented on 2022-04-17 03:14 (UTC)

StartupWMClass should be lx-music-desktop instead of lx-music, or its window won't match the desktop launcher on GNOME 42.

SamLukeYes commented on 2021-10-08 14:07 (UTC) (edited on 2021-10-08 16:11 (UTC) by SamLukeYes)

The desktop launcher doesn't appear.

$ gtk-launch lx-music
gtk-launch: 没有该应用程序  lx-music

UPDATE: The solution is adding Type=Application to lx-music.desktop.

sukanka commented on 2021-10-08 09:12 (UTC)

It now works, but you cannot drag the window.

lmartinez-mirror commented on 2021-08-27 16:28 (UTC)

I'm aware that it doesn't run. I'm not sure what's breaking this package. If anyone knows why, please submit patches here. Otherwise you're better off using lx-music-desktop-bin.

SamLukeYes commented on 2021-08-27 11:49 (UTC)

Also tried npm6:

npm ERR! cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
npm ERR! 
npm ERR! 
npm ERR! Invalid: lock file's electron@13.1.8 does not satisfy electron@13.2.2

SamLukeYes commented on 2021-08-27 10:31 (UTC) (edited on 2021-08-27 12:30 (UTC) by SamLukeYes)

1.12.1 doesn't build.

npm ERR! code 1
npm ERR! path /var/tmp/pamac-build-yes/lx-music/src/lx-music-desktop-1.12.1/node_modules/electron
npm ERR! command failed
npm ERR! command sh -c node install.js
npm ERR! RequestError: read ECONNRESET
npm ERR!     at ClientRequest.<anonymous> (/var/tmp/pamac-build-yes/lx-music/src/lx-music-desktop-1.12.1/node_modules/got/source/request-as-event-emitter.js:178:14)
npm ERR!     at Object.onceWrapper (node:events:514:26)
npm ERR!     at ClientRequest.emit (node:events:406:35)
npm ERR!     at ClientRequest.origin.emit (/var/tmp/pamac-build-yes/lx-music/src/lx-music-desktop-1.12.1/node_modules/@szmarczak/http-timer/source/index.js:37:11)
npm ERR!     at TLSSocket.socketErrorListener (node:_http_client:447:9)
npm ERR!     at TLSSocket.emit (node:events:394:28)
npm ERR!     at emitErrorNT (node:internal/streams/destroy:157:8)
npm ERR!     at emitErrorCloseNT (node:internal/streams/destroy:122:3)
npm ERR!     at processTicksAndRejections (node:internal/process/task_queues:83:21)

UPDATE: My bad. The error above was a network issue. I finally managed to build the package and install it, but the desktop launcher doesn't appear in GNOME. When I run lx-music in terminal, a transparent window appears and it freezes. The error message in terminal doesn't seem to be related, since lx-music-desktop-bin also has the error but can launch successfully.

lmartinez-mirror commented on 2021-07-26 05:58 (UTC)

Pushed the update, but could not test. I need someone to confirm that this package runs.