pub struct AppConfig {Show 50 fields
pub server: Option<MusicServer>,
pub servers: Vec<SavedServer>,
pub active_source: Source,
pub source_explicitly_set: bool,
pub music_directory: Vec<PathBuf>,
pub theme: String,
pub device_id: String,
pub discord_presence: Option<bool>,
pub discord_presence_paused: Option<bool>,
pub sort_order: SortOrder,
pub artist_view_order: ArtistViewOrder,
pub listen_counts: HashMap<String, u64>,
pub musicbrainz_token: String,
pub lastfm_api_key: String,
pub lastfm_api_secret: String,
pub lastfm_session_key: String,
pub librefm_api_key: String,
pub librefm_api_secret: String,
pub librefm_session_key: String,
pub language: String,
pub reduce_animations: bool,
pub tracing_enabled: bool,
pub auto_check_updates: bool,
pub minimize_to_tray: bool,
pub show_source_toggle: bool,
pub sidebar_order: Vec<String>,
pub volume: f32,
pub volume_scroll_step: f32,
pub crossfade_seconds: u8,
pub custom_themes: HashMap<String, CustomTheme>,
pub back_behavior: BackBehavior,
pub channel_mode: ChannelMode,
pub equalizer: EqualizerSettings,
pub ytdlp_output_dir: String,
pub ytdlp_options: YtdlpOptions,
pub ytdlp_history: Vec<YtdlpHistoryEntry>,
pub titlebar_mode: TitlebarMode,
pub offline_quality: OfflineQuality,
pub offline_tracks: HashMap<String, String>,
pub player_bar_position: PlayerBarPosition,
pub ui_style: UiStyle,
pub hero_height: u32,
pub home_sections: Vec<HomeSection>,
pub listen_now_style: ListenNowStyle,
pub artist_photo_source: ArtistPhotoSource,
pub auto_fetch_covers: bool,
pub cover_fetch_strategy: FetchStrategy,
pub radio_registries: Vec<RegistryEntry>,
pub prefer_local_lyrics: bool,
pub enable_musixmatch_lyrics: bool,
}Fields§
§server: Option<MusicServer>§servers: Vec<SavedServer>§active_source: SourceId of the active server (servers.id), or None for local. The DB-backed
source of truth for “which server is active”; server/servers above are
hydrated from the servers table around it. (server stays for now so the
~90 existing config.server readers keep working — they migrate to id-based
resolution with the auth-gate work.)
The active source: Local or Server(id). Single source of truth for
“which source/server is active” — server/servers above are hydrated
from the servers table around it.
source_explicitly_set: bool§music_directory: Vec<PathBuf>§theme: String§device_id: String§discord_presence: Option<bool>§discord_presence_paused: Option<bool>§sort_order: SortOrder§artist_view_order: ArtistViewOrder§listen_counts: HashMap<String, u64>§musicbrainz_token: String§lastfm_api_key: String§lastfm_api_secret: String§lastfm_session_key: String§librefm_api_key: String§librefm_api_secret: String§librefm_session_key: String§language: String§reduce_animations: bool§tracing_enabled: boolOpt-in chrome/Perfetto performance trace. Read at startup (the subscriber is built once), so a change needs a restart. Adds runtime overhead — surfaced with a warning in settings.
auto_check_updates: bool§minimize_to_tray: boolDesktop-only: when enabled, closing the window hides it to the system tray instead of quitting, so playback keeps running in the background.
show_source_toggle: bool§volume: f32§volume_scroll_step: f32§crossfade_seconds: u8§custom_themes: HashMap<String, CustomTheme>§back_behavior: BackBehavior§channel_mode: ChannelMode§equalizer: EqualizerSettings§ytdlp_output_dir: String§ytdlp_options: YtdlpOptions§ytdlp_history: Vec<YtdlpHistoryEntry>§titlebar_mode: TitlebarMode§offline_quality: OfflineQuality§offline_tracks: HashMap<String, String>§player_bar_position: PlayerBarPosition§ui_style: UiStyle§hero_height: u32§home_sections: Vec<HomeSection>§listen_now_style: ListenNowStyle§artist_photo_source: ArtistPhotoSource§auto_fetch_covers: bool§cover_fetch_strategy: FetchStrategy§radio_registries: Vec<RegistryEntry>§prefer_local_lyrics: bool§enable_musixmatch_lyrics: boolImplementations§
Source§impl AppConfig
impl AppConfig
pub fn playback(&self) -> PlaybackConfig
pub fn ui(&self) -> UiConfig
pub fn library(&self) -> LibraryConfig
pub fn integrations(&self) -> IntegrationConfig
Source§impl AppConfig
impl AppConfig
pub fn migrate_home_sections(&mut self)
pub fn migrate_servers(&mut self)
pub fn add_saved_server(&mut self, entry: SavedServer)
pub fn remove_saved_server(&mut self, id: &str)
pub fn find_saved_server(&self, id: &str) -> Option<&SavedServer>
pub fn migrate_registry_paths(&mut self)
Source§impl AppConfig
impl AppConfig
pub fn clear_active_server(&mut self)
pub fn set_active_server_snapshot(&mut self, server: MusicServer)
pub fn active_service(&self) -> Option<MusicService>
pub fn uses_jellyfin_server(&self) -> bool
Sourcepub fn server_toggle_target(&self) -> Option<Source>
pub fn server_toggle_target(&self) -> Option<Source>
The server to activate when toggling into server mode: the current server
if already on one, else the first saved server. None ⇒ no servers, so
the toggle is a no-op.