Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Settings

This page lists every setting on the Settings page, tab by tab and section by section, in the order they appear. For each row you get what it does, its default, and its key in config.toml.

How to read this page

  • Open the Settings page from the sidebar. The tabs are General, Playback, Hotkeys, Window, Advanced and About. The search box at the top filters the rows of all tabs by name and description. Reset to default restores the settings after asking for confirmation.
  • Settings are saved in config.toml in Listen’s config folder (see Files and folders). All keys below are written as paths from the top of that file; for example settings.ai_dj.location is the key location in the table [settings.ai_dj].
  • Values written like "single" are the exact text stored in the file. Sliders are stored as plain numbers.
  • Missing keys fall back to their defaults, so a hand-edited file only needs the keys you change. Edit the file while Listen is closed, or Listen may overwrite your change.
  • Secrets (server passwords, the remote password, the MCP token, the Gemini API key) are kept in the system keyring or a restricted file, not in these keys.
  • Rows marked Linux or Windows only are hidden on the other system. Some rows only appear when another option is on, or when the connected server supports the feature.

General

Servers

Lists your music sources with the buttons Switch (shown as Browsing for the active one), Rescan (local folders), Edit, Remove and Add server. See Connecting your music. Servers are stored in the [[servers]] tables, not under settings.

RowWhat it doesDefaultKey
Password storageWhere passwords are kept: System keyring, or File only (a file only you can read). The row says which one is in use.System keyringsecret_store ("auto" or "file"; top level)

Scrobble

RowWhat it doesDefaultKey
ScrobbleReports plays to the server and, when connected, to Last.fm. Nothing is reported in private mode.Onsettings.playback.scrobble
Last.fmAPI key and shared secret of your Last.fm API account, Connect to Last.fm / Disconnect. The secret and the sign-in are kept in the keyring.not connectedsettings.integrations.lastfm.api_key, settings.integrations.lastfm.user
Scrobble to Last.fmSends plays to Last.fm while connected.Onsettings.integrations.lastfm.scrobble
Scrobble minimum modeWhen a play counts: Percentage or seconds (whichever comes first), Percentage, or Seconds. Skipping ahead does not count as listening.Percentage or secondssettings.integrations.scrobble_mode ("both", "percentage", "seconds")
Minimum scrobble percentageThe share of the song that has to be played, 25 to 90 %. Hidden in Seconds mode.75settings.playback.scrobble_at_percent
Minimum scrobble secondsThe time that has to be played, 0 to 1200 s in steps of 5. Hidden in Percentage mode.240settings.playback.scrobble_at_secs
Song change notificationsShows a desktop notification with the song, artists, album and cover when the song changes.Offsettings.integrations.notify_song_change

Appearance

See Themes and colours for details.

RowWhat it doesDefaultKey
Follow desktop themeLinux only. Uses the KDE colour scheme and follows changes live. Takes precedence over the theme choices.On (Linux)settings.appearance.follow_desktop_theme
Follow system themeUses the dark or light theme below depending on the desktop’s setting.Onsettings.appearance.follow_system_theme
Dark themeShown when Follow system theme is on. Used when the desktop is dark.Tokyo Nightsettings.appearance.theme_dark ("tokyoNight")
Light themeShown when Follow system theme is on. Used when the desktop is light.Default Lightsettings.appearance.theme_light ("defaultLight")
ThemeShown when Follow system theme is off. The theme that is always used.Default Darksettings.appearance.theme ("defaultDark")
Use the theme’s accent colourOn: the theme keeps its own accent. Off: your accent colour replaces it.Offsettings.appearance.use_theme_accent
Accent colourFive swatches and a field for a CSS colour such as rgb(53, 116, 252) or #3574fc. Disabled while the previous row is on.rgb(53, 116, 252)settings.appearance.accent
Use the theme’s primary shadeOn: buttons and links use the theme’s shade.Onsettings.appearance.use_theme_primary_shade
Primary shade0 (lightest) to 9 (darkest) shade of the accent for buttons and links. Used when the previous row is off.6settings.appearance.primary_shade
Custom themes folderShows how many custom themes were found and any problems; Open folder opens the folder. See Custom themes.
Touchpad scroll speed25 to 200 % in steps of 5. At 100 %, a swipe scrolls as far as in Chromium-based browsers.100 %settings.appearance.scroll_speed (1.0 = 100 %)

Application

RowWhat it doesDefaultKey
Font typeBuilt-in, System or Custom.Built-insettings.appearance.font_kind ("builtin", "system", "custom")
FontBuilt-in: Inter or Poppins. System: any installed font. Used for all text.Intersettings.appearance.font
Font fileCustom only. Path to a .ttf, .otf or .ttc file; press Use to apply.emptysettings.appearance.font_path
LanguageThe interface language. Applies after a restart. See Languages.System defaultsettings.appearance.language ("" or a code such as "de")
ZoomScales the interface, 50 to 300 % in steps of 5, with -, + and Reset. Applies when you let go of the slider.100 %settings.appearance.zoom
Album background imageBlurred cover behind album page headers; the slider sets the blur (0 to 6).On, 3.0settings.appearance.album_background, settings.appearance.album_background_blur
Artist background imageThe same for artist pages.On, 3.0settings.appearance.artist_background, settings.appearance.artist_background_blur
Blur explicit imagesBlurs the covers of songs tagged explicit.Offsettings.appearance.blur_explicit_images
Native cover aspect ratioShows covers whole instead of cropped square; wide covers make their card shorter.Offsettings.appearance.native_cover_aspect
Image placeholderWhat a cover shows while loading: ThumbHash, Colour or Off.Coloursettings.appearance.image_placeholder ("thumbHash", "dominantColor", "off")

