commit 453ba6381bd05dca844452d40667e0091dac0b54
parent 26403d14c8230fbdf0c583b22aabab71fa8a711d
Author: awy <awy@awy.one>
Date: Sat, 26 Jul 2025 00:33:02 +0300
indent
Diffstat:
2 files changed, 422 insertions(+), 426 deletions(-)
diff --git a/.config/rmpc/config.ron b/.config/rmpc/config.ron
@@ -2,221 +2,217 @@
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
- address: "127.0.0.1:6600",
- volume_step: 5,
- scrolloff: 2,
- max_fps: 60,
- wrap_navigation: true,
- theme: "def",
- lyrics_dir: "/mnt/ssd/music",
- on_song_change: ["~/.config/rmpc/scripts/statusbar"],
- on_resize: None,
- status_update_interval_ms: 1000,
- enable_mouse: true,
- enable_config_hot_reload: true,
- album_art: (
- method: Auto,
- max_size_px: (width: 0, height: 0),
- vertical_align: Top,
- horizontal_align: Center,
- ),
- keybinds: (
- global: {
- ":": CommandMode,
- ",": VolumeDown,
- "s": Stop,
- ".": VolumeUp,
- "<Tab>": NextTab,
- "<S-Tab>": PreviousTab,
- "1": SwitchToTab("Queue"),
- "2": SwitchToTab("Directories"),
- "3": SwitchToTab("Artists"),
- "4": SwitchToTab("Album Artists"),
- "5": SwitchToTab("Albums"),
- "6": SwitchToTab("Playlists"),
- "7": SwitchToTab("Search"),
- "q": Quit,
- ">": NextTrack,
- "p": TogglePause,
- "<": PreviousTrack,
- "f": SeekForward,
- "z": ToggleRepeat,
- "x": ToggleRandom,
- "c": ToggleConsume,
- "v": ToggleSingle,
- "b": SeekBack,
- "~": ShowHelp,
- "I": ShowCurrentSongInfo,
- "O": ShowOutputs,
- "P": ShowDecoders,
+ address: "127.0.0.1:6600",
+ volume_step: 5,
+ scrolloff: 2,
+ max_fps: 60,
+ wrap_navigation: true,
+ theme: "def",
+ lyrics_dir: "/mnt/ssd/music",
+ on_song_change: ["~/.config/rmpc/scripts/statusbar"],
+ on_resize: None,
+ status_update_interval_ms: 1000,
+ enable_mouse: true,
+ enable_config_hot_reload: true,
+ album_art: (
+ method: Auto,
+ max_size_px: (width: 0, height: 0),
+ vertical_align: Top,
+ horizontal_align: Center,
+ ),
+ keybinds: (
+ global: {
+ ":": CommandMode,
+ ",": VolumeDown,
+ "s": Stop,
+ ".": VolumeUp,
+ "<Tab>": NextTab,
+ "<S-Tab>": PreviousTab,
+ "1": SwitchToTab("Queue"),
+ "2": SwitchToTab("Directories"),
+ "3": SwitchToTab("Artists"),
+ "4": SwitchToTab("Album Artists"),
+ "5": SwitchToTab("Albums"),
+ "6": SwitchToTab("Playlists"),
+ "7": SwitchToTab("Search"),
+ "q": Quit,
+ ">": NextTrack,
+ "p": TogglePause,
+ "<": PreviousTrack,
+ "f": SeekForward,
+ "z": ToggleRepeat,
+ "x": ToggleRandom,
+ "c": ToggleConsume,
+ "v": ToggleSingle,
+ "b": SeekBack,
+ "~": ShowHelp,
+ "I": ShowCurrentSongInfo,
+ "O": ShowOutputs,
+ "P": ShowDecoders,
},
navigation: {
- "k": Up,
- "j": Down,
- "h": Left,
- "l": Right,
- "<Up>": Up,
- "<Down>": Down,
- "<Left>": Left,
- "<Right>": Right,
- "<C-k>": PaneUp,
- "<C-j>": PaneDown,
- "<C-h>": PaneLeft,
- "<C-l>": PaneRight,
- "<C-u>": UpHalf,
- "N": PreviousResult,
- "a": Add,
- "A": AddAll,
- "r": Rename,
- "n": NextResult,
- "g": Top,
- "<Space>": Select,
- "<C-Space>": InvertSelection,
- "G": Bottom,
- "<CR>": Confirm,
- "i": FocusInput,
- "J": MoveDown,
- "<C-d>": DownHalf,
- "/": EnterSearch,
- "<C-c>": Close,
- "<Esc>": Close,
- "K": MoveUp,
- "D": Delete,
- },
+ "k": Up,
+ "j": Down,
+ "h": Left,
+ "l": Right,
+ "<Up>": Up,
+ "<Down>": Down,
+ "<Left>": Left,
+ "<Right>": Right,
+ "<C-k>": PaneUp,
+ "<C-j>": PaneDown,
+ "<C-h>": PaneLeft,
+ "<C-l>": PaneRight,
+ "<C-u>": UpHalf,
+ "N": PreviousResult,
+ "a": Add,
+ "A": AddAll,
+ "r": Rename,
+ "n": NextResult,
+ "g": Top,
+ "<Space>": Select,
+ "<C-Space>": InvertSelection,
+ "G": Bottom,
+ "<CR>": Confirm,
+ "i": FocusInput,
+ "J": MoveDown,
+ "<C-d>": DownHalf,
+ "/": EnterSearch,
+ "<C-c>": Close,
+ "<Esc>": Close,
+ "K": MoveUp,
+ "D": Delete,
+ },
queue: {
- "D": DeleteAll,
- "<CR>": Play,
- "<C-s>": Save,
- "a": AddToPlaylist,
- "d": Delete,
- "i": ShowInfo,
- "C": JumpToCurrent,
- },
- ),
- search: (
- case_sensitive: 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"),
- ],
- ),
- tabs: [
- (
- name: "Queue",
- border_type: None,
+ "D": DeleteAll,
+ "<CR>": Play,
+ "<C-s>": Save,
+ "a": AddToPlaylist,
+ "d": Delete,
+ "i": ShowInfo,
+ "C": JumpToCurrent,
+ },
+ ),
+ search: (
+ case_sensitive: 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"),
+ ],
+ ),
+ tabs: [
+ (
+ name: "Queue",
+ border_type: None,
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "40%",
+ borders: "RIGHT",
pane: Split(
- direction: Horizontal,
- panes: [
+ direction: Vertical,
+ panes: [
(
- size: "40%",
- borders: "RIGHT",
- pane: Split(
- direction: Vertical,
- panes: [
- (
- size: "3",
- pane: Pane(Lyrics),
- ),
- (
- size: "100%",
- pane: Pane(AlbumArt),
- )
- ],
- ),
- ),
- (
- size: "60%",
- pane: Pane(Queue),
- ),
- ],
+ size: "3",
+ pane: Pane(Lyrics),
+ ),
+ (
+ size: "100%",
+ pane: Pane(AlbumArt),
+ )
+ ],
),
- ),
- (
- name: "Directories",
- border_type: None,
- pane: Pane(Directories),
- ),
- (
- name: "Artists",
- border_type: None,
- pane: Pane(Artists),
- ),
- (
- name: "Album Artists",
- border_type: None,
- pane: Pane(AlbumArtists),
- ),
- (
- name: "Albums",
- border_type: None,
- pane: Pane(Albums),
- ),
- (
- name: "Playlists",
- border_type: None,
- pane: Pane(Playlists),
- ),
- (
- name: "Search",
- border_type: None,
- pane: Pane(Search),
- ),
- (
- name: "Testing",
- border_type: Single,
+ ),
+ (
+ size: "60%",
+ pane: Pane(Queue),
+ ),
+ ],
+ ),
+ ),
+ (
+ name: "Directories",
+ border_type: None,
+ pane: Pane(Directories),
+ ),
+ (
+ name: "Artists",
+ border_type: None,
+ pane: Pane(Artists),
+ ),
+ (
+ name: "Album Artists",
+ border_type: None,
+ pane: Pane(AlbumArtists),
+ ),
+ (
+ name: "Albums",
+ border_type: None,
+ pane: Pane(Albums),
+ ),
+ (
+ name: "Playlists",
+ border_type: None,
+ pane: Pane(Playlists),
+ ),
+ (
+ name: "Search",
+ border_type: None,
+ pane: Pane(Search),
+ ),
+ (
+ name: "Testing",
+ border_type: Single,
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "40%",
+ pane: Pane(Queue),
+ ),
+ (
+ size: "60%",
pane: Split(
- direction: Horizontal,
- panes: [
- (
- size: "40%",
- pane: Pane(Queue),
- ),
- (
+ direction: Vertical,
+ panes: [
+ (
+ size: "50%",
+ pane: Pane(Directories),
+ ),
+ (
+ size: "50%",
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
size: "60%",
pane: Split(
- direction: Vertical,
- panes: [
- (
- size: "50%",
- pane: Pane(Directories),
- ),
- (
- size: "50%",
- pane: Split(
- direction: Horizontal,
- panes: [
- // (
- // size: "40%",
- // pane: Pane(AlbumArt),
- // ),
- (
- size: "60%",
- pane: Split(
- direction: Vertical,
- panes: [
- (
- size: "50%",
- pane: Pane(Albums),
- ),
- (
- size: "50%",
- pane: Pane(Artists),
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- ],
+ direction: Vertical,
+ panes: [
+ (
+ size: "50%",
+ pane: Pane(Albums),
+ ),
+ (
+ size: "50%",
+ pane: Pane(Artists),
+ ),
+ ],
),
- ),
- ],
+ ),
+ ],
+ ),
+ ),
+ ],
),
- ),
- ],
+ ),
+ ],
+ ),
+ ),
+ ],
)
diff --git a/.config/rmpc/themes/def.ron b/.config/rmpc/themes/def.ron
@@ -2,237 +2,237 @@
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
- draw_borders: false,
- show_song_table_header: true,
- background_color: None,
- default_album_art_path: None,
- header_background_color: None,
- modal_background_color: None,
- modal_backdrop: true,
- text_color: None,
- layout: Split(
- direction: Vertical,
- panes: [
+ draw_borders: false,
+ show_song_table_header: true,
+ background_color: None,
+ default_album_art_path: None,
+ header_background_color: None,
+ modal_background_color: None,
+ modal_backdrop: true,
+ text_color: None,
+ layout: Split(
+ direction: Vertical,
+ panes: [
+ (
+ size: "4",
+ borders: "ALL",
+ pane: Split(
+ direction: Vertical,
+ panes: [
(
- size: "4",
- borders: "ALL",
- pane: Split(
- direction: Vertical,
- panes: [
- (
- size: "1",
- direction: Vertical,
- pane: Split(
- direction: Horizontal,
- panes: [
- (
- size: "23",
- pane: Pane(Property(
- content: [
- (kind: Text("["), style: (fg: "yellow", modifiers: "Bold")),
- (kind: Property(Status(StateV2())), style: (fg: "yellow", modifiers: "Bold")),
- (kind: Text("]"), style: (fg: "yellow", modifiers: "Bold")),
- ], align: Left,
- )),
- ),
- (
- size: "100%",
- borders: "LEFT | RIGHT",
- pane: Pane(Property(
- content: [
- (kind: Property(Song(Filename)), style: (modifiers: "Bold"),
- default: (kind: Text("No Song"), style: (modifiers: "Bold")))
- ], align: Center, scroll_speed: 1
- )),
- ),
- (
- size: "23",
- pane: Pane(Property(
- content: [
- (kind: Property(Widget(Volume)), style: (fg: "blue", modifiers: "Bold"))
- ], align: Right
- )),
- ),
- ],
- ),
- ),
- (
- size: "1",
- direction: Vertical,
- pane: Split(
- direction: Horizontal,
- panes: [
- (
- size: "23",
- pane: Pane(Property(
- content: [
- (kind: Property(Status(Elapsed))),
- (kind: Text(" / ")),
- (kind: Property(Status(Duration))),
- (kind: Group([
- (kind: Text(" (")),
- (kind: Property(Status(Bitrate))),
- (kind: Text(" kbps)")),
- ])),
- ], align: Left,
- )),
- ),
- (
- size: "100%",
- borders: "LEFT | RIGHT",
- pane: Pane(Property(
- content: [
- (kind: Property(Song(Artist)), style: (fg: "yellow", modifiers: "Bold"),
- default: (kind: Text("Unknown"), style: (fg: "yellow", modifiers: "Bold"))),
- (kind: Text(" - ")),
- (kind: Property(Song(Album)), default: (kind: Text("Unknown Album")))
- ], align: Center, scroll_speed: 2
- )),
- ),
- (
- size: "23",
- pane: Pane(Property(content: [
- (kind: Property(Status(RepeatV2(
- on_label: " ",
- off_label: " ",
- on_style: (fg: "yellow", modifiers: "Bold"),
- off_style: (fg: "blue", modifiers: "Dim"),
- )))),
- (kind: Property(Status(RandomV2(
- on_label: " ",
- off_label: " ",
- on_style: (fg: "yellow", modifiers: "Bold"),
- off_style: (fg: "blue", modifiers: "Dim"),
- )))),
- (kind: Property(Status(SingleV2(
- on_label: " ",
- off_label: " ",
- oneshot_label: " ",
- on_style: (fg: "yellow", modifiers: "Bold"),
- off_style: (fg: "blue", modifiers: "Dim"),
- oneshot_style: (fg: "red", modifiers: "Bold"),
- )))),
- (kind: Property(Status(ConsumeV2(
- on_label: " ",
- off_label: " ",
- oneshot_label: "",
- on_style: (fg: "yellow", modifiers: "Bold"),
- off_style: (fg: "blue", modifiers: "Dim"),
- oneshot_style: (fg: "red", modifiers: "Dim"),
- )))),
- ], align: Right)),
- ),
- ],
- ),
- ),
- ]
- )
+ size: "1",
+ direction: Vertical,
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "23",
+ pane: Pane(Property(
+ content: [
+ (kind: Text("["), style: (fg: "yellow", modifiers: "Bold")),
+ (kind: Property(Status(StateV2())), style: (fg: "yellow", modifiers: "Bold")),
+ (kind: Text("]"), style: (fg: "yellow", modifiers: "Bold")),
+ ], align: Left,
+ )),
+ ),
+ (
+ size: "100%",
+ borders: "LEFT | RIGHT",
+ pane: Pane(Property(
+ content: [
+ (kind: Property(Song(Filename)), style: (modifiers: "Bold"),
+ default: (kind: Text("No Song"), style: (modifiers: "Bold")))
+ ], align: Center, scroll_speed: 1
+ )),
+ ),
+ (
+ size: "23",
+ pane: Pane(Property(
+ content: [
+ (kind: Property(Widget(Volume)), style: (fg: "blue", modifiers: "Bold"))
+ ], align: Right
+ )),
+ ),
+ ],
+ ),
),
(
- size: "3",
- borders: "ALL",
- pane: Pane(Tabs),
+ size: "1",
+ direction: Vertical,
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "23",
+ pane: Pane(Property(
+ content: [
+ (kind: Property(Status(Elapsed))),
+ (kind: Text(" / ")),
+ (kind: Property(Status(Duration))),
+ (kind: Group([
+ (kind: Text(" (")),
+ (kind: Property(Status(Bitrate))),
+ (kind: Text(" kbps)")),
+ ])),
+ ], align: Left,
+ )),
+ ),
+ (
+ size: "100%",
+ borders: "LEFT | RIGHT",
+ pane: Pane(Property(
+ content: [
+ (kind: Property(Song(Artist)), style: (fg: "yellow", modifiers: "Bold"),
+ default: (kind: Text("Unknown"), style: (fg: "yellow", modifiers: "Bold"))),
+ (kind: Text(" - ")),
+ (kind: Property(Song(Album)), default: (kind: Text("Unknown Album")))
+ ], align: Center, scroll_speed: 2
+ )),
+ ),
+ (
+ size: "23",
+ pane: Pane(Property(content: [
+ (kind: Property(Status(RepeatV2(
+ on_label: " ",
+ off_label: " ",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ )))),
+ (kind: Property(Status(RandomV2(
+ on_label: " ",
+ off_label: " ",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ )))),
+ (kind: Property(Status(SingleV2(
+ on_label: " ",
+ off_label: " ",
+ oneshot_label: " ",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ oneshot_style: (fg: "red", modifiers: "Bold"),
+ )))),
+ (kind: Property(Status(ConsumeV2(
+ on_label: " ",
+ off_label: " ",
+ oneshot_label: "",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ oneshot_style: (fg: "red", modifiers: "Dim"),
+ )))),
+ ], align: Right)),
+ ),
+ ],
+ ),
),
+ ]
+ )
+ ),
+ (
+ size: "3",
+ borders: "ALL",
+ pane: Pane(Tabs),
+ ),
+ (
+ size: "100%",
+ borders: "ALL",
+ background_color: "red",
+ pane: Pane(TabContent),
+ ),
+ (
+ size: "3",
+ borders: "ALL",
+ pane: Split(
+ direction: Horizontal,
+ panes: [
(
- size: "100%",
- borders: "ALL",
- background_color: "red",
- pane: Pane(TabContent),
+ pane: Pane(Property(content: [(kind: Property(Status(StateV2(playing_label: " ", paused_label: " ", stopped_label: " ",
+ playing_style: (fg: "blue"), paused_style: (fg: "green"), stopped_style: (fg: "red")
+ ))))], align: Left)),
+ size: "3",
),
(
- size: "3",
- borders: "ALL",
- pane: Split(
- direction: Horizontal,
- panes: [
- (
- pane: Pane(Property(content: [(kind: Property(Status(StateV2(playing_label: " ", paused_label: " ", stopped_label: " ",
- playing_style: (fg: "blue"), paused_style: (fg: "green"), stopped_style: (fg: "red")
- ))))], align: Left)),
- size: "3",
- ),
- (
- size: "100%",
- pane: Pane(ProgressBar),
- ),
- (
- size: "13",
- pane: Pane(Property(
- content: [
- (kind: Property(Status(Elapsed))),
- (kind: Text(" / ")),
- (kind: Property(Status(Duration))),
- ], align: Right,
- )),
- ),
- ]
- ),
+ size: "100%",
+ pane: Pane(ProgressBar),
),
- ]
+ (
+ size: "13",
+ pane: Pane(Property(
+ content: [
+ (kind: Property(Status(Elapsed))),
+ (kind: Text(" / ")),
+ (kind: Property(Status(Duration))),
+ ], align: Right,
+ )),
+ ),
+ ]
+ ),
+ ),
+ ]
+ ),
+ symbols: (
+ song: "🎵",
+ dir: "📁",
+ marker: "\u{e0b0}",
+ ellipsis: "…"
+ ),
+ progress_bar: (
+ symbols: ["█", "\u{e0b0}", "█"],
+ track_style: (fg: "#1e2030"),
+ elapsed_style: (fg: "blue"),
+ thumb_style: (fg: "blue", bg: "#1e2030"),
+ ),
+ scrollbar: (
+ symbols: ["│", "█", "▲", "▼"],
+ track_style: (),
+ ends_style: (),
+ thumb_style: (fg: "blue"),
+ ),
+ browser_column_widths: [20, 38, 42],
+ browser_song_format: [
+ (
+ kind: Group([
+ (kind: Property(Track)),
+ (kind: Text(" ")),
+ ])
),
- symbols: (
- song: "🎵",
- dir: "📁",
- marker: "\u{e0b0}",
- ellipsis: "…"
+ (
+ kind: Group([
+ (kind: Property(Artist)),
+ (kind: Text(" - ")),
+ (kind: Property(Title)),
+ ]),
+ default: (kind: Property(Filename))
),
- progress_bar: (
- symbols: ["█", "\u{e0b0}", "█"],
- track_style: (fg: "#1e2030"),
- elapsed_style: (fg: "blue"),
- thumb_style: (fg: "blue", bg: "#1e2030"),
+ ],
+ tab_bar: (
+ active_style: (fg: "black", bg: "blue", modifiers: "Bold"),
+ inactive_style: (),
+ ),
+ highlighted_item_style: (fg: "blue", modifiers: "Bold"),
+ current_item_style: (fg: "black", bg: "blue", modifiers: "Bold"),
+ borders_style: (fg: "blue", modifiers: "Bold"),
+ highlight_border_style: (fg: "red"),
+ song_table_format: [
+ (
+ prop: (kind: Property(Other("albumartist")), default: (kind: Property(Artist), default: (kind: Text("Unknown")))),
+ width: "20%",
+ label: "Artist"
),
- scrollbar: (
- symbols: ["│", "█", "▲", "▼"],
- track_style: (),
- ends_style: (),
- thumb_style: (fg: "blue"),
+ (
+ prop: (kind: Property(Title), default: (kind: Text("Unknown"))),
+ width: "35%",
),
- browser_column_widths: [20, 38, 42],
- browser_song_format: [
- (
- kind: Group([
- (kind: Property(Track)),
- (kind: Text(" ")),
- ])
- ),
- (
- kind: Group([
- (kind: Property(Artist)),
- (kind: Text(" - ")),
- (kind: Property(Title)),
- ]),
- default: (kind: Property(Filename))
- ),
- ],
- tab_bar: (
- active_style: (fg: "black", bg: "blue", modifiers: "Bold"),
- inactive_style: (),
+ (
+ prop: (kind: Property(Album), default: (kind: Text("Unknown Album"))),
+ width: "45%",
),
- highlighted_item_style: (fg: "blue", modifiers: "Bold"),
- current_item_style: (fg: "black", bg: "blue", modifiers: "Bold"),
- borders_style: (fg: "blue", modifiers: "Bold"),
- highlight_border_style: (fg: "red"),
- song_table_format: [
- (
- prop: (kind: Property(Other("albumartist")), default: (kind: Property(Artist), default: (kind: Text("Unknown")))),
- width: "20%",
- label: "Artist"
- ),
- (
- prop: (kind: Property(Title), default: (kind: Text("Unknown"))),
- width: "35%",
- ),
- (
- prop: (kind: Property(Album), default: (kind: Text("Unknown Album"))),
- width: "45%",
- ),
- (
- prop: (kind: Property(Duration),default: (kind: Text("-"))),
- width: "5",
- alignment: Right,
- label: "Len"
- ),
- ],
- header: (rows: []),
+ (
+ prop: (kind: Property(Duration),default: (kind: Text("-"))),
+ width: "5",
+ alignment: Right,
+ label: "Len"
+ ),
+ ],
+ header: (rows: []),
)