Go to file
abba23 ff45bbc3d0 Remove mentions of the Debian package from instructions
The build and installation instructions are not specific to the Debian package and should also work for other distributions.
2021-05-04 19:08:27 +02:00
.github/workflows Initial commit 2021-04-29 20:05:41 +02:00
src Reduce size of CEF bindings 2021-05-01 17:47:39 +02:00
.gitignore Initial commit 2021-04-29 20:05:41 +02:00
Cargo.toml Remove home dependency 2021-04-30 14:25:09 +02:00
LICENSE Initial commit 2021-04-29 20:05:41 +02:00
Makefile Initial commit 2021-04-29 20:05:41 +02:00
README.md Remove mentions of the Debian package from instructions 2021-05-04 19:08:27 +02:00
config.toml Update allowlist 2021-05-04 17:52:10 +02:00
rustfmt.toml Initial commit 2021-04-29 20:05:41 +02:00

README.md

spotify-adblock

Spotify adblocker for Linux (macOS untested) that works by wrapping getaddrinfo and cef_urlrequest_create. It blocks requests to domains that are not on the allowlist, as well as URLs that are on the denylist.

Notes

  • This does not work with the snap Spotify package.
  • This might not work with the Flatpak Spotify package, depending on your system's shared libraries' versions.
  • On Debian-based distributions (e.g. Ubuntu), the Debian Spotify package can be installed by following the instructions at the bottom of this page. (recommended)

Build

Prerequisites:

  • Git
  • Make
  • Rust
$ git clone https://github.com/abba23/spotify-adblock.git
$ cd spotify-adblock
$ make

Install

$ sudo make install

Flatpak

$ mkdir -p ~/.spotify-adblock && cp target/release/libspotifyadblock.so ~/.spotify-adblock/spotify-adblock.so
$ mkdir -p ~/.config/spotify-adblock && cp config.toml ~/.config/spotify-adblock
$ flatpak override --user --filesystem="~/.spotify-adblock/spotify-adblock.so" --filesystem="~/.config/spotify-adblock/config.toml" com.spotify.Client

Usage

Command-line

$ LD_PRELOAD=/usr/local/lib/spotify-adblock.so spotify

Flatpak

$ flatpak run --command=sh com.spotify.Client -c 'eval "$(sed s#LD_PRELOAD=#LD_PRELOAD=$HOME/.spotify-adblock/spotify-adblock.so:#g /app/bin/spotify)"'

Desktop file

You can integrate it with your desktop environment by creating a .desktop file (e.g. spotify-adblock.desktop) in ~/.local/share/applications. This lets you easily run it from an application launcher without opening a terminal.

Examples:

Debian Package

[Desktop Entry]
Type=Application
Name=Spotify (adblock)
GenericName=Music Player
Icon=spotify-client
TryExec=spotify
Exec=env LD_PRELOAD=/usr/local/lib/spotify-adblock.so spotify %U
Terminal=false
MimeType=x-scheme-handler/spotify;
Categories=Audio;Music;Player;AudioVideo;
StartupWMClass=spotify

Flatpak

[Desktop Entry]
Type=Application
Name=Spotify (adblock)
GenericName=Music Player
Icon=com.spotify.Client
Exec=flatpak run --file-forwarding --command=sh com.spotify.Client -c 'eval "$(sed s#LD_PRELOAD=#LD_PRELOAD=$HOME/.spotify-adblock/spotify-adblock.so:#g /app/bin/spotify)"' @@u %U @@
Terminal=false
MimeType=x-scheme-handler/spotify;
Categories=Audio;Music;Player;AudioVideo;
StartupWMClass=spotify

Uninstall

$ sudo make uninstall

Flatpak

$ rm -r ~/.spotify-adblock ~/.config/spotify-adblock
$ flatpak override --user --reset com.spotify.Client

Configuration

The allowlist and denylist can be configured in a config file located at (in ascending order of precedence):

  • /etc/spotify-adblock/config.toml (default)
  • ~/.config/spotify-adblock/config.toml (default for Flatpak)
  • config.toml in the working directory