Home

RowWhat it doesDefaultKey
Home featured carouselShows the large featured carousel at the top of the home page.Onsettings.home.feature
Home featured carousel styleSingle or Multiple featured albums.Singlesettings.home.feature_style ("single", "multiple")
Home sectionsTick the sections to show and drag them into order.Genres, Most played, Random, Recently added, Recently played, Recently released, Playlistssettings.home.sections (list of ids such as "mostPlayed")

Player bar

RowWhat it doesDefaultKey
Player bar button sizeSize of the player bar buttons, 15 to 30 px.15settings.player_bar.button_size
Show skip buttonsShows the skip-backward and skip-forward buttons.Onsettings.player_bar.skip_buttons
Skip backward durationSeconds to jump back, 0 to 120.5settings.player_bar.skip_backward_secs
Skip forward durationSeconds to jump ahead, 0 to 120.10settings.player_bar.skip_forward_secs
Volume slider widthWidth of the volume slider, 25 to 300 px.70settings.player_bar.volume_width
Volume wheel stepVolume change per mouse-wheel notch on the slider, 1 to 20.5settings.player_bar.volume_wheel_step
Player bar opens full-screen playerA click on the empty area of the player bar opens the full-screen player.Offsettings.player_bar.open_drawer
Expand album art buttonShows the expand button on the player bar’s cover. Turning it off also collapses the sidebar image.Onsettings.sidebar.show_image
Show remaining timeShows the time left instead of the duration (a click on the duration also switches).Offsettings.player_bar.show_time_remaining
Right-hand buttonsTick the buttons to show and move them with the arrows: Sleep timer, Player config, Visualizer, Lyrics, Favorite, Queue, Volume.All shown, in that ordersettings.player_bar.right_controls (list of id and visible)
Playerbar sliderSlider or Waveform as the seek bar. The waveform is not recommended on a slow or metered connection.Slidersettings.player_bar.slider_type ("slider", "waveform")
Waveform alignWaveform only. Top, Center or Bottom.Centersettings.player_bar.waveform_align
Waveform bar widthWaveform only. 1 to 10 px.2settings.player_bar.waveform_bar_width
Waveform gapWaveform only. 0 to 10 px.1settings.player_bar.waveform_gap
Waveform radiusWaveform only. Rounding of the bars, 0 to 20 px.4settings.player_bar.waveform_radius
Waveform stretchWaveform only. Stretches the waveform to fill the available space.Offsettings.player_bar.waveform_stretch
Waveform loading delayWaveform only. Seconds to wait before the waveform of a new song is computed, 0 to 10. Raise it if you notice stutters when songs change.2settings.player_bar.waveform_delay_secs

The metadata badges under the title in the full-screen player (codec, bit rate and so on) are chosen in the full-screen player’s Configure dialog and stored in settings.player_bar.info_items (default ["codec", "release_year"]).

Full-screen player

See Full-screen player and Now Playing.

RowWhat it doesDefaultKey
Full-screen auto-open timeoutOpens the full-screen player after this many minutes without input while a song plays. 0 turns it off. Range 0 to 120.0 (off)settings.fullscreen.auto_open_minutes
ConfigureOpens a dialog with the options below.

The Configure dialog:

OptionWhat it doesDefaultKey
Dynamic backgroundBackground from the cover’s average colour; off uses the theme background.Onsettings.fullscreen.dynamic_background
Use the cover as backgroundUses the blurred cover instead of a flat colour.Offsettings.fullscreen.dynamic_is_image
Image blurBlur of that image, 0 to 6 rem.6settings.fullscreen.image_blur
OpacityDarkening over the background, 0 to 100 %.25settings.fullscreen.opacity
Use the cover’s aspect ratioKeeps the cover’s shape instead of a square.Offsettings.fullscreen.use_image_aspect_ratio
Cover sizePercent of its column, 55 to 100.75settings.fullscreen.cover_size
AlignmentLeft, Center or Right.Centersettings.fullscreen.alignment
TitleScrolling (one line that scrolls) or Wrapped.Scrollingsettings.fullscreen.title_display ("scroll", "multi_line")
Title linesLines of a wrapped title, 1 to 10.1settings.fullscreen.title_lines
RowWhat it doesDefaultKey
Sidebar configurationTick the items to show and drag them into order. Items: Now playing, Search, Home, Favorites, Albums, Tracks, Album artists, Artists, Genres, Folders, Playlists, Collections, Recently played, Statistics, Mixes, Radio, Settings.All shown except Now playing, Search, Playlists and Settingssettings.sidebar.items (list of id, label, visible)
Sidebar playlist listShows the playlist list in the sidebar.Onsettings.sidebar.show_playlists
Playlist filter regexHides playlists whose name matches this regular expression (case-insensitive). An invalid expression hides nothing.emptysettings.sidebar.playlist_filter_regex
Sidebar playlist sortingLets you sort playlists by drag and drop instead of the server order.Offsettings.sidebar.playlist_sorting
Sidebar playlist modeCompact (name only) or Expanded (cover, name and song count).Expandedsettings.sidebar.playlist_mode ("compact", "expanded")
Enable foldersGroups playlists whose names contain the separator into folders.Offsettings.sidebar.playlist_folders
Folder separatorShown when folders are on. The character or text that separates folder levels./settings.sidebar.playlist_folder_separator
Folder viewShown when folders are on. Single folder, Tree view or Navigation view.Tree viewsettings.sidebar.playlist_folder_view ("single", "tree", "navigation")
Tree indentTree view only. Pixels per level, 0 to 64.16settings.sidebar.folder_tree_indent
Tree line colorTree view only. Colour of the guide lines as #rrggbb; empty uses the theme.emptysettings.sidebar.folder_tree_line_color
Sidebar (collapsed) navigationShows the navigation in the collapsed sidebar.Onsettings.sidebar.collapsed_navigation

