diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-02-17 22:19:16 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-02-17 22:19:16 +0900 |
| commit | ba6a11651f6ab23e62ceab18e3fd383318fe02d2 (patch) | |
| tree | d492a99af564d5990be4f01976571b1405033f70 /ar/.config/rmpc | |
| parent | eec577616f0f23949030c36e2a5061974c9bfe45 (diff) | |
updates
Diffstat (limited to 'ar/.config/rmpc')
| -rw-r--r-- | ar/.config/rmpc/config.ron | 284 | ||||
| -rwxr-xr-x | ar/.config/rmpc/scripts/on_song_change | 61 | ||||
| -rwxr-xr-x | ar/.config/rmpc/scripts/onresize | 7 | ||||
| -rw-r--r-- | ar/.config/rmpc/themes/catppuccin-mocha-small.ron | 195 | ||||
| -rw-r--r-- | ar/.config/rmpc/themes/catppuccin-mocha.ron | 327 |
5 files changed, 874 insertions, 0 deletions
diff --git a/ar/.config/rmpc/config.ron b/ar/.config/rmpc/config.ron new file mode 100644 index 0000000..9e4ffe5 --- /dev/null +++ b/ar/.config/rmpc/config.ron @@ -0,0 +1,284 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] +( + address: "/tmp/mpd_socket", + password: None, + theme: "~/.config/rmpc/themes/catppuccin-mocha.ron", + cache_dir: "~/.cache/rmpc", + lyrics_dir: "~/.local/share/lyrics", + on_song_change: ["~/.config/rmpc/scripts/on_song_change"], + on_resize: ["~/.config/rmpc/scripts/onresize"], + extra_yt_dlp_args: ["--audio-quality", "0"], + volume_step: 5, + max_fps: 30, + scrolloff: 9, + wrap_navigation: false, + enable_mouse: true, + scroll_amount: 1, + enable_config_hot_reload: true, + enable_lyrics_hot_reload: true, + status_update_interval_ms: 1000, + rewind_to_start_sec: None, + keep_state_on_song_change: true, + reflect_changes_to_playlist: false, + select_current_song_on_change: false, + ignore_leading_the: false, + browser_song_sort: [Disc, Track, Artist, Title], + directories_sort: SortFormat(group_by_type: true, reverse: false), + auto_open_downloads: true, + album_art: ( + method: Auto, + max_size_px: (width: 1200, height: 1200), + disabled_protocols: ["http://", "https://"], + vertical_align: Center, + horizontal_align: Center, + ), + keybinds: ( + 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, + "<Tab>": NextTab, + "gt": NextTab, + "<S-Tab>": 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"), + "<C-u>": Update, + "<C-U>": Rescan, + "R": AddRandom, + }, + navigation: { + "<C-c>": Close, + "<Esc>": Close, + "<CR>": Confirm, + "k": Up, + "<Up>": Up, + "j": Down, + "<Down>": Down, + "h": Left, + "<Left>": Left, + "l": Right, + "<Right>": Right, + "<C-w>k": PaneUp, + "<C-Up>": PaneUp, + "<C-w>j": PaneDown, + "<C-Down>": PaneDown, + "<C-w>h": PaneLeft, + "<C-Left>": PaneLeft, + "<C-w>l": PaneRight, + "<C-Right>": PaneRight, + "K": MoveUp, + "J": MoveDown, + "<C-u>": UpHalf, + "<C-d>": DownHalf, + "<C-b>": PageUp, + "<PageUp>": PageUp, + "<C-f>": PageDown, + "<PageDown>": PageDown, + "gg": Top, + "G": Bottom, + "<Space>": Select, + "<C-Space>": InvertSelection, + "/": EnterSearch, + "n": NextResult, + "N": PreviousResult, + "a": Add, + "A": AddAll, + "D": Delete, + "<C-r>": Rename, + "i": FocusInput, + "oi": ShowInfo, + "<C-z>": ContextMenu(), + "<C-s>s": Save(kind: Modal(all: false, duplicates_strategy: Ask)), + "<C-s>a": Save(kind: Modal(all: true, duplicates_strategy: Ask)), + "r": Rate(), + }, + queue: { + "d": Delete, + "D": DeleteAll, + "<CR>": Play, + "C": JumpToCurrent, + "X": Shuffle, + }, + ), + search: ( + case_sensitive: false, + ignore_diacritics: false, + 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], + ), + tabs: [ + ( + name: "Queue", + pane: Split( + direction: Horizontal, + panes: [ + ( + 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) + ), + ] + ) + ), + ], + ) + ), + ( + size: "35%", + pane: Split( + direction: Vertical, + panes: [ + ( + size: "100%", + borders: "LEFT | RIGHT | TOP", + border_symbols: Rounded, + pane: Pane(AlbumArt) + ), + ( + 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) + ), + ], + ), + ), + ], + ), + ), + ( + 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)], + ) + ), + ], +) diff --git a/ar/.config/rmpc/scripts/on_song_change b/ar/.config/rmpc/scripts/on_song_change new file mode 100755 index 0000000..72a68ae --- /dev/null +++ b/ar/.config/rmpc/scripts/on_song_change @@ -0,0 +1,61 @@ +#!/usr/bin/env sh + +# ── dwmblocks signal ───────────────────────────────────────────────────────── +pkill -RTMIN+21 dwmblocks + +# ── Desktop notification ────────────────────────────────────────────────────── +TMP_DIR="/tmp/rmpc" +mkdir -p "$TMP_DIR" +ALBUM_ART_PATH="$TMP_DIR/notification_cover" + +if ! rmpc albumart --output "$ALBUM_ART_PATH"; then + ALBUM_ART_PATH="" +fi + +if [ -n "$ALBUM_ART_PATH" ]; then + notify-send -i "$ALBUM_ART_PATH" "Now Playing" "$ARTIST - $TITLE" +else + notify-send "Now Playing" "$ARTIST - $TITLE" +fi + +# ── Play count ──────────────────────────────────────────────────────────────── +sticker=$(rmpc sticker get "$FILE" "playCount" 2>/dev/null | jq -r '.value') +if [ -z "$sticker" ]; then + rmpc sticker set "$FILE" "playCount" "1" +else + rmpc sticker set "$FILE" "playCount" "$((sticker + 1))" +fi + +# ── Auto lyrics download ────────────────────────────────────────────────────── +LRCLIB_INSTANCE="https://lrclib.net" + +if [ "$HAS_LRC" = "false" ]; then + mkdir -p "$(dirname "$LRC_FILE")" + + LYRICS="$(curl -X GET -sG \ + -H "Lrclib-Client: rmpc-$VERSION" \ + --data-urlencode "artist_name=$ARTIST" \ + --data-urlencode "track_name=$TITLE" \ + --data-urlencode "album_name=$ALBUM" \ + "$LRCLIB_INSTANCE/api/get" | jq -r '.syncedLyrics')" + + if [ -z "$LYRICS" ]; then + rmpc remote --pid "$PID" status "Failed to download lyrics for $ARTIST - $TITLE" --level error + exit + fi + + if [ "$LYRICS" = "null" ]; then + rmpc remote --pid "$PID" status "Lyrics for $ARTIST - $TITLE not found" --level warn + exit + fi + + echo "[ar:$ARTIST]" >"$LRC_FILE" + { + echo "[al:$ALBUM]" + echo "[ti:$TITLE]" + } >>"$LRC_FILE" + echo "$LYRICS" | sed -E '/^\[(ar|al|ti):/d' >>"$LRC_FILE" + + rmpc remote --pid "$PID" indexlrc --path "$LRC_FILE" + rmpc remote --pid "$PID" status "Downloaded lyrics for $ARTIST - $TITLE" --level info +fi diff --git a/ar/.config/rmpc/scripts/onresize b/ar/.config/rmpc/scripts/onresize new file mode 100755 index 0000000..36462ce --- /dev/null +++ b/ar/.config/rmpc/scripts/onresize @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if [[ $COLS -gt 100 ]]; then + rmpc remote --pid "$PID" set theme ~/.config/rmpc/themes/catppuccin-mocha.ron +else + rmpc remote --pid "$PID" set theme ~/.config/rmpc/themes/catppuccin-mocha-small.ron +fi diff --git a/ar/.config/rmpc/themes/catppuccin-mocha-small.ron b/ar/.config/rmpc/themes/catppuccin-mocha-small.ron new file mode 100644 index 0000000..35759fe --- /dev/null +++ b/ar/.config/rmpc/themes/catppuccin-mocha-small.ron @@ -0,0 +1,195 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] +// Catppuccin Mocha - Small (single-line header) +( + default_album_art_path: None, + format_tag_separator: " | ", + browser_column_widths: [20, 38, 42], + background_color: None, + text_color: "#cdd6f4", + header_background_color: None, + modal_background_color: None, + modal_backdrop: true, + preview_label_style: (fg: "#f9e2af"), + preview_metadata_group_style: (fg: "#f9e2af", modifiers: "Bold"), + highlighted_item_style: (fg: "#cba6f7", modifiers: "Bold"), + current_item_style: (fg: "#1e1e2e", bg: "#89b4fa", modifiers: "Bold"), + borders_style: (fg: "#45475a"), + highlight_border_style: (fg: "#89b4fa"), + symbols: ( + song: "", + dir: "", + playlist: "", + marker: "", + ellipsis: "…", + song_style: (fg: "#89b4fa"), + dir_style: (fg: "#89dceb"), + playlist_style: (fg: "#cba6f7"), + ), + level_styles: ( + info: (fg: "#89b4fa"), + warn: (fg: "#f9e2af"), + error: (fg: "#f38ba8"), + debug: (fg: "#a6e3a1"), + trace: (fg: "#cba6f7"), + ), + progress_bar: ( + symbols: ["━", "━", "●", "─", "─"], + track_style: (fg: "#45475a"), + elapsed_style: (fg: "#cba6f7"), + thumb_style: (fg: "#89b4fa"), + use_track_when_empty: true, + ), + scrollbar: ( + symbols: ["│", "█", "▲", "▼"], + track_style: (fg: "#313244"), + ends_style: (fg: "#45475a"), + thumb_style: (fg: "#89b4fa"), + ), + tab_bar: ( + active_style: (fg: "#1e1e2e", bg: "#89b4fa", modifiers: "Bold"), + inactive_style: (fg: "#6c7086"), + ), + lyrics: ( + timestamp: false + ), + browser_song_format: [ + ( + kind: Group([ + (kind: Property(Track)), + (kind: Text(" ")), + ]) + ), + ( + kind: Group([ + (kind: Property(Artist)), + (kind: Text(" - ")), + (kind: Property(Title)), + ]), + default: (kind: Property(Filename)) + ), + ], + song_table_format: [ + ( + prop: (kind: Property(Artist), + default: (kind: Text("Unknown")) + ), + label_prop: (kind: Text("Artist")), + width: "20%", + ), + ( + prop: (kind: Property(Title), + default: (kind: Text("Unknown")) + ), + label_prop: (kind: Text("Title")), + width: "33%", + ), + ( + prop: (kind: Property(Album), style: (fg: "#a6adc8"), + default: (kind: Text("Unknown Album"), style: (fg: "#a6adc8")) + ), + label_prop: (kind: Text("Album")), + width: "28%", + ), + ( + prop: (kind: Property(Duration), + default: (kind: Text("-")) + ), + label_prop: (kind: Text("Duration")), + width: "12%", + alignment: Right, + ), + ( + prop: (kind: Sticker("playCount"), style: (fg: "#6c7086"), + default: (kind: Text("0"), style: (fg: "#6c7086")) + ), + label_prop: (kind: Text("Plays")), + width: "7%", + alignment: Right, + ), + ], + layout: Split( + direction: Vertical, + panes: [ + ( + size: "1", + pane: Split( + direction: Horizontal, + panes: [ + ( + size: "10", + pane: Pane(Property( + content: [ + (kind: Text("["), style: (fg: "#fab387", modifiers: "Bold")), + (kind: Property(Status(StateV2( ))), style: (fg: "#fab387", modifiers: "Bold")), + (kind: Text("] "), style: (fg: "#fab387", modifiers: "Bold")), + ], + align: Left, + )), + ), + ( + size: "100%", + pane: Pane(Property( + content: [ + (kind: Property(Song(Artist)), style: (fg: "#f9e2af", modifiers: "Bold"), + default: (kind: Text("Unknown"), style: (fg: "#6c7086"))), + (kind: Text(" - "), style: (fg: "#6c7086")), + (kind: Property(Song(Title)), style: (fg: "#cdd6f4", modifiers: "Bold"), + default: (kind: Text("No Song"), style: (fg: "#6c7086"))), + ], + align: Center, + scroll_speed: 1, + )), + ), + ( + size: "8", + pane: Pane(Property( + content: [ + (kind: Property(Status(Volume)), style: (fg: "#89b4fa")), + (kind: Text("%"), style: (fg: "#89b4fa")), + ], + align: Right, + )), + ), + ] + ), + ), + ( + pane: Pane(Tabs), + borders: "RIGHT | LEFT | BOTTOM", + border_symbols: Rounded, + size: "2", + ), + ( + pane: Pane(TabContent), + size: "100%", + ), + ( + size: "1", + pane: Split( + direction: Horizontal, + panes: [ + ( + size: "100%", + pane: Pane(ProgressBar), + ), + ( + size: "11", + pane: Pane(Property( + content: [ + (kind: Text(" "), style: (fg: "#6c7086")), + (kind: Property(Status(Elapsed)), style: (fg: "#a6adc8")), + (kind: Text("/"), style: (fg: "#6c7086")), + (kind: Property(Status(Duration)), style: (fg: "#6c7086")), + ], + align: Left, + )), + ), + ] + ), + ), + ], + ), + components: {}, +) diff --git a/ar/.config/rmpc/themes/catppuccin-mocha.ron b/ar/.config/rmpc/themes/catppuccin-mocha.ron new file mode 100644 index 0000000..ef51d14 --- /dev/null +++ b/ar/.config/rmpc/themes/catppuccin-mocha.ron @@ -0,0 +1,327 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] +// Catppuccin Mocha +// Base: #1e1e2e Mantle: #181825 Crust: #11111b +// Surface0: #313244 Surface1: #45475a Surface2: #585b70 +// Overlay0: #6c7086 Overlay1: #7f849c Subtext0: #a6adc8 +// Subtext1: #bac2de Text: #cdd6f4 Lavender: #b4befe +// Blue: #89b4fa Sapphire: #74c7ec Sky: #89dceb +// Teal: #94e2d5 Green: #a6e3a1 Yellow: #f9e2af +// Peach: #fab387 Mauve: #cba6f7 Pink: #f5c2e7 +// Red: #f38ba8 Maroon: #eba0ac Flamingo: #f2cdcd +( + default_album_art_path: None, + format_tag_separator: " | ", + browser_column_widths: [20, 38, 42], + background_color: None, + text_color: "#cdd6f4", + header_background_color: None, + modal_background_color: None, + modal_backdrop: true, + preview_label_style: (fg: "#f9e2af"), + preview_metadata_group_style: (fg: "#f9e2af", modifiers: "Bold"), + highlighted_item_style: (fg: "#cba6f7", modifiers: "Bold"), + current_item_style: (fg: "#1e1e2e", bg: "#89b4fa", modifiers: "Bold"), + borders_style: (fg: "#45475a"), + highlight_border_style: (fg: "#89b4fa"), + symbols: ( + song: "", + dir: "", + playlist: "", + marker: "", + ellipsis: "…", + song_style: (fg: "#89b4fa"), + dir_style: (fg: "#89dceb"), + playlist_style: (fg: "#cba6f7"), + ), + level_styles: ( + info: (fg: "#89b4fa"), + warn: (fg: "#f9e2af"), + error: (fg: "#f38ba8"), + debug: (fg: "#a6e3a1"), + trace: (fg: "#cba6f7"), + ), + progress_bar: ( + symbols: ["━", "━", "●", "─", "─"], + track_style: (fg: "#45475a"), + elapsed_style: (fg: "#cba6f7"), + thumb_style: (fg: "#89b4fa"), + use_track_when_empty: true, + ), + scrollbar: ( + symbols: ["│", "█", "▲", "▼"], + track_style: (fg: "#313244"), + ends_style: (fg: "#45475a"), + thumb_style: (fg: "#89b4fa"), + ), + tab_bar: ( + active_style: (fg: "#1e1e2e", bg: "#89b4fa", modifiers: "Bold"), + inactive_style: (fg: "#6c7086"), + ), + lyrics: ( + timestamp: false + ), + browser_song_format: [ + ( + kind: Group([ + (kind: Property(Track)), + (kind: Text(" ")), + ]) + ), + ( + kind: Group([ + (kind: Property(Artist)), + (kind: Text(" - ")), + (kind: Property(Title)), + ]), + default: (kind: Property(Filename)) + ), + ], + song_table_format: [ + ( + prop: (kind: Property(Artist), + default: (kind: Text("Unknown")) + ), + label_prop: (kind: Text("Artist")), + width: "20%", + ), + ( + prop: (kind: Property(Title), + default: (kind: Text("Unknown")) + ), + label_prop: (kind: Text("Title")), + width: "33%", + ), + ( + prop: (kind: Property(Album), style: (fg: "#a6adc8"), + default: (kind: Text("Unknown Album"), style: (fg: "#a6adc8")) + ), + label_prop: (kind: Text("Album")), + width: "28%", + ), + ( + prop: (kind: Property(Duration), + default: (kind: Text("-")) + ), + label_prop: (kind: Text("Duration")), + width: "12%", + alignment: Right, + ), + ( + prop: (kind: Sticker("playCount"), style: (fg: "#6c7086"), + default: (kind: Text("0"), style: (fg: "#6c7086")) + ), + label_prop: (kind: Text("Plays")), + width: "7%", + alignment: Right, + ), + ], + layout: Split( + direction: Vertical, + panes: [ + ( + size: "4", + pane: Split( + direction: Horizontal, + panes: [ + ( + size: "35", + borders: "LEFT | TOP | BOTTOM", + border_symbols: Inherited(parent: Rounded, bottom_left: "├"), + pane: Component("header_left") + ), + ( + size: "100%", + borders: "ALL", + border_symbols: Inherited(parent: Rounded, top_left: "┬", top_right: "┬", bottom_left: "┴", bottom_right: "┴"), + pane: Component("header_center") + ), + ( + size: "35", + borders: "RIGHT | TOP | BOTTOM", + border_symbols: Inherited(parent: Rounded, bottom_right: "┤"), + pane: Component("header_right") + ), + ] + ) + ), + ( + pane: Pane(Tabs), + borders: "RIGHT | LEFT | BOTTOM", + border_symbols: Rounded, + size: "2", + ), + ( + pane: Pane(TabContent), + size: "100%", + ), + ( + size: "1", + pane: Split( + direction: Horizontal, + panes: [ + ( + size: "100%", + pane: Pane(ProgressBar), + ), + ( + size: "11", + pane: Pane(Property( + content: [ + (kind: Text(" "), style: (fg: "#6c7086")), + (kind: Property(Status(Elapsed)), style: (fg: "#a6adc8")), + (kind: Text("/"), style: (fg: "#6c7086")), + (kind: Property(Status(Duration)), style: (fg: "#6c7086")), + ], + align: Left, + )), + ), + ] + ), + ), + ], + ), + components: { + "state": Pane(Property( + content: [ + (kind: Text("["), style: (fg: "#fab387", modifiers: "Bold")), + (kind: Property(Status(StateV2( ))), style: (fg: "#fab387", modifiers: "Bold")), + (kind: Text("]"), style: (fg: "#fab387", modifiers: "Bold")), + ], align: Left, + )), + "title": Pane(Property( + content: [ + (kind: Property(Song(Title)), style: (fg: "#cdd6f4", modifiers: "Bold"), + default: (kind: Text("No Song"), style: (fg: "#6c7086", modifiers: "Bold"))), + ], align: Center, scroll_speed: 1 + )), + "volume": Split( + direction: Horizontal, + panes: [ + (size: "1", pane: Pane(Property(content: [(kind: Text(""))]))), + (size: "100%", pane: Pane(Volume(kind: Slider(symbols: (filled: "─", thumb: "●", track: "─"))))), + (size: "3", pane: Pane(Property(content: [(kind: Property(Status(Volume)), style: (fg: "#89b4fa"))], align: Right))), + (size: "2", pane: Pane(Property(content: [(kind: Text("%"), style: (fg: "#89b4fa"))]))), + ] + ), + "elapsed_and_bitrate": Pane(Property( + content: [ + (kind: Property(Status(Elapsed)), style: (fg: "#a6adc8")), + (kind: Text(" / "), style: (fg: "#6c7086")), + (kind: Property(Status(Duration)), style: (fg: "#a6adc8")), + (kind: Group([ + (kind: Text(" (")), + (kind: Property(Status(Bitrate))), + (kind: Text(" kbps)")), + ]), style: (fg: "#6c7086")), + ], + align: Left, + )), + "artist_and_album": Pane(Property( + content: [ + (kind: Property(Song(Artist)), style: (fg: "#f9e2af", modifiers: "Bold"), + default: (kind: Text("Unknown"), style: (fg: "#6c7086", modifiers: "Bold"))), + (kind: Text(" - "), style: (fg: "#6c7086")), + (kind: Property(Song(Album)), style: (fg: "#bac2de"), + default: (kind: Text("Unknown Album"), style: (fg: "#6c7086"))), + ], align: Center, scroll_speed: 1 + )), + "states": Split( + direction: Horizontal, + panes: [ + ( + size: "1", + pane: Pane(Empty()) + ), + ( + size: "100%", + pane: Pane(Property(content: [(kind: Property(Status(InputBuffer())), style: (fg: "#89b4fa"), align: Left)])) + ), + ( + size: "6", + pane: Pane(Property(content: [ + (kind: Text("["), style: (fg: "#45475a", modifiers: "Bold")), + (kind: Property(Status(RepeatV2( + on_label: "z", + off_label: "z", + on_style: (fg: "#f9e2af", modifiers: "Bold"), + off_style: (fg: "#45475a", modifiers: "Dim"), + )))), + (kind: Property(Status(RandomV2( + on_label: "x", + off_label: "x", + on_style: (fg: "#f9e2af", modifiers: "Bold"), + off_style: (fg: "#45475a", modifiers: "Dim"), + )))), + (kind: Property(Status(ConsumeV2( + on_label: "c", + off_label: "c", + oneshot_label: "c", + on_style: (fg: "#f9e2af", modifiers: "Bold"), + off_style: (fg: "#45475a", modifiers: "Dim"), + oneshot_style: (fg: "#f38ba8", modifiers: "Dim"), + )))), + (kind: Property(Status(SingleV2( + on_label: "v", + off_label: "v", + oneshot_label: "v", + on_style: (fg: "#f9e2af", modifiers: "Bold"), + off_style: (fg: "#45475a", modifiers: "Dim"), + oneshot_style: (fg: "#f38ba8", modifiers: "Bold"), + )))), + (kind: Text("]"), style: (fg: "#45475a", modifiers: "Bold")), + ], + align: Right + )) + ), + ] + ), + "input_mode": Pane(Property( + content: [ + (kind: Transform(Replace(content: (kind: Property(Status(InputMode()))), replacements: [ + (match: "Normal", replace: (kind: Text(" NORMAL "), style: (fg: "#1e1e2e", bg: "#89b4fa"))), + (match: "Insert", replace: (kind: Text(" INSERT "), style: (fg: "#1e1e2e", bg: "#a6e3a1"))), + ]))) + ], align: Center + )), + "header_left": Split( + direction: Vertical, + panes: [ + (size: "1", pane: Component("state")), + (size: "1", pane: Component("elapsed_and_bitrate")), + ] + ), + "header_center": Split( + direction: Vertical, + panes: [ + (size: "1", pane: Component("title")), + (size: "1", pane: Component("artist_and_album")), + ] + ), + "header_right": Split( + direction: Vertical, + panes: [ + (size: "1", pane: Component("volume")), + (size: "1", pane: Component("states")), + ] + ), + "progress_bar": Split( + direction: Horizontal, + panes: [ + ( + size: "1", + pane: Pane(Empty()) + ), + ( + size: "100%", + pane: Pane(ProgressBar) + ), + ( + size: "1", + pane: Pane(Empty()) + ), + ] + ) + }, +) |
