REPOSITORY ARCHIVED
Yandex has released a native Linux version
This repository used complex Windows executable repacking, which is no longer necessary.A new project is being developed to distribute and repackage the official Linux version for Arch Linux, RPM-based distributions, and other package formats.
👀 Stay tuned for updates and the new repository link.
Native YandexMusic client for Linux. Built using repacking of Windows client (Electron app).
You can obtain the latest version of package from AUR using one of the AUR Helpers. Then install it with yandex-music as package name.
For this example I will use yay
yay -S yandex-musicDownload prebuilt binary package from Releases section.
Then you can install it with the following command
pacman -U yandex-music-<version>-any.pkg.tar.zstDownload key and add repository to mirror list
curl -fsSL https://apt.cucumber-space.online/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/cucumber-space.key.gpg
echo 'deb [signed-by=/etc/apt/keyrings/cucumber-space.key.gpg] https://apt.cucumber-space.online ./' | sudo tee /etc/apt/sources.list.d/cucumber-space.list > /dev/null
sudo apt updateThen you can install app with
sudo apt install yandex-musicDownload prebuilt binary package from Releases section.
Then you can install it with the following command
dpkg -i yandex-music_<version>_<arch>.debPackage is currently unavailable at DNF. If you'd like to help us with publishing, feel free to open new issue.
Download prebuilt binary package from Releases section. Unfortunatelly, we only provide packages for x64 architecture. If you need package for different architecture, you can build it manually.
Then you can install it with the following command
rpm -i yandex-music-<version>-1.x86_64.rpmYou can find configuration file at HOME/.config/yandex-music.conf. It's a simple key=value file that's sourced before launching the app. This means you can set environment variables and other options there.
You can set path to custom Electron binary with ELECTRON_CUSTOM_BIN option. For example:
ELECTRON_CUSTOM_BIN=/usr/bin/electronYou can set custom Electron flags with ELECTRON_ARGS option. By default it's set to --no-sandbox. For example:
ELECTRON_ARGS="--no-sandbox --trace-warnings"Tray mode is disabled by default. It allows program to be minimized to tray instead of closing. To enable it set TRAY_ENABLED option to 1, 2 - mono black icon, 3 - mono white.
By default, if the TRAY_ENABLED option is enabled, then if the player is paused, the application will close instead of minimizing to the system tray. The ALWAYS_LEAVE_TO_TRAY=1 option changes this behavior.
Chromium developer/debug tools can be enabled by setting DEV_TOOLS option to 1.
Yandex Music's custom Windows-styled titlebar can be enabled by setting CUSTOM_TITLE_BAR option to 1. Also makes the window frameless.
Vibe animation FPS can be control by setting VIBE_ANIMATION_MAX_FPS option from 0 (black screen) to any reasonable number. Recommended 25 - 144. Default 25.
That's the list of packages you might need to install to be able to manually build the app. However, you should remember that it might be different for your distro/machine.
- nodejs
- npm
- jq
- 7z (p7zip)
- unzip
- python
In addition you will need to install Asar tool with npm. I recommend install it globally with the following command
npm install -g @electron/asarLast step is to download original client .exe file. You can get it yourself or take link to the latest version from ./utility/version_info.json file.
If you only want to get extracted app project with applied patches, you can use the following command:
bash repack.sh -x [-o OUTPUT_DIR default=./app] <YM.exe>.asar is archive file that containes all electron app resources and information, but doesn't hold Electron binaries. If you have .asar file you can launch app using electron <app>.asar. You can build this archive with the following command:
bash repack.sh [-o OUTPUT_DIR default=./app] <YM.exe>You can build pacman package file manually using PKGBUILD file from the this repository. Run following commands in folder with PKGBUILD file inside to build and install the package:
makepkg -siYou can build .deb binary package using the following command:
bash build_deb.sh [-a <x64|armv7l|arm64|all> default=x64]You can build .rpm binary package using the following command:
bash build_rpm.sh [-a <x64|armv7l|arm64|all> default=x64]The yandex-music package has unlicensed license, so you need to have
allowUnfree option enabled.
The yandex-music package was
introduced to NixOS starting
from version 24.11.
nix run nixpkgs#yandex-musicAdd next to your configuration:
environment.systemPackages = with pkgs; [ yandex-music ];There is several option of package available to override:
yandex-music.override {
trayEnabled = true; # Whenether to enable tray support
electronArguments = ""; # Extra arguments to electron executable
}This repository contains its own nix-related receipts.
Execute next to build and run yandex music directly from github
nix run github:cucumber-sp/yandex-music-linuxExecute next in this repository to build yandex-music package without using flakes.
nix-build --expr '(import <nixpkgs> {}).callPackage ./nix {}'-
Add input in your flake.nix
inputs = { yandex-music.url = "github:cucumber-sp/yandex-music-linux"; };
-
Import module in your
configuration.nix:imports = [ yandex-music.nixosModules.default ];
or in
home-manager.nix:imports = [ yandex-music.homeManagerModules.default ];
-
Enable
yandex-musicprograms.yandex-music.enable = true; programs.yandex-music.tray.enable = true; # to enable tray support
This project uses NixOS Testing framework to perform generic run-tests of NixOS module and built app.
It runs automatically by github actions, but you may want to perform tests on your own PC.
The root flake exports package tests with symlinks to artefact of all tests.
So you can run them by
nix build .#testsEach test is complete qemu VM with NixOS onboard and configured yandex-music application. The test performs withing the result package building inside nix sandbox. The simple python script perform all the basic checks. The tests are differs between each other by configuration options to yandex-music module. You can see all of them here.
You can run each test separately as sub-attr of tests package, e.g:
nix build .#tests.trayMonoWhiteYou may want to see logs of each test (even failed) with nix log command, e.g:
nix log .#tests.customTitleBar