Lists

RowWhat it doesDefaultKey
Play button behaviorWhat the Play buttons, a double-click on a song and the play hotkey do: Play now, Add to queue next, Add to queue last. Shuffle play and the DJs are not affected.Play nowsettings.lists.play_behavior ("now", "next", "last")
Grid multi-selectClicking a card’s cover selects it. Off: it opens the item.Onsettings.lists.grid_multi_select
Show favouritesShows heart buttons and favourite columns everywhere.Onsettings.lists.show_favorites
Show ratingsShows star ratings (Navidrome, OpenSubsonic) on tracks, albums and artists.Onsettings.lists.show_ratings

How each list looks (table, grid, columns) is changed in the list itself and stored under settings.lists.lists.

Artist page

RowWhat it doesDefaultKey
Artist page configurationTick the sections to show and move them with the arrows: Biography, Favorite songs, Recent releases (always shown, only its place changes), Related artists, Top songs.All on, in that ordersettings.artist.items (list of id, enabled)
Artist release type configurationTick the release types to show and order them as groups: Appears on, Album, Audio drama, Audiobook, Broadcast, Compilation, Demo, DJ-mix, EP, Field recording, Interview, Live, Mixtape / street, Other, Remix, Single, Soundtrack, Spoken word.All onsettings.artist.release_types
Artist radio countNumber of songs an artist radio queues, 1 to 100.20settings.artist.radio_count
RowWhat it doesDefaultKey
External linksShows links to other sites on artist and album pages. The rows below appear when it is on.Onsettings.artist.external_links.enabled
Last.fmLink to the artist or album on Last.fm.Onsettings.artist.external_links.last_fm
MusicBrainzLink on MusicBrainz, only where the server knows the MusicBrainz id.Onsettings.artist.external_links.music_brainz
ListenBrainzLink on ListenBrainz.Onsettings.artist.external_links.listen_brainz
QobuzSearch link on Qobuz.Onsettings.artist.external_links.qobuz
SpotifySearch link on Spotify.Onsettings.artist.external_links.spotify
Open in the Spotify appOpens the Spotify link in the desktop app instead of the web player.Offsettings.artist.external_links.native_spotify

Query builder

Shown only when the connected server supports smart playlists.

RowWhat it doesDefaultKey
Custom fieldsAdds your own fields for the smart-playlist builder. Each has a label, a type (string, number, boolean, date, playlist) and a tag.nonesettings.query_builder.tags

Sharing

RowWhat it doesDefaultKey
Use the server’s default expirationNew share links get no expiry date from Listen; the server decides.Offsettings.sharing.expiration.use_server_default
Default share expirationHow long a new share link works: a number and a unit (second, minute, hour, day, week, month, year). You can change it for each share.1 yearsettings.sharing.expiration.amount, settings.sharing.expiration.unit ("year")

Playback

Playback

RowWhat it doesDefaultKey
Audio playerOnly shown when the server offers a jukebox. mpv plays on this computer; Jukebox plays the queue through the server’s speakers while this computer only controls it.mpvsettings.playback.audio_player ("mpv", "jukebox")
Gapless playbackmpv’s gapless-audio: weak, yes or no.weaksettings.playback.gapless
Streaming qualityCaps the bit rate: Original, High (320 kbit/s), Normal (192), Low (96). Navidrome transcodes to MP3; YouTube Music picks a smaller format. Downloaded songs stay original.Originalsettings.playback.stream_quality ("original", "high", "normal", "low")
Fade songs in and outEach song fades in at its start and out at its end, 0 to 10 s in half-second steps (0 is off). The AI DJ uses the same speed for turning the music down and up (at least 1 s).1.5 ssettings.playback.track_fade_secs
Fade on pauseFades out briefly when pausing and back in when resuming.Onsettings.playback.fade_on_pause
Prefer my own servers for YouTube Music songsOnly shown with a YouTube Music account. Plays a YouTube Music song from your Navidrome, Jellyfin or local library when it has the same song. The song stays a YouTube Music song. See YouTube Music.Onsettings.playback.prefer_own_servers
Cast to DLNA devicesLooks for DLNA / UPnP speakers and TVs on the network and shows a cast button when some answer. See Casting.Onsettings.playback.dlna_enabled

The player bar’s volume (0 to 100) is saved in settings.playback.volume (default 70).

Audio output

RowWhat it doesDefaultKey
Audio deviceThe device mpv plays on, with a Refresh button.autosettings.playback.audio_device
Preserve pitchKeeps the pitch when the playback speed changes. Off: speed also changes the pitch, and the player config offers semitone steps.Onsettings.playback.preserve_pitch
Microtonal pitch controlsAdds 10 cent steps between the semitone buttons (when the pitch is not preserved).Offsettings.playback.microtonal_pitch
Sample rateOutput sample rate in Hz; below 8000 or empty means the device’s default. Press Enter to apply.0 (device default)settings.playback.sample_rate_hz
Exclusive modeTakes the sound device for Listen alone (WASAPI and some ALSA setups).Offsettings.playback.audio_exclusive
Audio formatSample format sent to the sound card: auto, s16, s32, float, u8.autosettings.playback.audio_format (empty = auto)

