#![enable(implicit_some)] #![enable(unwrap_newtypes)] #![enable(unwrap_variant_newtypes)] ( address: "127.0.0.1:6600", password: None, theme: None, cache_dir: None, // Notify on song change on_song_change: Some(["sh", "-c", "notify-send -a rmpc '${TITLE:-Unknown}' '${ARTIST:-Unknown Artist} — ${ALBUM:-Unknown Album}'"]), exec_on_song_change_at_start: false, on_exit: None, // Lyrics lyrics_dir: Some("~/Music/lyrics"), lyrics_offset_ms: 0, enable_lyrics_index: true, enable_lyrics_hot_reload: true, // Playback volume_step: 5, rewind_to_start_sec: Some(3), keep_state_on_song_change: true, reflect_changes_to_playlist: false, // UI max_fps: 60, scrolloff: 5, wrap_navigation: false, enable_mouse: true, scroll_amount: 3, status_update_interval_ms: 500, select_current_song_on_change: true, center_current_song_on_change: true, enable_config_hot_reload: true, quit_closes_modal: true, auto_open_downloads: true, ignore_leading_the: true, browser_song_sort: [Disc, Track, Artist, Title], directories_sort: SortFormat(group_by_type: true, reverse: false), album_art: ( method: Auto, max_size_px: (width: 1200, height: 1200), disabled_protocols: ["http://", "https://"], vertical_align: Center, horizontal_align: Center, ), cava: ( framerate: 60, autosens: true, sensitivity: 100, lower_cutoff_freq: 50, higher_cutoff_freq: 10000, input: ( method: Fifo, source: "/tmp/mpd.fifo", sample_rate: 44100, channels: 2, sample_bits: 16, ), smoothing: ( noise_reduction: 77, monstercat: false, waves: false, ), eq: [], ), // Keybinds — default rmpc binds are already vim-style (hjkl, gg/G, C-u/C-d, etc.) // keeping defaults and just adding a couple of extras keybinds: ( clear: false, global: { "q": Quit, "?": ShowHelp, ":": CommandMode, "oI": ShowCurrentSongInfo, "oo": ShowOutputs, "op": ShowDecoders, "od": ShowDownloads, "oP": Partition(), "z": ToggleRepeat, "x": ToggleRandom, "c": ToggleConsume, "v": ToggleSingle, "p": TogglePause, "s": Stop, ">": NextTrack, "<": PreviousTrack, "f": SeekForward, "b": SeekBack, ".": VolumeUp, ",": VolumeDown, "": NextTab, "gt": NextTab, "": PreviousTab, "gT": PreviousTab, "1": SwitchToTab("Queue"), "2": SwitchToTab("Directories"), "3": SwitchToTab("Artists"), "4": SwitchToTab("Album Artists"), "5": SwitchToTab("Albums"), "6": SwitchToTab("Playlists"), "7": SwitchToTab("Search"), "u": Update, "U": Rescan, "R": AddRandom, }, navigation: { "": Close, "": Close, "": Confirm, "k": Up, "": Up, "j": Down, "": Down, "h": Left, "": Left, "l": Right, "": Right, "k": PaneUp, "": PaneUp, "j": PaneDown, "": PaneDown, "h": PaneLeft, "": PaneLeft, "l": PaneRight, "": PaneRight, "K": MoveUp, "J": MoveDown, "": UpHalf, "": DownHalf, "": PageUp, "": PageUp, "": PageDown, "": PageDown, "gg": Top, "G": Bottom, "": Select, "": InvertSelection, "/": EnterSearch, "n": NextResult, "N": PreviousResult, "a": Add, "A": AddAll, "D": Delete, "": Rename, "i": FocusInput, "oi": ShowInfo, "": ContextMenu(), "s": Save(kind: Modal(all: false, duplicates_strategy: Ask)), "a": Save(kind: Modal(all: true, duplicates_strategy: Ask)), "r": Rate(), }, queue: { "d": Delete, "D": DeleteAll, "": Play, "C": JumpToCurrent, "X": Shuffle, }, ), search: ( case_sensitive: false, ignore_diacritics: true, search_button: false, mode: Contains, tags: [ (value: "any", label: "Any Tag"), (value: "artist", label: "Artist"), (value: "album", label: "Album"), (value: "albumartist", label: "Album Artist"), (value: "title", label: "Title"), (value: "filename", label: "Filename"), (value: "genre", label: "Genre"), ], ), artists: ( album_display_mode: SplitByDate, album_sort_by: Date, album_date_tags: [Date], ), // Layout: Queue tab has album art + lyrics on left, queue on right // Other tabs are simple single-pane tabs: [ ( name: "Queue", pane: Split( direction: Horizontal, panes: [ ( size: "35%", pane: Split( direction: Vertical, panes: [ ( size: "100%", borders: "LEFT | RIGHT | TOP", border_symbols: Rounded, pane: Pane(AlbumArt) ), ( size: "6", borders: "LEFT | RIGHT", border_symbols: Rounded, pane: Pane(Cava) ), ( size: "7", borders: "ALL", border_symbols: Inherited(parent: Rounded, top_left: "├", top_right: "┤",), border_title: [(kind: Text(" Lyrics "))], border_title_alignment: Right, pane: Pane(Lyrics) ), ], ), ), ( size: "65%", pane: Split( direction: Vertical, panes: [ ( size: "3", borders: "ALL", border_symbols: Inherited(parent: Rounded, bottom_left: "├", bottom_right: "┤",), pane: Split( direction: Horizontal, panes: [ (size: "1", pane: Pane(Empty())), (size: "100%", pane: Pane(QueueHeader())), ] ) ), ( size: "100%", borders: "LEFT | RIGHT | BOTTOM", border_symbols: Rounded, pane: Split( direction: Horizontal, panes: [ (size: "1", pane: Pane(Empty())), (size: "100%", pane: Pane(Queue)), ] ) ), ], ) ), ], ), ), ( name: "Directories", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(Directories), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ( name: "Artists", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(Artists), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ( name: "Album Artists", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(AlbumArtists), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ( name: "Albums", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(Albums), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ( name: "Playlists", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(Playlists), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ( name: "Search", borders: "ALL", border_symbols: Rounded, pane: Split( size: "100%", direction: Vertical, panes: [(pane: Pane(Search), size: "100%", borders: "ALL", border_symbols: Rounded)], ) ), ], )