deezer-linux/CONTRIBUTING.md

3.5 KiB

Contributing to Deezer Linux

Thank you for considering contributing to the unofficial Deezer Linux port! This document provides guidelines for contributing to the project.

Code of Conduct

By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.

How to Contribute

Reporting Bugs

  • Before creating an issue, please check if it hasn't been reported already
  • Use the issue template if available
  • Include detailed steps to reproduce the bug
  • Specify your system information (OS, architecture, package type)

Suggesting Enhancements

  • Use clear and descriptive titles
  • Provide a step-by-step description of the suggested enhancement
  • Explain why this enhancement would be useful

Pull Requests

  1. Fork the repository
  2. Create a new branch (git checkout -b feature/your-feature)
  3. Make your changes
  4. Build one or more packages
  5. Commit your changes (git commit -m 'feat: Add some feature')
  6. Push to the branch (git push origin feature/your-feature)
  7. Open a Pull Request
  8. Provide information about the changes made and the packages built and manually tested

Build Requirements

Ensure you have all required dependencies:

  • Node.js (20 recommended)
  • npm
  • 7z
  • make
  • wget

Development Setup

make install_deps

Patching

Creating a Patch

To create a patch, clone the repository and run:

make patch-new

Edit the files you want to change in the app directory.

[!TIP] You do not need to generate a patch file to test your changes. Open the app folder after running make patch-new and make your changes. Then run make build_{target}_{arch} to try your changes.

When you are done, commit your changes, and then generate the patch:

make patch-gen

The patch will be saved in the patches directory. Make sure to rename the patch file to something meaningful and follow the naming convention. Add the patch to the echoed list in the Makefile.

[!TIP] If possible, you may want to add a switch to allow the users to use the feature you added or not. Do not forget to mention it.

You can now try your patch by building and executing the package:

make build_{target}_{arch}

Applying a Patch

To manually apply a patch, run:

apply -p1 -dapp < patches/{name}.patch

[!NOTE] Deezer does not provide all the information needed to implement some features.

Deezer provides:

  • Player state (playing, paused)
  • Track metadata (title, artist, album, cover URL, duration, and more)
  • Shuffle and repeat state

Deezer does not provide:

  • Track position

Updating

Updating the Source Executable

This section is automated via GitHub Actions, but can be done manually.

  1. Update the source executable URL:
curl -Ls -o /dev/null -w %{url_effective} https://www.deezer.com/desktop/download\?platform\=win32\&architecture\=x86
  1. Update the source executable SHA256:
curl -Ls https://www.deezer.com/desktop/download\?platform\=win32\&architecture\=x86 | sha256sum

Updating the Electron Version

This section is not automated via GitHub Actions.

To get the Electron version used, run:

strings ./source/Deezer.exe | grep '^Chrome/[0-9.]* Electron/[0-9.]*'

Remember that this is an unofficial port. Any contribution must:

  • Respect Deezer's intellectual property
  • Not modify core Deezer functionality
  • Follow software distribution best practices

Questions?

Open an issue for any questions not covered by this guide.

Thank you for contributing!