Volume levelling

RowWhat it doesDefaultKey
LevelPlays every song equally loud: Off, Quiet (−19 LUFS), Normal (−14 LUFS) or Loud (−11 LUFS), from the analysis, YouTube’s loudness or ReplayGain tags, with a limiter. Replaces ReplayGain while on.Normalsettings.playback.levelling ("off", "quiet", "normal", "loud")

ReplayGain

RowWhat it doesDefaultKey
ModeNormalises loudness using ReplayGain tags: No, Track or Album (only while Volume levelling is off).Nosettings.playback.replay_gain ("no", "track", "album")
PreampGain added on top of the ReplayGain value, -15 to +15 dB.0settings.playback.replay_gain_preamp_db
Prevent clippingLowers the gain so the peak never exceeds full scale.Onsettings.playback.replay_gain_clip
Fallback gainGain for songs without ReplayGain tags, -15 to +15 dB.0settings.playback.replay_gain_fallback_db

mpv

RowWhat it doesDefaultKey
Executable pathThe mpv program to run; empty uses mpv from the PATH. Needs a reload.emptysettings.playback.mpv_path
Extra parametersOne mpv option per line, for example --audio-channels=stereo. Needs a reload.nonesettings.playback.mpv_extra_args (list)
Reload mpvStops playback and starts mpv again with the path and parameters above.

Equalizer

See Sound.

RowWhat it doesDefaultKey
EqualizerTurns the 12-band equalizer on.Offsettings.playback.equalizer_enabled
PresetsBuilt-in presets (Acoustic, Bass Boost, Bass Cut, Classical, Electronic, Flat, Hip-Hop, Jazz, Loudness, Pop, Rock, Treble Boost, Treble Cut, V-Shape and more) and your own: set the bands, type a name and save. Reset sets all bands to 0.nonesettings.playback.equalizer_preset, settings.playback.custom_eq_presets
Band slidersA preamp and 12 bands, each -12 to +12 dB in half-dB steps.0settings.playback.equalizer_preamp, [[settings.playback.equalizer]] (freq, gain)

Headphone correction

See Sound.

RowWhat it doesDefaultKey
Headphone correctionApplies the AutoEq profile bound to the output that plays now.Onsettings.playback.headphone_eq
This output / Find your headphonesThe output playing now and its profile; search the built-in AutoEq index (or paste a ParametricEQ.txt) to bind one.nonesettings.playback.headphone_profiles (output → name, source, preamp, filters)
Other outputsProfiles bound to outputs that don’t play now.nonesame

Heart-rate tempo

See Heart-rate tempo.

RowWhat it doesDefaultKey
Heart-rate tempoThe DJs pick songs whose tempo fits your heart rate from a Bluetooth heart-rate sensor (needs Bluetooth). Shows the status and the target. Not kept across restarts; the heart button in the player bar switches it too.Offnone
SensorThe sensor last connected, tried first next time; Forget sensor clears it.nonesettings.playback.heart_rate_sensor (id, name)

Compressor

RowWhat it doesDefaultKey
CompressorEvens out loud and quiet parts.Offsettings.playback.compressor.enabled
PresetsBroadcast, Default, Gentle, Heavy, Light, Limiter, Loud Master, Moderate, plus your own.nonesettings.playback.compressor_preset, settings.playback.custom_compressor_presets
ThresholdLevel above which compression starts, -60 to 0 dB.-24settings.playback.compressor.params.threshold
RatioHow strongly loud parts are reduced, 1 to 20 (n:1).4settings.playback.compressor.params.ratio
AttackHow fast it reacts, 0.1 to 2000 ms.20settings.playback.compressor.params.attack
ReleaseHow fast it lets go, 1 to 9000 ms.250settings.playback.compressor.params.release
Makeup gainGain added after compressing, 0 to 30 dB.6settings.playback.compressor.params.makeup
KneeWidth of the soft knee, 1 to 8 dB.2.83settings.playback.compressor.params.knee

Transcoding

Only shown for servers that can transcode (Navidrome, Jellyfin).

RowWhat it doesDefaultKey
TranscodeAsks the server to convert songs while streaming. Takes the place of Streaming quality for those servers. Applies to songs that start from now on.Offsettings.playback.transcode.enabled
FormatShown when on. mp3, opus, flac and so on; empty is the server’s choice (Jellyfin: mp3).emptysettings.playback.transcode.format
Maximum bit rateShown when on. In kbit/s; 0 or empty lets the server pick.0settings.playback.transcode.bitrate
Maximum sample rateShown when on. In Hz, Jellyfin only; empty is no limit.0settings.playback.transcode.max_sample_rate

Queue

See Player bar and queue.

