Nord
You must add the tab section to your config.ron.
Requires a Nerd Font for some of the symbols.
You probably also want to enable the sticker file and add the playcount script to run on song change, aswell as enable Cava.
Depending on your font and screen you might need to slightly adjust some values in:
- “AlbumArt” in the config.ron
Preview
Section titled “Preview”
Config
Section titled “Config”#![enable(implicit_some)]#![enable(unwrap_newtypes)]#, preview_metadata_group_style: (fg: "#81a1c1"), song_table_album_separator: None, tab_bar: ( active_style: (fg: "#2e3440", bg: "#81A1C1", modifiers: "Bold"), inactive_style: (fg: "#4c566a", bg: "#2e3440"), ), highlighted_item_style: (fg: "#a3be8c", modifiers: "Bold"), current_item_style: (fg: "#2e3440", bg: "#81a1c1", modifiers: "Bold"), borders_style: (fg: "#81a1c1", modifiers: "Bold"), highlight_border_style: (fg: "#81a1c1"), symbols: (song: " ", dir: " ", playlist: " ", marker: "* ", ellipsis: "...", song_style: (fg: "#81a1c1"), dir_style: (fg: "#81a1c1"), ), progress_bar: ( symbols: ["", "█", "", "█", "" ], track_style: (fg: "#3b4252", bg: "#2e3440"), elapsed_style: (fg: "#81a1c1", bg: "#2e3440"), thumb_style: (fg: "#81a1c1", bg: "#3b4252"), use_track_when_empty: false, ), scrollbar: ( symbols: ["┋", "█", "", ""], track_style: (fg: "#81a1c1"), ends_style: (fg: "#81a1c1"), thumb_style: (fg: "#81a1c1"), ), song_table_format: [ ( prop: (kind: Transform(Replace(content: (kind: Sticker("rating")), replacements: [ (match: "0", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "1", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "2", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "3", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "4", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "5", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "6", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "7", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "8", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "9", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), (match: "10", replace: (kind: Group([(kind: Text(""),style: (fg: "#81a1c1"))]))), ])), default: (kind: Text(""), style: (fg: "#5e81ac"))), width: "3", label: "Rating", alignment: Center, label_prop: (kind: Group([ (kind: Text(""), style: (fg: "#81a1c1")), ])) ), ( prop: (kind: Sticker("playCount"),style: (fg: "#81a1c1"), default: (kind: Text(""), style: (fg: "#5e81ac"))), width: "3", alignment: Left, label: "Playcount", label_prop: (kind: Group([ (kind: Text(""), style: (fg: "#81a1c1")), ])) ), ( prop:(kind: Text("│"), style: (fg: "#81a1c1")), width: "1", alignment: Center, label: "", label_prop: (kind: Group([ (kind: Text("│"), style: (fg: "#81a1c1")), ])) ), ( prop: (kind: Property(Artist), style: (fg: "#81a1c1"), default: (kind: Text("Unknown Artist"), style: (fg: "#b48ead"))), width: "23%", label_prop: (kind: Group([ (kind: Text("Artist "), style: (fg: "#d8dee9")), (kind: Text(""), style: (fg: "#81a1c1")) ])) ), ( prop: (kind: Property(Title), style: (fg: "#88c0d0"), default: (kind: Property(Filename), style: (fg: "#d8dee9"), default: (kind: Text("Unknown Title"), style: (fg: "#d8dee9")))), width: "36%", label_prop: (kind: Group([ (kind: Text("Title "), style: (fg: "#d8dee9")), (kind: Text(""), style: (fg: "#81a1c1")) ])) ), ( prop: (kind: Property(Album), style: (fg: "#81a1c1"), default: (kind: Text("Unknown Album"), style: (fg: "#b48ead"))), width: "33%", label_prop: (kind: Group([ (kind: Text("Album "), style: (fg: "#d8dee9")), (kind: Text(""), style: (fg: "#81a1c1")) ])) ), ( prop: (kind: Property(Duration), style: (fg: "#88c0d0"), default: (kind: Text("-"))), width: "8%", alignment: Right, label_prop: (kind: Group([ (kind: Text("Length "), style: (fg: "#d8dee9")), (kind: Text(" "), style: (fg: "#81a1c1")) ])) ), ], layout: Split( direction: Vertical, panes: [ (size: "7", borders: "NONE", pane: Component("header")), (size: "100%", borders: "NONE", pane: Pane(TabContent)), (size: "3", borders: "NONE", pane: Component("progress_bar")), ]), browser_song_format: [ (kind: Group([ (kind: Property(Track)), (kind: Text(" ")), ])), (kind: Group([ (kind: Property(Artist)), (kind: Text(" - ")), (kind: Property(Title)), ]), default: (kind: Property(Filename))) ], level_styles: ( info: (fg: "#a3be8c", bg: "#2e3440"), warn: (fg: "#ebcb8b", bg: "#2e3440"), error: (fg: "#bf616a", bg: "#2e3440"), debug: (fg: "#d08770", bg: "#2e3440"), trace: (fg: "#b48ead", bg: "#2e3440"), ), components: { "header_line_0": Split(direction: Horizontal, panes: [ (size: "12%", borders: "NONE", pane: Component("tab_bar_left")), (size: "76%", borders: "NONE", pane: Pane(Tabs)), (size: "12%", borders: "NONE", pane: Component("tab_bar_right")), ]), "header_line_1": Split(direction: Horizontal, panes: [ (size: "26%", pane: Component("header_element_1")), (size: "48%", pane: Component("header_element_2")), (size: "26%", pane: Component("header_element_3")), (size: "2", pane: Component("header_element_right_end")), ]), "header_line_2": Split(direction: Horizontal, panes: [ (size: "26%", pane: Component("header_element_4")), (size: "48%", pane: Component("header_element_5")), (size: "26%", pane: Component("header_element_6")), (size: "2", pane: Component("header_element_right_end")), ]), "header_line_3": Split(direction: Horizontal, panes: [ (size: "26%", pane: Component("header_element_7")), (size: "48%", pane: Component("header_element_8")), (size: "26%", pane: Component("header_element_9")), (size: "2", pane: Component("header_element_right_end")),
]), "header": Split( direction: Vertical, panes: [ (size: "2", borders: "TOP | RIGHT | LEFT", border_symbols: Rounded, pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "NONE", pane: Component("header_line_0")), ]) ), (size: "5", borders: "ALL", border_symbols: Library("rounded_collapsed_top"), pane: Split(direction: Vertical, panes: [ (size: "100%", borders: "NONE", pane: Component("header_line_1")), (size: "100%", borders: "NONE", pane: Component("header_line_2")), (size: "100%", borders: "NONE", pane: Component("header_line_3")), ]) ), ] ), "progress_bar": Split( direction: Vertical, panes: [ (size: "3", borders: "ALL", border_symbols: Rounded , border_title: [ (kind: Property(Status(Elapsed)),style: (fg: "#d8dee9")), (kind: Property(Status(StateV2(playing_label: "──", paused_label: " ", stopped_label: " "))), style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Duration)),style: (fg: "#d8dee9")) ], border_title_position: Top, border_title_alignment: Center, pane: Split(direction: Vertical, panes: [ (size: "100%", borders: "NONE",pane: Pane(ProgressBar)), ]) ), ] ), "tab_bar_left": Split(direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text(" "), style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(StateV2(playing_label: "", paused_label: "", stopped_label: ""))), style: (fg: "#d8dee9")), (kind: Text(" "), style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(FileExtension)), style: (fg: "#4c566a")), (kind: Text(" ")), (kind: Property(Widget(ScanStatus)), style: (fg: "#d8dee9", modifiers: "Bold")), (kind: Text(" ")), (kind: Property(Status(InputBuffer())), style: (fg: "#4c566a")), ], align: Left)) ), ]), "tab_bar_right": Split(direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Transform(Replace(content: (kind: Property(Status(Partition)), style: (fg: "#4c566a")), replacements: [ (match: "default", replace: (kind: Group([(kind: Text(""))]))), ]))), (kind: Text(" ")), (kind: Property(Song(Channels())), style: (fg: "#4c566a"), default: (kind: Text("0"), style: (fg: "#4c566a"))), (kind: Text(" "),style: (fg: "#4c566a")), (kind: Text(" "), style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Volume)), style: (fg: "#d8dee9")), (kind: Text("% "), style: (fg: "#81a1c1", modifiers: "Bold")) ], align: Right)) ), ]), "header_element_1": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Elapsed)),style: (fg: "#d8dee9")), (kind: Text(" / "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Duration)),style: (fg: "#d8dee9")), (kind: Text(" "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Text(" ]"),style: (fg: "#81a1c1", modifiers: "Bold")), ], align: Left)) ), ] ), "header_element_2": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Property(Song(Title)), style: (fg: "#d8dee9",modifiers: "Bold"), default: (kind: Property(Song(Filename)), style: (fg: "#d8dee9",modifiers: "Bold"), default: (kind: Text("Unknown Title"), style: (fg: "#d8dee9",modifiers: "Bold")))) ], align: Center)) ), ] ), "header_element_3": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(RepeatV2(on_label: "", off_label: "", on_style: (fg: "#d8dee9", modifiers: "Bold"), off_style: (fg: "#4c566a", modifiers: "Bold"))))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(RandomV2(on_label: "", off_label: "", on_style: (fg: "#d8dee9", modifiers: "Bold"), off_style: (fg: "#4c566a", modifiers: "Bold"))))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(ConsumeV2(on_label: "", off_label: "", oneshot_label: "", on_style: (fg: "#d8dee9", modifiers: "Bold"), off_style: (fg: "#4c566a", modifiers: "Bold"))))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(SingleV2(on_label: "", off_label: "", oneshot_label: "", off_oneshot_label: "", on_style: (fg: "#d8dee9", modifiers: "Bold"), off_style: (fg: "#4c566a", modifiers: "Bold"))))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Crossfade)),style: (fg: "#4c566a"), default: (kind: Text(""), style: (fg: "#4c566a"))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Transform(Replace(content: (kind: Property(Status(InputMode()))), replacements: [ (match: "Normal", replace: (kind: Group([(kind: Text("N"),style: (fg: "#4c566a", modifiers: "Bold"))]))), (match: "Insert", replace: (kind: Group([(kind: Text("I"),style: (fg: "#d8dee9", modifiers: "Bold"))]))), (match: "Visual", replace: (kind: Group([(kind: Text("V"),style: (fg: "#d8dee9", modifiers: "Bold"))]))), (match: "Command", replace: (kind: Group([(kind: Text("C"),style: (fg: "#d8dee9", modifiers: "Bold"))]))), ]))), ], align: Right)) ), ] ), "header_element_4": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Bits())),default: (kind: Text(" "), style: (fg: "#d8dee9")), style: (fg: "#d8dee9")), (kind: Text(" bit"),style: (fg: "#81a1c1")), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(Bitrate)),default: (kind: Text(" "), style: (fg: "#d8dee9")),style: (fg: "#d8dee9")), (kind: Text(" kbps"),style: (fg: "#81a1c1")), (kind: Text(" ]"),style: (fg: "#81a1c1", modifiers: "Bold")) ], align: Left)) ), ] ), "header_element_5": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Property(Song(Artist)), style: (fg: "#88c0d0"), default: (kind: Text("Unknown Artist"), style: (fg: "#88c0d0"))), (kind: Text(" - "), style: (fg: "#d8dee9")), (kind: Property(Song(Album)),style: (fg: "#81a1c1" ), default: (kind: Text("Unknown Album"), style: (fg: "#81a1c1"))) ], align: Center)) ), ] ), "header_element_6": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(QueueTimeRemaining(separator: " "))),style: (fg: "#d8dee9")), (kind: Text(" / "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(QueueTimeTotal(separator: " "))),style: (fg: "#d8dee9")), (kind: Text(" "),style: (fg: "#81a1c1", modifiers: "Bold")), ], align: Right)) ), ] ), "header_element_7": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(SampleRate())),default: (kind: Text(" "), style: (fg: "#d8dee9")), style: (fg: "#d8dee9")), (kind: Text(" Hz"),style: (fg: "#81a1c1")), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Position)), style: (fg: "#d8dee9"), default: (kind: Text("0"), style: (fg: "#d8dee9"))), (kind: Text(" / "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Status(QueueLength())),style: (fg: "#d8dee9")), (kind: Text(" "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Text(" ]"),style: (fg: "#81a1c1", modifiers: "Bold")) ], align: Left)) ), ] ), "header_element_8": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Property(Song(Other("albumartist"))),style: (fg: "#4c566a"), default: (kind: Text("Unknown Albumartist"), style: (fg: "#4c566a"))), (kind: Text(" - "), style: (fg: "#4c566a")), (kind: Property(Song(Other("composer"))),style: (fg: "#4c566a"), default: (kind: Text("Unknown Composer"), style: (fg: "#4c566a"))), ], align: Center)) ), ] ), "header_element_9": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Other("date"))),style: (fg: "#d8dee9"), default: (kind: Text("Unknown Date"), style: (fg: "#4c566a"))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Track)),style: (fg: "#d8dee9"), default: (kind: Text("0"), style: (fg: "#4c566a"))), (kind: Text(" / "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Disc)),style: (fg: "#d8dee9"), default: (kind: Text("0"), style: (fg: "#4c566a"))), (kind: Text(" | "),style: (fg: "#81a1c1", modifiers: "Bold")), (kind: Property(Song(Other("genre"))),style: (fg: "#d8dee9"), default: (kind: Text("Unknown Genre"), style: (fg: "#4c566a"))), ], align: Right)) ), ] ), "header_element_right_end": Split( direction: Horizontal, panes: [ (size: "100%", pane: Pane(Property(content: [ (kind: Text(" ]"),style: (fg: "#81a1c1", modifiers: "Bold")), ], align: Right)) ), ] ), }, cava: ( bar_symbols: ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'], bar_width: 1, bar_spacing: 1, bg_color: "#2e3440", bar_color: Gradient({ 0: "#5e81ac", 33: "#81a1c1", 67: "#88c0d0", 100: "#8fbcbb", }) ), lyrics:(timestamp: false), border_symbol_sets: { "rounded_collapsed_top": ( parent: Rounded, top_left: "├", top_right: "┤", ), },) tabs: [ (name: "Home", pane: Split(direction: Horizontal, panes: [ (size: "70%", borders: "NONE", pane: Split(direction: Vertical, panes: [ (size: "3", borders: "ALL", border_symbols: Rounded , pane: Pane(QueueHeader())), (size: "100%", borders: "ALL", border_symbols: Rounded ,pane: Pane(Queue)), ])
), (size: "30%", borders: "NONE", border_symbols: Rounded ,pane: Split(direction: Vertical, panes: [ (size: "0.47r", borders: "TOP | RIGHT | LEFT", border_symbols: Rounded, pane: Pane(AlbumArt)), (size: "100%", borders: "ALL", border_symbols: Library("rounded_collapsed_top"), border_title: [(kind: Text("Lyrics"), style: (fg: "#81a1c1"))], border_title_position: Top, border_title_alignment: Right, pane: Pane(Lyrics)), ]) ),
]) ), (name: "Directories", pane: Split(direction: Horizontal,panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Directories)), ]) ), (name: "Playlists", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Playlists)), ]) ), (name: "Artists", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Artists)), ]) ), (name: "Albums", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Albums)), ]) ), (name: "Album Artists", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(AlbumArtists)), ]) ), (name: "Genre", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Browser(root_tag: "genre", separator: ";"))), ]) ), (name: "Queue", pane: Split(direction: Vertical, panes: [ (size: "2", borders: "TOP | RIGHT | LEFT", border_symbols: Rounded , pane: Pane(QueueHeader())), (size: "100%", borders: "ALL", border_symbols: Library("rounded_collapsed_top"), border_title: [(kind: Property(Song(File)), style: (fg: "#4c566a"))], border_title_position: Bottom, border_title_alignment: Right, pane: Pane(Queue)), ])
), (name: "Show",pane: Split(direction: Vertical, panes: [ (size: "50%", pane: Split(direction: Horizontal, panes: [ (size: "39%", borders: "ALL", border_symbols: Rounded, pane: Pane(Queue)), (size: "22%", borders: "ALL", border_symbols: Rounded, pane: Pane(AlbumArt)), (size: "39%", borders: "ALL", border_title: [(kind: Text("Lyrics"), style: (fg: "#81a1c1"))], border_title_position: Top, border_title_alignment: Right, border_symbols: Rounded, pane: Pane(Lyrics)), ]) ), (size: "50%", borders: "ALL", border_symbols: Rounded, pane: Pane(Cava)), ]) ), (name: "Search", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", border_symbols: Rounded, pane: Pane(Search)), ]) ), ],