Skip to content

Where things live ​

Woofer follows each platform's conventions. On Linux:

WhatWhereSafe to delete?
Settings~/.config/woofer/settings.jsonYes, you lose preferences
Winamp skins~/.config/woofer/skins/Yes, you add them again
Shared Web API sign-in~/.local/state/woofer/shared_web_api_token.jsonYes, you sign in again
Personal Web API sign-in~/.local/state/woofer/personal_web_api_token.jsonYes, personal acceleration is removed
Playback credential~/.local/state/woofer/credentials/Yes, you approve playback again
Last session~/.local/state/woofer/session.jsonYes
Audio cache~/.cache/woofer/audio/Always
Artwork cache~/.cache/woofer/art/Always
Lyrics cache~/.cache/woofer/lyrics/Always
Translations cache~/.cache/woofer/translations/Always
Account-scoped playlist cache~/.cache/woofer/playlists/<account-id>/Always
Installed plugins~/.local/state/woofer/plugins/No, they are uninstalled
Last run's log~/.local/state/woofer/woofer.logAlways
Crash log~/.local/state/woofer/panic.logAlways

Clearing caches never signs you out; credentials live in state, not cache. Web API token files are written with owner-only permissions. Signing out from Settings deletes both Web API grants and the separate playback credential.

On macOS, settings, state, and the logs are in ~/Library/Application Support/me.kreatzzz.woofer and the caches in ~/Library/Caches/me.kreatzzz.woofer. On Windows, settings are in %APPDATA%\kreatzzz\woofer\config, state and the logs in %LOCALAPPDATA%\kreatzzz\woofer\data, and the caches in %LOCALAPPDATA%\kreatzzz\woofer\cache.

settings.json ​

Settings are stored in one readable JSON file and written atomically. Its main fields are:

FieldDefaultMeaning
device_nameWooferName on Spotify Connect
bitrate32096, 160, or 320 kbps
normalisationfalseVolume normalisation
autoplaytrueKeep playing similar music at the end
gaplesstrueGapless playback
audio_backendplatformpulseaudio or rodio on Linux
audio_cache_mb1024On-disk audio cache budget
themedarkdark, light, or system
accent_from_arttrueTint pages with album art
winamp_windowfalseThe window is the Winamp mini player
skinnoneA file or folder name in the skins folder; the built-in skin when absent
skin_scaleby displayScreen pixels per skin pixel, 1 to 4
winamp_on_topfalseKeep the mini player above other windows
visbarsThe mini player's visualiser: bars, scope, or off
playlist_openfalseThe playlist window is open under the mini player
playlist_height174The playlist window's height in skin pixels
eq_openfalseThe equalizer window is open under the mini player
eq_onfalseThe equalizer shapes local playback
eq_preamp_db0The preamp, in decibels, never above zero
eq_bands_dbten zerosThe bands from 60 Hz to 16 kHz, in decibels, -12 to 12
balance0Left to right, -1 to 1, for local playback
monofalsePlay both channels the same
playlist_shadedfalseThe playlist window is rolled up to its title bar
winamp_shadedfalseThe main window is rolled up to its title bar
keep_playing_in_backgroundtrueClose to tray
check_for_updatestrueAsk GitHub once a day for a newer release
web_client_idnoneOptional personal Spotify app id used alongside shared coverage
lyrics_languageenLanguage the lyrics panel translates into
lyrics_show_translationfalseEcho each lyric line in your language
lyrics_romanizefalseWrite lyric lines in Latin letters

Command line ​

woofer [OPTIONS]

  --device-name <NAME>  Spotify Connect name for this session
  -v, --verbose         More logs from librespot and the API client

woofer.log in the state directory is what to attach to a bug report: it contains the last run's output, including the additional lines printed by woofer -v. If the app crashed, attach panic.log from the same directory as well.

Demo mode ​

Builds made with cargo build --features demo accept --demo, which fills the interface with sample data, useful for screenshots, theming, and interface work. Demo mode never writes settings.

--demo-page opens a page, such as home, playlist:pl1, or artist:art0, and --demo-show adds surfaces on top of it: a comma separated list of queue, devices, lyrics, shortcuts, premium, create, light, focus, winamp, playlist, eq, and eq-shade.

--demo-shot <PATH> writes the window to a PNG and exits, which is how the screenshots in these pages are made:

cargo run --release --features demo -- \
  --demo-shot docs/screenshot.png --demo-page playlist:pl1 --demo-show queue

The shot is the window's own frame buffer, so it comes out at whatever size the window is. --demo-shot-delay <MS> sets how long cover art has to arrive before the frame is taken.

Woofer is independent software, not affiliated with or endorsed by Spotify AB.