RowWhat it doesDefaultKey
Follow current songScrolls the queue to the playing song whenever the track changes.Onsettings.queue.follow_current_song
Up next queueLabels songs added with Play next and Add to queue as Up Next. They play right after the current song, ahead of the rest of the queue and the Auto-DJ songs.Onsettings.queue.up_next_queue
Confirm queue changesAsks before playing something replaces the queue, or before clearing it.Offsettings.queue.confirm_queue_changes
Save play queueKeeps the queue and your position when Listen closes and restores them at the next start.Onsettings.queue.save_play_queue
Autosave play queue to serverSaves the queue to the server (OpenSubsonic, Navidrome) as the track changes, so another app can pick it up.Offsettings.queue.autosave_server
Autosave everyNumber of track changes between two saves, 1 to 20.1settings.queue.autosave_every
Side play queue styleAttached (a side panel) or Detached (a drawer that slides in when you rest the pointer on the right edge).Attachedsettings.queue.side_style
Side queue layoutHorizontal (a column on the right) or Vertical (a panel under the page).Horizontalsettings.queue.side_layout

Player sidebar panels

RowWhat it doesDefaultKey
Queue panelShows the play queue in the right sidebar.Onsettings.sidebar.show_queue
Lyrics panelShows the lyrics of the playing song in the right sidebar.Offsettings.queue.lyrics_in_sidebar
Visualizer panelShows the spectrum in the right sidebar (captures only Listen’s own audio).Onsettings.visualizer.in_queue_panel
Combine lyrics and visualizerShows lyrics with the visualizer under them in one panel.Offsettings.queue.combined_panel
Panel orderOrder of the panels, top to bottom, set with the arrows.Queue, Lyrics, Visualizersettings.sidebar.panel_order

Player filters

RowWhat it doesDefaultKey
Player filtersAdd rule adds a rule that keeps matching songs out of the queue when you play or queue them. Each rule has an on/off switch, a field (Title, Album artist, Artist, Duration (s), Genre, Year, Release year, Note, Path, Play count, Favorite, Rating), an operator (is, is not, contains, does not contain, starts with, ends with, is greater than, is less than, matches regex) and a value. Auto-DJ and the AI DJ are not filtered.no rulessettings.queue.filters (list of field, op, value, enabled)

Visualizer

See Visualizer and Milkdrop.

RowWhat it doesDefaultKey
In the queue panelShows the spectrum under the queue. Same switch as Visualizer panel above.Onsettings.visualizer.in_queue_panel
Visualizer settingsConfigure… opens the spectrum options: mode, gradients, channel layout, frequency scale, peaks, reflex, radial and more, plus saved presets.[settings.visualizer]

Some defaults in [settings.visualizer]: mode = 10 (line graph), gradient = "prism", fft_size = 16384, smoothing = 0.6, min_freq = 20, max_freq = 22050, min_db = -85, max_db = -25.

Milkdrop

RowWhat it doesDefaultKey
Visualizer typeSpectrum or Milkdrop (Milkdrop only when projectM is available).Spectrumsettings.milkdrop.kind ("spectrum", "milkdrop")
Preset folderFolder with .milk presets, with Browse… and Rescan; empty uses the default folder in Listen’s data folder.emptysettings.milkdrop.preset_dir
PresetSearch and pick the preset on screen.nonesettings.milkdrop.current_preset
Next presetSwitches now.
Cycle presetsSwitches preset every few seconds.Onsettings.milkdrop.cycle_presets
Cycle timeSeconds a preset stays, 1 to 300.30settings.milkdrop.cycle_time
Blend timeSeconds a preset takes to blend into the next, 0 to 10.2.5settings.milkdrop.blend_time
Random next presetPicks the next preset at random; off takes the next in the list.Onsettings.milkdrop.randomize
Include all presetsCycles through every preset; off uses only the selected ones.Onsettings.milkdrop.include_all
Selected presetsPresets to cycle through when the previous row is off.nonesettings.milkdrop.selected
Ignored presetsPresets that are never picked.nonesettings.milkdrop.ignored

Frame rate and opacity are settings.milkdrop.max_fps (0 means 30) and settings.milkdrop.opacity (0 to 1, default 1).

Auto-DJ

See Play modes and Auto-DJ.

RowWhat it doesDefaultKey
EnabledKeeps the queue going with similar songs.Onsettings.auto_dj.enabled
Songs to addSongs added whenever the queue runs out, 1 to 20.5settings.auto_dj.item_count

AI DJ

See AI DJ and Creating a Gemini API key. Everything the DJ sends to Google is listed in the section’s note: song titles, artists, the DJ’s lines and your details for the DJ. Outside the EU, UK and Switzerland, Google may use free-tier requests to improve its models.

RowWhat it doesDefaultKey
EnabledPicks sets of songs that fit the mood and talks between them like a radio host. Replaces the Auto-DJ while on.Offsettings.ai_dj.enabled
Gemini API keyYour own key, saved in the system keyring. Save an empty field to remove it.nonekeyring, not in config.toml
PersonaThe host or hosts: Late-Night, Morning Show, Calm, Hamburg Duo. Preview plays a sample (needs a key).Late-Nightsettings.ai_dj.persona ("late_night", "morning", "calm", "hamburg_duo")
Voice modelFlash-Lite TTS (fast) or Flash TTS (best voice acting). Both are on Gemini’s free tier; the daily speech quota is small.Flash-Lite TTSsettings.ai_dj.tts_model
Songs per setThe DJ picks 2 up to this many songs between breaks, 2 to 8.5settings.ai_dj.set_max (and set_min, 2)
Talk afterTalk after every set, or only every 2nd to 5th set (saves speech quota).1settings.ai_dj.talk_every
Voice volumeRelative to the music, -12 to +12 dB.0settings.ai_dj.voice_gain_db
LocationWhere the show airs, for example your town; the hosts mention it now and then. Empty means no home town.emptysettings.ai_dj.location
PronunciationHow the voice should say the place name if it gets it wrong.emptysettings.ai_dj.location_pronunciation
LanguageThe language the hosts speak. Same as the app or one of the 17 languages.Same as the appsettings.ai_dj.language ("" or a code)
Details for the DJAnything the hosts should know: your name, what you like, topics to avoid. Sent to Gemini with every break.emptysettings.ai_dj.notes

