From e63236cfccad457503c96c77e0b19fe3178a59b0 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 25 Nov 2025 03:10:38 -0600 Subject: [PATCH] feat: playing around with mpd and rmpc --- modules/home/cli/fun/mpd/default.nix | 17 +- .../fun/rmpc/config/catppuccin-macchiato.ron | 168 +++++++++--------- modules/home/cli/fun/rmpc/config/config.ron | 38 +--- modules/home/cli/fun/rmpc/default.nix | 0 modules/home/gui/apps/test/default.nix | 0 5 files changed, 101 insertions(+), 122 deletions(-) mode change 100644 => 100755 modules/home/cli/fun/mpd/default.nix mode change 100644 => 100755 modules/home/cli/fun/rmpc/config/catppuccin-macchiato.ron mode change 100644 => 100755 modules/home/cli/fun/rmpc/config/config.ron mode change 100644 => 100755 modules/home/cli/fun/rmpc/default.nix mode change 100644 => 100755 modules/home/gui/apps/test/default.nix diff --git a/modules/home/cli/fun/mpd/default.nix b/modules/home/cli/fun/mpd/default.nix old mode 100644 new mode 100755 index d37423f..47ba57b --- a/modules/home/cli/fun/mpd/default.nix +++ b/modules/home/cli/fun/mpd/default.nix @@ -6,6 +6,10 @@ extraConfig = '' audio_output { type "pulse" + name "PulseAudio" + } + audio_output { + type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" @@ -18,11 +22,20 @@ format = { hosts = [ "localhost:6600" ]; details = "$title"; - state = "$artist"; + state = "đŸ„’đŸ’Š$artist"; display_type = "state"; }; }; }; }; - programs.cava.enable = true; + + programs.cava = { + enable = true; + settings = { + input = { + method = "fifo"; + source = "/tmp/mpd.fifo"; + }; + }; + }; } diff --git a/modules/home/cli/fun/rmpc/config/catppuccin-macchiato.ron b/modules/home/cli/fun/rmpc/config/catppuccin-macchiato.ron old mode 100644 new mode 100755 index e5df928..ed27b3c --- a/modules/home/cli/fun/rmpc/config/catppuccin-macchiato.ron +++ b/modules/home/cli/fun/rmpc/config/catppuccin-macchiato.ron @@ -5,62 +5,62 @@ show_song_table_header: false, draw_borders: true, browser_column_widths: [20, 38, 42], - background_color: "#2e3440", + background_color: "#24273a", modal_backdrop: true, - text_color: "#d8dee9", - header_background_color: "#2e3440", - modal_background_color: "#2e3440", - preview_label_style: (fg: "#b48ead"), - preview_metadata_group_style: (fg: "#81a1c1"), + text_color: "#b7bdf8", + header_background_color: "#24273a", + modal_background_color: "#24273a", + preview_label_style: (fg: "#cba6f7"), + preview_metadata_group_style: (fg: "#8aadf4"), song_table_album_separator: None, tab_bar: ( enabled: true, - active_style: (fg: "#2e3440", bg: "#81A1C1", modifiers: "Bold"), - inactive_style: (fg: "#d8dee9", bg: "#2e3440"), + active_style: (fg: "#24273a", bg: "#8aadf4", modifiers: "Bold"), + inactive_style: (fg: "#b7bdf8", bg: "#24273a"), ), - 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"), + highlighted_item_style: (fg: "#a6e3a1", modifiers: "Bold"), + current_item_style: (fg: "#24273a", bg: "#8aadf4", modifiers: "Bold"), + borders_style: (fg: "#8aadf4", modifiers: "Bold"), + highlight_border_style: (fg: "#8aadf4"), symbols: (song: "󰝚 ", dir: " ", playlist: "ó°Čž ", marker: "* ", ellipsis: "...", - song_style: (fg: "#81a1c1"), dir_style: (fg: "#81a1c1") + song_style: (fg: "#8aadf4"), dir_style: (fg: "#8aadf4") ), progress_bar: ( - symbols: [" ", "█", "█", " ", " "], - track_style: (fg: "#1e2030"), - elapsed_style: (fg: "blue"), - thumb_style: (fg: "blue"), + symbols: ["", "█", "", "█", ""], + track_style: (fg: "#24273a"), + elapsed_style: (fg: "#8aadf4"), + thumb_style: (fg: "#8aadf4", bg: "#24273a"), ), scrollbar: ( symbols: ["│", "█", "â–Č", "â–Œ"], track_style: (), ends_style: (), - thumb_style: (fg: "blue"), + thumb_style: (fg: "#8aadf4"), ), song_table_format: [ ( prop: (kind: Property(Artist), default: (kind: Text("Unknown")) ), - width: "20%", + width: "26%", ), ( prop: (kind: Property(Title), default: (kind: Text("Unknown")) ), - width: "35%", + width: "39%", ), ( - prop: (kind: Property(Album), style: (fg: "white"), - default: (kind: Text("Unknown Album"), style: (fg: "white")) + prop: (kind: Property(Album), style: (fg: "#b7bdf8"), + default: (kind: Text("Unknown Album"), style: (fg: "#b7bdf8")) ), - width: "30%", + width: "33%", ), ( prop: (kind: Property(Duration), default: (kind: Text("-")) ), - width: "15%", + width: "8%", alignment: Right, ), ], @@ -84,106 +84,102 @@ ]), 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"), + info: (fg: "#a6e3a1", bg: "#24273a"), + warn: (fg: "#f9e2af", bg: "#24273a"), + error: (fg: "#f38ba8", bg: "#24273a"), + debug: (fg: "#fab387", bg: "#24273a"), + trace: (fg: "#cba6f7", bg: "#24273a"), ), components: { "custom_song_table_header": Split(borders: "ALL", direction: Horizontal, panes: [ - (size: "5", pane: Pane(Property(content: [ - (kind: Text(" ó°©ł"), style: (fg: "#81a1c1")), + (size: "27%", pane: Pane(Property(content: [ + (kind: Text("  "), style: (fg: "#8aadf4")), + (kind: Text(" Artist "), style: (fg: "#b7bdf8")) ], align: Left)) ), - (size: "21%", pane: Pane(Property(content: [ - (kind: Text("Artist "), style: (fg: "#d8dee9")), - (kind: Text(""), style: (fg: "#81a1c1")) - ], align: Left)) - ), - (size: "39%", pane: Pane(Property(content: [ - (kind: Text("Title "), style: (fg: "#d8dee9")), - (kind: Text(""), style: (fg: "#81a1c1")) + (size: "36%", pane: Pane(Property(content: [ + (kind: Text(" "), style: (fg: "#8aadf4")), + (kind: Text("Title "), style: (fg: "#b7bdf8")) ], align: Left)) ), (size: "33%", pane: Pane(Property(content: [ - (kind: Text("Album "), style: (fg: "#d8dee9")), - (kind: Text("󰀄"), style: (fg: "#81a1c1")) + (kind: Text("󰀄 "), style: (fg: "#8aadf4")), + (kind: Text("Album "), style: (fg: "#b7bdf8")) ], align: Left)) ), - (size: "7%", pane: Pane(Property(content: [ - (kind: Text("Length "), style: (fg: "#d8dee9")), - (kind: Text(" "), style: (fg: "#81a1c1")) + (size: "9%", pane: Pane(Property(content: [ + (kind: Text(" "), style: (fg: "#8aadf4")), + (kind: Text("Length "), style: (fg: "#b7bdf8")) ], align: Right)) ), (size: "1", pane: Pane(Property(content: [ - (kind: Text(" "), style: (fg: "#81a1c1")), + (kind: Text(" "), style: (fg: "#8aadf4")), ], align: Left)) ), ]), "custom-header": Split(direction: Horizontal, panes: [ (size: "33%", pane: Split(direction: Vertical, 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(Widget(ScanStatus)), style: (fg: "#d8dee9", modifiers: "Bold")) + (kind: Text(""), style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(StateV2(playing_label: "  ", paused_label: "  ", stopped_label: "  "))),style: (fg: "#b7bdf8")), + (kind: Text(" "), style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Widget(ScanStatus)), style: (fg: "#b7bdf8", modifiers: "Bold")) ], align: Left)) ), (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: Property(Status(Bitrate)),default: (kind: Text("îȘœ ")),style: (fg: "#d8dee9")), - (kind: Text(" kbps"),style: (fg: "#81a1c1")), - (kind: Text(" ]"),style: (fg: "#81a1c1", modifiers: "Bold")) + (kind: Text("[ "),style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(Elapsed)),style: (fg: "#b7bdf8")), + (kind: Text(" / "),style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(Duration)),style: (fg: "#b7bdf8")), + (kind: Text(" | "),style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(Bitrate)),default: (kind: Text("îȘœ ")),style: (fg: "#b7bdf8")), + (kind: Text(" kbps"),style: (fg: "#8aadf4")), + (kind: Text(" ]"),style: (fg: "#8aadf4", modifiers: "Bold")) ], align: Left)) ), ]) ), (size: "34%", pane: Split(direction: Vertical, 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"))) + (kind: Property(Song(Title)), style: (fg: "#b7bdf8",modifiers: "Bold"), + default: (kind: Property(Song(Filename)), style: (fg: "#b7bdf8",modifiers: "Bold"))) ], align: Center)) ), (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"))) + (kind: Property(Song(Artist)), style: (fg: "#7dc4e4"), + default: (kind: Text("Unknown Artist"), style: (fg: "#89dceb"))), + (kind: Text(" - "), style: (fg: "#b7bdf8")), + (kind: Property(Song(Album)),style: (fg: "#8aadf4" ), + default: (kind: Text("Unknown Album"), style: (fg: "#8aadf4"))) ], align: Center)) ), ]) ), (size: "33%", pane: Split(direction: Vertical, panes: [ (size: "100%", pane: Pane(Property(content: [ - (kind: Text(" 󱥏"), style: (fg: "#81a1c1", modifiers: "Bold")), - (kind: Property(Status(Volume)), style: (fg: "#d8dee9")), - (kind: Text("% "), style: (fg: "#81a1c1", modifiers: "Bold")) + (kind: Text(" ó°•Ÿ "), style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(Volume)), style: (fg: "#b7bdf8")), + (kind: Text("%"), style: (fg: "#b7bdf8", modifiers: "Bold")) ], align: Right)) ), (size: "100%", pane: Pane(Property(content: [ - (kind: Text("[ "),style: (fg: "#81a1c1", modifiers: "Bold")), - (kind: Property(Status(QueueLength())),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")), + (kind: Text("[ "),style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(QueueLength())),style: (fg: "#b7bdf8")), + (kind: Text(" 󰎍 | "),style: (fg: "#8aadf4", modifiers: "Bold")), + (kind: Property(Status(QueueTimeTotal(separator: " "))),style: (fg: "#b7bdf8")), + (kind: Text(" 󱎫 | "),style: (fg: "#8aadf4", 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")), + on_style: (fg: "#b7bdf8", modifiers: "Bold"), off_style: (fg: "#45475a", modifiers: "Bold"))))), + (kind: Text(" | "),style: (fg: "#8aadf4", 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")), + on_style: (fg: "#b7bdf8", modifiers: "Bold"), off_style: (fg: "#45475a", modifiers: "Bold"))))), + (kind: Text(" | "),style: (fg: "#8aadf4", 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")), + on_style: (fg: "#b7bdf8", modifiers: "Bold"), off_style: (fg: "#45475a", modifiers: "Bold"))))), + (kind: Text(" | "),style: (fg: "#8aadf4", 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")), + on_style: (fg: "#b7bdf8", modifiers: "Bold"), off_style: (fg: "#45475a", modifiers: "Bold"))))), + (kind: Text(" ]"),style: (fg: "#8aadf4", modifiers: "Bold")), ], align: Right)) ), ]) @@ -192,13 +188,13 @@ }, cava: ( bar_symbols: ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'], - bar_width: 1, bar_spacing: 1, - bg_color: "#2e3440", + bar_width: 1, bar_spacing: 0, + bg_color: "#24273a", bar_color: Gradient({ - 0: "#5e81ac", - 33: "#81a1c1", - 67: "#88c0d0", - 100: "#8fbcbb", + 0: "#8aadf4", + 33: "#89dceb", + 67: "#8aadf4", + 100: "#91d7e3", }) ), ) diff --git a/modules/home/cli/fun/rmpc/config/config.ron b/modules/home/cli/fun/rmpc/config/config.ron old mode 100644 new mode 100755 index 5f03f93..0289e3b --- a/modules/home/cli/fun/rmpc/config/config.ron +++ b/modules/home/cli/fun/rmpc/config/config.ron @@ -129,12 +129,12 @@ ), (size: "30%", borders: "NONE", pane: Split(direction: Vertical, panes: [ (size: "0.45r", borders: "ALL", pane: Pane(AlbumArt)), - (size: "100%", borders: "NONE", pane: Pane(Lyrics)), + (size: "100%", borders: "ALL", pane: Pane(Cava)), ]) ), ]) ), - (name: "Directories", pane: Split(direction: Horizontal,panes: [ + (name: "Collection", pane: Split(direction: Horizontal,panes: [ (size: "100%", borders: "ALL", pane: Pane(Directories)), ]) ), @@ -142,44 +142,14 @@ (size: "100%", borders: "ALL", pane: Pane(Playlists)), ]) ), - (name: "Artists", pane: Split(direction: Horizontal, panes: [ - (size: "100%", borders: "ALL", pane: Pane(Artists)), - ]) - ), - (name: "Albums", pane: Split(direction: Horizontal, panes: [ - (size: "100%", borders: "ALL", pane: Pane(Albums)), - ]) - ), - (name: "Album Artists", pane: Split(direction: Horizontal, panes: [ - (size: "100%", borders: "ALL", pane: Pane(AlbumArtists)), - ]) - ), - (name: "Genre", pane: Split(direction: Horizontal, panes: [ - (size: "100%", borders: "ALL", pane: Pane(Browser(root_tag: "genre", separator: ";"))), - ]) - ), - (name: "Queue", pane: Split(direction: Horizontal, panes: [ - (size: "100%", borders: "ALL", pane: Pane(Queue)) - ]) - ), - (name: "Show",pane: Split(direction: Vertical, panes: [ - (size: "50%", pane: Split(direction: Horizontal, panes: [ - (size: "22%", borders: "ALL", pane: Pane(Queue)), - (size: "56%", borders: "ALL", pane: Pane(Lyrics)), - (size: "22%", borders: "ALL", pane: Pane(AlbumArt)), - ]) - ), - (size: "50%", borders: "ALL", pane: Pane(Cava)), - ]) - ), (name: "Search", pane: Split(direction: Horizontal, panes: [ (size: "100%", borders: "ALL", pane: Pane(Search)), ]) ), ], cava: ( - framerate: 60, autosens: true, sensitivity: 100, - lower_cutoff_freq: 50, higher_cutoff_freq: 10000, + framerate: 200, autosens: true, sensitivity: 100, + lower_cutoff_freq: 50, higher_cutoff_freq: 15000, input: ( method: Fifo, source: "/tmp/mpd.fifo", diff --git a/modules/home/cli/fun/rmpc/default.nix b/modules/home/cli/fun/rmpc/default.nix old mode 100644 new mode 100755 diff --git a/modules/home/gui/apps/test/default.nix b/modules/home/gui/apps/test/default.nix old mode 100644 new mode 100755