Nicotine+

Nicotine+ is a graphical client for the Soulseek peer-to-peer file sharing network.

Nicotine+ aims to be a pleasant, Free and Open Source (FOSS) alternative to the official Soulseek client, providing additional functionality while keeping current with the Soulseek protocol.

Check out the screenshots and source code.

Download Nicotine+

The current stable version of Nicotine+ is 2.1.2, released on 12 October 2020. See the release notes.

GNU/Linux

If you have no need to modify the Nicotine+ source, you are strongly recommended to use precompiled packages for your distribution. This will save you time.

Ubuntu PPA/Debian (Stable)

To use stable packages on Ubuntu and Debian, run the following:

sudo apt install software-properties-common
sudo add-apt-repository ppa:nicotine-team/stable
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6CEB6050A30E5769
sudo apt update
sudo apt install nicotine

Ubuntu PPA/Debian (Unstable)

The project builds daily unstable snapshots in a separate unstable PPA. To use it, run the following:

sudo apt install software-properties-common
sudo add-apt-repository ppa:nicotine-team/unstable
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6CEB6050A30E5769
sudo apt update
sudo apt install nicotine

Arch Linux/Manjaro/Parabola (Stable)

Nicotine+ is available in the community repository of Arch Linux, Manjaro and Parabola. To install, run the following:

sudo pacman -S nicotine+

Void Linux (Stable)

To install Nicotine+ on Void Linux, run the following:

sudo xbps-install -S nicotine+

Fedora (Stable)

To install Nicotine+ on Fedora, run the following:

sudo dnf install nicotine+

Guix (Stable)

To install Nicotine+ on Guix, run the following:

guix install nicotine+

Flathub (Stable)

Download Nicotine+ on Flathub

Other Distributions

Package maintainers, please insert instructions for users to install pre-compiled packages from your respective repositories here.

Windows

Stable

Stable Windows installers for Nicotine+ are available to download. Installing Nicotine+ requires administrator privileges.

If you don’t want to, or you aren’t able to install Nicotine+ on your system, portable packages are also available. These can be run from your home directory.

Unstable

Unstable Windows packages are generated after every commit to the master branch, and should only be used for testing. You need to be signed into a GitHub account to download the packages.

macOS

Stable (Catalina/10.15 and newer)

A stable macOS installer for Nicotine+ is available on macOS version 10.15 (Catalina) and newer.

Stable (High Sierra/10.13 and Mojave/10.14)

On macOS version 10.13 (High Sierra) and 10.14 (Mojave), the recommended approach is to install Nicotine+ using Homebrew.

Once Homebrew is set up, run the following:

brew install nicotine-plus

Unstable (Catalina/10.15 or newer)

Unstable macOS installers are generated after every commit to the master branch, and should only be used for testing. You need to be signed into a GitHub account to download the installers.

Building from git (Unstable)

For more experienced users and developers who want to test the latest and greatest changes in Nicotine+, building from git is described in RUNFROMGIT.md. Also read the next section about getting involved.

Getting Involved

Please come and join us in the #nicotine+ channel on Freenode!

If you’d like to contribute, you have a couple of options to get started:

Continuous Integration Testing

It is important that all patches pass unit testing. Unfortunately developers make all kinds of changes to their local development environment that can have unintended consequences. This means sometimes tests on the developer’s computer pass when they should not, and other times failing when they should not have.

To properly validate that things are working, continuous integration (CI) is required. This means compiling, performing local in-tree unit tests, installing through the system package manager, and finally testing the actually installed build artifacts to ensure they do what the user expects them to do.

The key thing to remember is that in order to do this properly, this all needs to be done within a realistic end user system that hasn’t been unintentionally modified by a developer. This might mean a chroot container with the help of QEMU and KVM to verify that everything is working as expected. The hermetically sealed test environment validates that the developer’s expected steps for, as an example in the case of a library, compilation, linking, unit testing, and post installation testing are actually replicable.

There are different ways of performing CI on different distros. The most common one is via the international DEP-8 standard as used by hundreds of different operating systems.

Autopkgtest

On Debian based distributions, autopkgtest implements the DEP-8 standard. To create and use a build image environment for Ubuntu, follow these steps. First install the autopkgtest(1) tools:

sudo apt install autopkgtest

Next create the test image, substituting groovy or amd64 for other releases or architectures:

autopkgtest-buildvm-ubuntu-cloud -r groovy -a amd64

Generate a Nicotine+ source package in the parent directory of nicotine_source:

cd nicotine_source
sudo apt build-dep nicotine
./debian/rules get-orig-source
debuild -S -sa

Test the source package on the host architecture in QEMU with KVM support and 8GB of RAM and four CPUs:

autopkgtest --shell-fail --apt-upgrade ../nicotine_(...).dsc -- \
      qemu --ram-size=8192 --cpus=4 --show-boot path_to_build_image.img \
      --qemu-options='-enable-kvm'

Where did the name Nicotine come from?

I was in a geeky mood and was browsing http://www.bash.org’s QDB.
I stumbled across this quote:

<etc> so tempting to release a product called ‘nicotine’ and wait for the patches.
<etc> then i would have a reason to only apply one patch a day. otherwise, i’m going against medical advise.

So I thought what the hell and bluntly stole etc’s idea.

Hyriand, founder of the Nicotine project

Legal and Privacy

License

Nicotine+ is released under the terms of the GNU Public License v3 or later.