settings.ai_dj.text_model (default gemini-3.5-flash-lite) names the text model and has no row on the Settings page.

DJ transitions & song analysis

See Song analysis and DJ transitions.

RowWhat it doesDefaultKey
Analyse songsMeasures tempo, beats, key, energy and sections of Navidrome songs for the DJs.Onsettings.analysis.enabled
YouTube Music songsAlso analyses YouTube Music songs: Listen fetches a temporary copy of each to measure it and keeps only the results. Needs an analysis folder first. Not shown in the demo.Offsettings.analysis.youtube_music
Whole libraryWorks through the library in the background; the queue always comes first.Onsettings.analysis.analyze_library
Also on batteryKeeps analysing when the computer is unplugged.Offsettings.analysis.on_battery
Analysis folderWhere results are kept, with Save and Choose…. A synced folder lets your other computers reuse them. Empty uses Listen’s data folder.emptysettings.analysis.shared_dir
Singing-voice detectorDownload / Remove for the optional DJustify detector (2 MB, CC BY-NC 4.0). Songs analysed without it are analysed again in the background (not YouTube Music).not downloadedfile models/djustify-svdnet.pt in the data folder
DJ transitionsMixes songs the Auto-DJ or AI DJ picked: beat-matched blends, or fades when songs do not fit.Onsettings.mixing.enabled
Order by flowPicks songs whose tempo, key and energy follow on from the current one.Onsettings.mixing.flow_select
Largest tempo changeBeyond this the songs fade instead of being beat-matched, 2 to 8 %.6settings.mixing.max_tempo_pct
Long blendsLength of a blend over instrumental intros and outros: 8 or 16 bars.16settings.mixing.long_blend_bars
Transition edgesWhether vocals at a song’s end or start may be blended over: Always, Instrumental only, or Smart (relaxed for club genres such as garage, house, techno and drum and bass).Smartsettings.mixing.transition_edges ("smart", "always", "instrumental")
Transitions may skip parts of songsWhether a transition may cut the outgoing song short (after its last sung line, at a breakdown) or skip part of the next song’s intro: Free, Short (at most 16 s of either) or Never (mix in the outro, start the next song at its first beat).Freesettings.mixing.skip_parts ("free", "short", "never")
Tempo rampsGlides the tempo between songs instead of jumping.Onsettings.mixing.tempo_ramps
Bass swapSwaps the basslines on a downbeat so only one plays at a time.Onsettings.mixing.bass_swap
Mix queued songsAlso mixes into songs added with Add to queue while a DJ is on.Onsettings.mixing.mix_manual_queue
Bridge songsPlays a short instrumental part of an analysed song between two songs that are far apart and mixes through it.Onsettings.mixing.bridges
How often to bridgeShare of far-apart pairs that get a bridge when one fits, 10 to 100 %. Pairs that cannot be beat-matched (echo-out, cut or fade otherwise) always try one.50settings.mixing.bridge_chance_pct

Other keys without a row: settings.mixing.fallback_fade_secs (plain fade length, default 4) and settings.analysis.threads (0 means automatic).

Lyrics

See Lyrics.

RowWhat it doesDefaultKey
Fetch lyricsGets lyrics from the server, YouTube Music or the providers below.Onsettings.lyrics.fetch
Prefer local lyricsUses the server’s or YouTube Music’s own lyrics before the providers’. Plain ones still give way to synchronized lyrics from a provider.Onsettings.lyrics.prefer_local
Lyric providersWhich providers are asked and in which order; the first with synchronized lyrics wins. Choices: NetEase, lrclib.net, Genius, SimpMusic.NetEase, lrclib.netsettings.lyrics.sources
Lyric offsetDefault shift of the lyrics against the music, in milliseconds (the lyrics view can change it per song).0settings.lyrics.delay_ms
AlignmentLeft, Center or Right.Centersettings.lyrics.alignment
Lyric size (synchronized)Font size of timed lyrics.24settings.lyrics.font_size
Lyric size (unsynchronized)Font size of untimed lyrics.24settings.lyrics.font_size_unsync
Lyric gap (synchronized)Space between lines.24settings.lyrics.gap
Lyric gap (unsynchronized)Space between lines of untimed lyrics.24settings.lyrics.gap_unsync
Left paddingEmpty space left of the lyrics, in percent of the width.0settings.lyrics.padding_left
Right paddingEmpty space right of the lyrics, in percent of the width.0settings.lyrics.padding_right
Follow the current lyricScrolls along with the line being sung.Onsettings.lyrics.follow
Follow positionWhere the current line sits while following: -50 near the top, 0 centred, 50 near the bottom.0settings.lyrics.follow_scroll_alignment
Line lead timeA line lights up this many milliseconds before its time.800settings.lyrics.line_lead_time_ms
Opacity of other linesHow visible the lines that are not being sung are.0.2settings.lyrics.opacity_non_active
Size of other linesSize of those lines compared to the current one.0.95settings.lyrics.scale_non_active
Show the matchShows which song the provider matched.Offsettings.lyrics.show_match
Show the providerShows where the lyrics came from.Onsettings.lyrics.show_provider
RomajiShows Japanese lyrics in Latin letters under the line. Kanji are read only in builds that include the Japanese dictionary.Offsettings.lyrics.enable_romaji
FuriganaShows the reading above kanji in Japanese lyrics. Only in builds with the dictionary.Offsettings.lyrics.enable_furigana
NetEase translationsFetches NetEase’s own translation and shows it under each line.Offsettings.lyrics.enable_netease_translation
Translation languageThe language online translation translates into.Englishsettings.lyrics.translation_target_language ("en")
Translation providerNone, Microsoft Azure or Google Cloud. Needs your own API key.Nonesettings.lyrics.translation_api_provider
Translation API keyThe key of that provider. It is stored in config.toml, so keep that file private.emptysettings.lyrics.translation_api_key
Automatic translationTranslates every song’s lyrics when they load (needs the provider and key).Offsettings.lyrics.enable_auto_translation

