Skip to content

dbkosky/rofify

Repository files navigation

Rofify

Spotify Menu in Rofi

This app is intended to provide an alternative method for controlling spotify playback. It's inspired by the terminal application SpoTUI, and makes heavy use of spotipy and python-rofi-menu. The included theme is based on the the rofi themes by adi1090x.

selecting from a playlist in rofify

Before you attempt to install this, it's worth noting that, at present, you need spotify premium in order to use this. You will need create an app on the spotify devolper site (go to dashboard, then create an app).

To install the package run:

pip install rofify

Setup

You will need to add a few items to the configuration to get started. To create the a config file at .config/rofify/config you can run:

python -m rofify --create-config

In the config file you will need to set the values for username, client_id and client_secret. The client_id and client_secret can be obtained on your application page on developer.spotify.com. Redirect_uri can be left the same, unless you have changed it in the application settings on developer.spotify.com.

Next, run:

python -m rofify --create-token

This is required, as the authentication uses this token in every reuqest made. This creates a token using the path specified by 'cache_path' in the config file.

Try and see if the package is working by typing running Rofi:

rofi -modi spotify:"python -m rofify" -show spotify

Hotkeys

If you want to run rofify with hotkeys you'll need to create or modify custom key bindings in your rofi config. For example:

! Previous track
rofi.kb-custom-1:   Super+Left

! Next track
rofi.kb-custom-2:   Super+Right

! Toggle pause/play
rofi.kb-custom-3:   Super+space

! Toggle shuffle
rofi.kb-custom-4:   Super+s

! Cycle repeat state
rofi.kb-custom-5:   Super+r

These are convenient keybindings for me, but some experimentation might be needed depending on your setup. Make sure that any keybinding you use isn't already used by another default rofi keybinding or it will throw an error (you can get a full list of the config options by running rofi -dump-config).