Recently I've been playing around with my new Ubuntu setup (using bspwm, seen below) and I needed to get my keyboard playback and volume controls working to use Spotify efficiently. While this topic has been covered extensively on the web, the knowledge is currently spread among multiple websites and this is my attempt to gather some parts of it in one place so it'll be easier for you to start off. Obviously the exact setups will vary greatly depending on your setup, but I have this article will be able to give you a starting point.
A quick clarification: In this article I'll be talking about designated volume control keys, such as the ones below as they appear on my K70. That said, you can potentially map volume/playback controls to any key you want, e.g.
Super + q.
Keyboard volume controls
First of all, the keys you're interested in are
To find which commands to bind them to, you must know what you use for sound control in your system. I personally use PulseAudio so in my case
pactl does the job, while you might use something like ALSA.
I also use sxhkd to handle all of the bindings, and below you can see what I had to add to my
sxhkdrc. I set the volume increment to 5% but you can change it to whatever works for you.
# Structure is: # <keyboard-key> # <command-to-bind> XF86AudioMute pactl set-sink-mute 0 toggle XF86AudioRaiseVolume pactl set-sink-volume 0 +5% XF86AudioLowerVolume pactl set-sink-volume 0 -5%;
Note that this will adjust volume for the whole system, not just Spotify. I looked into adjusting Spotify volume using the approach described below, and sadly it doesn't seem to be possible at the time of writing.
Keyboard Spotify controls
There are several ways to get keyboard controls to work with Spotify Linux client, I went with MPRIS2 + D-Bus combination. I'm running Ubuntu 16.10 so I had to install a couple of dependencies (
sudo apt-get install mpdris2 mpris-remote), but once this was out of the way this addition to my
sxhkdrc did the trick:
XF86AudioPlay dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause XF86AudioStop dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop XF86AudioNext dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next XF86AudioPrev dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
You can also use this little hacky command for
XF86AudioPlay to launch Spotify when you press play and Spotify is not open (just don't spam it):
XF86AudioPlay if ! dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause; then spotify; fi
As I said before, these exact steps might not work for you but I hope I've pointed in the right direction.