Hotkeys

See Hotkeys for how to record keys and what the global option does.

Application hotkeys. One row per action. Click the field, press the keys (Esc cancels, the cross clears it). A key bound twice is outlined in red. On Linux, a global checkbox next to an action registers it system-wide through the desktop’s shortcut portal; it needs a key to be set first, and only some actions allow it.

RowWhat it doesDefaultKey
Each actionBrowser back / forward, Favorite / Unfavorite / Toggle favorite of the current and previous song, Global search, Local search, List: navigate to page / play (default) / play last / play next / play now / show playing song, Navigate to home, Next / Previous track, Next / Previous album, Pause, Play, Play / pause, Rate 0 to 5 stars, Skip backward / forward, Stop, Toggle full-screen player, Toggle heart-rate tempo, Toggle queue, Toggle repeat, Toggle shuffle, Volume up / down / mute, Zoom in / out.Play / pause space; Global search mod+k; Local search mod+f; List: show playing song mod+l; List: navigate to page mod+g; List: play (default) enter; all others unboundsettings.hotkeys.<action> (for example settings.hotkeys.playPause = "space")
global (Linux)Registers the action system-wide.nonesettings.hotkeys_global (list of action ids)

System-wide (Linux only):

RowWhat it doesDefaultKey
Global media hotkeysLets Listen grab the media keys through the desktop portal. Off: only MPRIS controls Listen. On KDE, GNOME, Cinnamon and Budgie the desktop already sends the keys over MPRIS, so Listen does not bind them again.Onsettings.global_media_keys

Window

Window & integrations

RowWhat it doesDefaultKey
Private modeNothing is scrobbled, shown on Discord or saved in the history, and the window title says so. Turns off again when Listen restarts.Offnot saved
Window bar styleWindows or macOS buttons in Listen’s own bar, or Native for the desktop’s frame.Windowssettings.window.custom_title_bar and settings.window.custom_bar_style ("windows", "macos"); Native sets custom_title_bar = false
Track info in window titleShows the playing song in the window bar and title.Onsettings.window.title_bar_track_info
Tray iconShows Listen in the system tray.Onsettings.window.tray
Minimize to trayShown when the tray icon is on. Minimizing hides the window in the tray.Offsettings.window.minimize_to_tray
Close to trayShown when the tray icon is on. Closing the window keeps Listen playing in the tray.Offsettings.window.exit_to_tray
Start minimizedShown when the tray icon is on. Starts with only the tray icon.Offsettings.window.start_minimized
Prevent display sleep while playingKeeps the screen on and the system awake while music plays.Offsettings.window.prevent_display_sleep
Prevent system sleep while playingKeeps the system from suspending; the screen may still turn off. Shown as on while the previous row is on.Offsettings.window.prevent_system_sleep
Discord Rich PresenceShows what you are listening to on Discord. See Discord status.Offsettings.window.discord_rpc
Discord application IDThe Discord application used for the presence. Press Enter to apply.Listen’s own applicationsettings.window.discord_client_id
Show presence when pausedKeeps the presence while paused, with the paused icon and no timer.Onsettings.integrations.discord.show_paused
Show playing iconShows the small playing icon next to the cover while a song plays.Onsettings.integrations.discord.state_icon
Show status as listeningShows “Listening to” instead of “Playing”.Offsettings.integrations.discord.show_as_listening
Discord display typeWhat the status line shows: Listen, Song name or Artist name.Listensettings.integrations.discord.display ("feishin", "song", "artist")
Discord link typeLinks the song, artist and cover to None, Last.fm, MusicBrainz or MusicBrainz (Last.fm fallback).Nonesettings.integrations.discord.link ("none", "last_fm", "music_brainz", "music_brainz_last_fm")
Show server cover imageSends the server’s cover to Discord. Only used when the server is reachable from the internet over https; the link includes your access token, so Discord and its users can see it. YouTube Music covers are always shown; local covers are never sent.Offsettings.integrations.discord.server_image
Last.fm API keyLooks up the album cover on Last.fm when no other cover is available for Discord. Press Enter to save.emptysettings.integrations.discord.lastfm_key

Remote control

See Remote control.

RowWhat it doesDefaultKey
Enable remote control serverServes a remote control page. The description shows the address while it runs, or why it did not start.Offsettings.integrations.remote.enabled
Remote server portThe port of the server. Press Enter to apply.4333settings.integrations.remote.port
Remote server address0.0.0.0 lets other devices in your network connect; 127.0.0.1 only this computer. Press Enter to apply.0.0.0.0settings.integrations.remote.bind
Remote server usernameThe user name to sign in with. Leave both fields empty for no sign-in.emptysettings.integrations.remote.username
Remote server passwordThe password to sign in with. Press Enter to save; it is kept in the keyring.nonekeyring, not in config.toml

A warning appears when the server is on without a username and password: anyone in your network can then control Listen.

MCP server

See MCP server.

RowWhat it doesDefaultKey
Enable MCP serverLets an MCP client control Listen.Offsettings.integrations.mcp.enabled
MCP server portPress Enter to apply.4334settings.integrations.mcp.port
Allow other computersOff: only programs on this computer can connect. On: anyone in your network who has the token can.Offsettings.integrations.mcp.allow_lan
Access tokenClients send it as Authorization: Bearer <token>. Kept in the keyring. Copy token copies it, New token replaces it (old clients stop working).generatedkeyring, not in config.toml
Connect Claude CodeCopy command copies the command that adds Listen to Claude Code. Other clients take the same URL and header.

Advanced

Updates

See Updates.

RowWhat it doesDefaultKey
Check for updatesShows the current version or the result; Check now looks for a new one.
Update availableAppears when a newer version exists; View update opens it.
Check on startLooks for a new version when Listen starts. You decide whether to install it.Onsettings.advanced.update_check_on_start
Release channelStable offers full releases; Beta also offers pre-releases.Stablesettings.advanced.update_channel ("stable", "beta")
Helper programsWindows only. Show and Update manage mpv, yt-dlp and Deno, installed with winget. Update them when YouTube Music songs stop playing.
Release sourceOpen releases opens the public releases page; downloads are checked against their SHA256SUMS. No account needed.

The version you chose to skip and the “remind me later” time are stored in settings.advanced.skipped_version and settings.advanced.update_remind_after.

Listening history

See History, statistics and mixes.

RowWhat it doesDefaultKey
Record listening historySaved only on this computer (song, server, time); never uploaded or shared. Off writes nothing.Onsettings.history.enabled
Don’t record this sessionPauses recording until you close Listen.Offnot saved
Keep history for1 year, 2 years or Unlimited. Older entries are deleted automatically. Unlimited is needed for the year review.Unlimitedsettings.history.retention ("oneyear", "twoyears", "forever")
ExportWrites the history to your Downloads folder as JSON or CSV.
Delete historyDelete all (asks to confirm) removes every entry; statistics and mixes disappear too.

CD ripping

Linux only. See CD ripping.

RowWhat it doesDefaultKey
Auto-rip inserted CDsRips an audio CD as soon as it goes into the drive, also while Listen is in the tray. Always FLAC, secure rip with AccurateRip (whipper), tagged from MusicBrainz.Onsettings.ripping.auto_rip
Music folderAlbums go to Album Artist/Album/NN Title.flac here. Listen never deletes or overwrites anything in it. Save and Choose….Your system Music foldersettings.ripping.destination
Eject when doneEjects the CD after ripping.Onsettings.ripping.eject_when_done
Notification soundPlays a sound with the “Album ripped” notification.Onsettings.ripping.notify_sound
ReplayGain tagsMeasures track and album loudness while tagging.Onsettings.ripping.replay_gain
Scan Navidrome afterwardsAsks Navidrome to look for the new album (needs an admin login; otherwise its file watcher finds it within a minute or two).Onsettings.ripping.scan_navidrome
Version pickerWhen several releases match, the best match is taken after this long, 5 to 120 s.30settings.ripping.picker_timeout_secs
Drive read offsetOffset in samples; empty uses AccurateRip’s drive table. Save, or Verify offset to check it.autosettings.ripping.read_offset
Rip nowShown when a CD is ready. Rip CD rips the disc in the drive.

Import from Feishin

RowWhat it doesDefaultKey
Feishin settings filePath to a Feishin settings export (JSON); press Import. Passwords are ignored. See Importing from Feishin.not saved

Settings backup

See Backup, logs and diagnostics.

RowWhat it doesKey
Export settingsWrites all settings to a JSON file in your Downloads folder. Passwords and tokens are not included.
Import settingsReads a file made by Export settings. Every value is checked; values that do not fit are skipped and listed. Replaces your current settings.

Logging

RowWhat it doesDefaultKey
Log levelHow much listen.log records: Info or Debug. Debug helps when something does not play.Debugsettings.advanced.log_level ("info", "debug")
Export diagnosticsSaves a zip with the logs, your config and the program versions to Downloads. Passwords, cookies, tokens and URL credentials are removed first.

Cache

RowWhat it does
Clear memory cacheSoft clear: forgets covers and data held in memory; they load again as you browse. Files on disk stay.
Cover art cacheDownloaded album and artist images, with the size on disk and a Clear button.
YouTube Music audio cacheSongs kept for gapless play and replays, with size and Clear.
Waveform cacheWaveforms of the player bar slider, with size and Clear.
Clear all cachesRefresh sizes re-measures; Clear all deletes every cache above. Your library, playlists and settings are not touched.

About

The About tab has no options. It shows the version, the license (GNU Affero General Public License v3.0 or later) and a link to the source, followed by credits for the design (Feishin), music sources, online services, and the software, fonts and icons Listen uses.

Keys that have no row

A few keys are stored automatically and are not on the Settings page: settings.settings_tab (the tab you last had open), settings.onboarded (the first-start wizard was finished), settings.window.state (last window size and position), settings.sidebar.width and settings.sidebar.queue_width (dragged panel widths), settings.lists.saved_queries and settings.lists.collections (saved list filters), and the sidebar’s hand-made playlist order.