commit 367711b7a1ef1ea17887d1c7b3115121fe8833943ee46987862a9a288ff2a15a Author: nnwhen Date: Mon Jun 16 02:04:11 2025 +0200 Init diff --git a/foot/foot.ini b/foot/foot.ini new file mode 100755 index 0000000..53efde0 --- /dev/null +++ b/foot/foot.ini @@ -0,0 +1,43 @@ +# -*- conf -*- + +include=/usr/share/foot/themes/monokai-pro + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +font=SourceCodePro:weight=regular:size=10 +font-bold=SourceCodePro:weight=bold:size=10 +font-italic=SourceCodePro:weight=regular:slant=italic:size=10 +font-bold-italic=SourceCodePro:weight=bold:slant=italic:size=10 +font-size-adjustment=0.5 +underline-offset=0.5 + +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary + +[bell] +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[desktop-notifications] +# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body} +# command-action-argument=--action ${action-name}=${action-label} +# close="" +# inhibit-when-focused=yes + +[cursor] +style=block +unfocused-style=hollow +# color= +# blink=no +# blink-rate=500 +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +hide-when-typing=no +alternate-scroll-mode=yes diff --git a/fuzzel/fuzzel.ini b/fuzzel/fuzzel.ini new file mode 100755 index 0000000..d6493e6 --- /dev/null +++ b/fuzzel/fuzzel.ini @@ -0,0 +1,95 @@ +# output= +# font=monospace +# dpi-aware=auto +# prompt="> " +# icon-theme=hicolor +# icons-enabled=yes +# fields=filename,name,generic +# password-character=* +# filter-desktop=no +# fuzzy=yes +# show-actions=no +# terminal=$TERMINAL -e # Note: you cannot actually use environment variables here +# launch-prefix= +# list-executables-in-path=no + +# anchor=center +lines=10 +# width=30 +# tabs=8 +# horizontal-pad=40 +# vertical-pad=8 +# inner-pad=0 + +# image-size-ratio=0.5 + +# line-height= +# letter-spacing=0 + +# layer = top +# exit-on-keyboard-focus-loss = yes + +[colors] +background=181a1bDD +text=e3beb3FF +match=5F0C3BFF +selection=e3beb3FF +selection-text=181a1bFF +selection-match=A46D32FF +border=00000000 + +[border] +width=0 +radius=0 + +[dmenu] +# mode=text # text|index +# exit-immediately-if-empty=no + +[key-bindings] +# cancel=Escape Control+g +# execute=Return KP_Enter Control+y +# execute-or-next=Tab +# execute-input=Shift+Return Shift+KP_Enter +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-line-backward=Control+u +# delete-next=Delete KP_Delete Control+d +# delete-next-word=Mod1+d Control+Delete Control+KP_Delete +# delete-line-forward=Control+k +# prev=Up Control+p +# prev-with-wrap=ISO_Left_Tab +# prev-page=Page_Up KP_Page_Up +# next=Down Control+n +# next-with-wrap=none +# next-page=Page_Down KP_Page_Down + +# custom-N: *dmenu mode only*. Like execute, but with a non-zero +# exit-code; custom-1 exits with code 10, custom-2 with 11, custom-3 +# with 12, and so on. + +# custom-1=Mod1+1 +# custom-2=Mod1+2 +# custom-3=Mod1+3 +# custom-4=Mod1+4 +# custom-5=Mod1+5 +# custom-6=Mod1+6 +# custom-7=Mod1+7 +# custom-8=Mod1+8 +# custom-9=Mod1+9 +# custom-10=Mod1+0 +# custom-11=Mod1+exclam +# custom-12=Mod1+at +# custom-13=Mod1+numbersign +# custom-14=Mod1+dollar +# custom-15=Mod1+percent +# custom-16=Mod1+dead_circumflex +# custom-17=Mod1+ampersand +# custom-18=Mod1+asterix +# custom-19=Mod1+parentleft diff --git a/rmpc/config.ron b/rmpc/config.ron new file mode 100644 index 0000000..5ecc3e8 --- /dev/null +++ b/rmpc/config.ron @@ -0,0 +1,159 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] +( + address: "127.0.0.1:6600", + password: None, + theme: Some("nnwhen"), + cache_dir: Some("~/.cache/rmpc/"), + on_song_change: None, + volume_step: 5, + max_fps: 30, + scrolloff: 0, + wrap_navigation: false, + enable_mouse: true, + status_update_interval_ms: 1000, + select_current_song_on_change: false, + album_art: ( + method: Auto, + max_size_px: (width: 1200, height: 1200), + disabled_protocols: ["http://", "https://"], + vertical_align: Top, + horizontal_align: Center, + ), + keybinds: ( + global: { + "q": Quit, + ":": CommandMode, + "?": ShowHelp, + "I": ShowCurrentSongInfo, + + "<": PreviousTrack, + ">": NextTrack, + "p": PreviousTrack, + "n": NextTrack, + ".": SeekForward, + ",": SeekBack, + "": TogglePause, + "[": VolumeDown, + "]": VolumeUp, + "-": VolumeDown, + "=": VolumeUp, + // "s": Stop, + + "x": ToggleRandom, + "v": ToggleSingle, + // "O": ShowOutputs, + // "z": ToggleRepeat, + // "c": ToggleConsume, + // "P": ShowDecoders, + + "": NextTab, + "": PreviousTab, + "L": NextTab, + "H": PreviousTab, + "z": SwitchToTab("Queue"), + "1": SwitchToTab("Queue"), + "2": SwitchToTab("Artists"), + "3": SwitchToTab("Albums"), + "4": SwitchToTab("Playlists"), + "5": SwitchToTab("Search"), + // "4": SwitchToTab("Album Artists"), + // "2": SwitchToTab("Directories"), + }, + navigation: { + "": Close, + "": Close, + "i": FocusInput, + "/": EnterSearch, + "r": Rename, + + "a": Add, + "A": AddAll, + + "g": Top, + "G": Bottom, + "k": Up, + "j": Down, + "h": Left, + "l": Right, + + "K": MoveUp, + "J": MoveDown, + "D": Delete, + + "": PaneUp, + "": PaneDown, + "": PaneLeft, + "": PaneRight, + "": UpHalf, + "": DownHalf, + + "w": NextResult, + "W": PreviousResult, + "s": Select, + "": InvertSelection, + "": Confirm, + }, + queue: { + "D": DeleteAll, + "": Play, + "": 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"), + // (value: "filename", label: "Filename"), + // (value: "genre", label: "Genre"), + ], + ), + artists: ( + album_display_mode: SplitByDate, + album_sort_by: Date, + ), + tabs: [ + ( + name: "Queue", + pane: Split( + direction: Horizontal, + panes: [(size: "75%", pane: Pane(Queue)), (size: "25%", pane: Pane(AlbumArt))], + ), + ), + // ( + // name: "Directories", + // pane: Pane(Directories), + // ), + ( + name: "Artists", + pane: Pane(Artists), + ), + // ( + // name: "Album Artists", + // pane: Pane(AlbumArtists), + // ), + ( + name: "Albums", + pane: Pane(Albums), + ), + ( + name: "Playlists", + pane: Pane(Playlists), + ), + ( + name: "Search", + pane: Pane(Search), + ), + ], +) + diff --git a/rmpc/themes/nnwhen.ron b/rmpc/themes/nnwhen.ron new file mode 100644 index 0000000..366b11c --- /dev/null +++ b/rmpc/themes/nnwhen.ron @@ -0,0 +1,144 @@ +#![enable(implicit_some)] +#![enable(unwrap_newtypes)] +#![enable(unwrap_variant_newtypes)] +( + default_album_art_path: None, + show_song_table_header: true, + draw_borders: false, + browser_column_widths: [20, 38, 42], + background_color: Some("#181a1b"), + text_color: Some("#ffffff"), + header_background_color: None, + modal_background_color: None, + tab_bar: ( + enabled: true, + active_style: (fg: "#181a1b", bg: "#cebeb3", modifiers: "Bold"), + inactive_style: (), + ), + highlighted_item_style: (fg: "#ce7961", modifiers: "Bold"), + current_item_style: (fg: "#181a1b", bg: "#e3beb3", modifiers: "Bold"), + borders_style: (fg: "#ce7961"), + highlight_border_style: (fg: "#e3beb3"), + symbols: (song: "S", dir: "D", marker: "M", ellipsis: "..."), + progress_bar: ( + symbols: [" ", " ", " "], + track_style: (fg: "#1e2030"), + elapsed_style: (fg: "#ce7961", bg: "#ce7961"), + thumb_style: (fg: "#ce7961", bg: "#ce7961"), + ), + scrollbar: ( + symbols: [" ", "█", "▲", "▼"], + track_style: (), + ends_style: (), + thumb_style: (fg: "#ce7961"), + ), + song_table_format: [ + ( + prop: (kind: Property(Artist), + default: (kind: Text("Unknown")) + ), + width: "20%", + ), + ( + prop: (kind: Property(Title), + default: (kind: Text("Unknown")) + ), + width: "35%", + ), + ( + prop: (kind: Property(Album), style: (fg: "#f1d4cf"), + default: (kind: Text("Unknown Album"), style: (fg: "#f1d4cf")) + ), + width: "30%", + ), + ( + prop: (kind: Property(Duration), + default: (kind: Text("-")) + ), + width: "15%", + alignment: Right, + ), + ], + layout: Split( + direction: Vertical, + panes: [ + ( + pane: Pane(Header), + size: "2", + ), + ( + pane: Pane(Tabs), + size: "3", + ), + ( + pane: Pane(TabContent), + size: "100%", + ), + ( + pane: Pane(ProgressBar), + size: "1", + ), + ], + ), + header: ( + rows: [ + ( + left: [ + (kind: Text("["), style: (fg: "#ce7961", modifiers: "Bold")), + (kind: Property(Status(StateV2(playing_label: "Playing", paused_label: "Paused", stopped_label: "Stopped"))), style: (fg: "#ce7961", modifiers: "Bold")), + (kind: Text("]"), style: (fg: "#ce7961", modifiers: "Bold")) + ], + center: [ + (kind: Property(Song(Title)), style: (modifiers: "Bold"), + default: (kind: Text("No Song"), style: (modifiers: "Bold")) + ) + ], + right: [ + (kind: Property(Widget(Volume)), style: (fg: "#ce7961")) + ] + ), + ( + left: [ + (kind: Property(Status(Elapsed))), + (kind: Text(" / ")), + (kind: Property(Status(Duration))), + ], + center: [ + (kind: Property(Song(Artist)), style: (fg: "#ce7961", modifiers: "Bold"), + default: (kind: Text("Unknown"), style: (fg: "#ce7961", modifiers: "Bold")) + ), + (kind: Text(" - ")), + (kind: Property(Song(Album)), + default: (kind: Text("Unknown Album")) + ) + ], + right: [ + ( + kind: Property(Widget(States( + active_style: (fg: "#f1d4cf", modifiers: "Bold"), + separator_style: (fg: "#f1d4cf"))) + ), + style: (fg: "dark_gray") + ), + ] + ), + ], + ), + browser_song_format: [ + ( + kind: Group([ + (kind: Property(Track)), + (kind: Text(" ")), + ]) + ), + ( + kind: Group([ + (kind: Property(Artist)), + (kind: Text(" - ")), + (kind: Property(Title)), + ]), + default: (kind: Property(Filename)) + ), + ], +) + diff --git a/waybar/config b/waybar/config new file mode 100755 index 0000000..47cc2a3 --- /dev/null +++ b/waybar/config @@ -0,0 +1,104 @@ +{ + "ipc": true, + "id": "0", + "spacing": 5, + "modules-left": [ + "sway/workspaces", + "sway/mode" + ], + "modules-center": [ + "clock" + ], + "modules-right": [ + "group/battery-group", + "wireplumber", + "backlight", + "tray", + "group/net" + ], + "group/net": { + "orientation": "horizontal", + "modules": [ + "network", + "bluetooth" + ] + }, + "group/battery-group": { + "orientation": "horizontal", + "modules": [ + "battery" + ] + }, + "sway/workspaces": { + "format": "{icon}", + "on-click": "activate", + "icon-size": 50, + "sort-by-number": true + }, + "sway/mode": { + "format": "+{}" + }, + "clock": { + "interval": 1, + "format": "{:%Y-%m-%d / %a / %H:%M:%S}", + "tooltip": false + }, + "wireplumber": { + "max-volume": 100, + "format": "({volume}{icon}", + "format-muted": "x{icon}", + "format-icons": [ + "}" + ], + "tooltip-format": "vol: {volume}%" + }, + "battery": { + "states": { + "full": 100, + "high": 95, + "mid": 60, + "warning": 37.5, + "critical": 23 + }, + "format": "-[{capacity}]-", + "format-charging": "+[{capacity}]+" + }, + "backlight": { + "format": "{icon}", + "format-icons": [ + "◎", + "◔", + "◑", + "◕", + "◉" + ], + "tooltip-format": "bkl: {percent}%" + }, + "network": { + "format": "{icon}", + "format-ethernet": "⯳", + "format-wifi": "{icon}", + "format-disconnected": "❖", + "format-icons": [ + "🞚", + "🞜", + "🞛", + "⯁" + ], + "tooltip-format-wifi": "{essid} ({signalStrength}%)", + "tooltip-format-ethernet": "{ifname}", + "tooltip-format-disconnected": "Disconnected" + }, + "bluetooth": { + "format": "-", + "format-disabled": "x", + "format-connected": "+", + "tooltip-format": "{controller_alias}\t{controller_address}", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}" + }, + "tray": { + "icon-size": 12, + "spacing": 8 + } +} diff --git a/waybar/style.css b/waybar/style.css new file mode 100755 index 0000000..cf628cd --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,119 @@ +@define-color foreground #f1d4cf; +@define-color background #181a1b; + +@define-color active #e3beb3; +@define-color urgent #ce7961; + +* { + font-family: "Syne Mono"; + font-size: 15px; + + border: none; + min-height: 0; + margin: 0; + padding: 0; +} + +#waybar { + color: @foreground; + background-color: alpha(@background, 0); +} + +#workspaces { + border-radius: 100px; + + margin: 8px; + background-color: alpha(@background, 0.5); +} + +#workspaces button { + border-radius: 100px; + padding: 0 3px; + min-width: 15px; + margin: 2px; + color: @foreground; + background-color: alpha(@background, 0.99); +} + +#workspaces button.visible { + background-color: @active; + color: @background; +} + +#workspaces button.urgent, +#tray>.needs-attention { + background-color: @urgent; +} + +#mode { + padding: 0 10px; + margin: 8px 0; + color: @background; + background-color: @active; +} + +#clock { + border-radius: 10px; + padding: 2px 12px 0 12px; + margin: 8px; + background-color: alpha(@background, 0.99); +} + +/* Individual Modules */ +#wireplumber, +#network, +#bluetooth { + padding: 0 6px 2px 4px; +} + +#battery { + border-radius: 10px; + padding: 2px 4px 0 4px; + border: solid @background 2px; + color: @background; + background-image: linear-gradient(240deg, alpha(red, 0.4), transparent); +} + +#battery.full { + background-color: lime; +} +#battery.high { + background-color: #f1d4cf; +} +#battery.mid { + background-color: #dda877; +} +#battery.warning { + background-color: orange; +} +#battery.critical { + background-color: red; +} +#battery.charging { + background-image: linear-gradient(30deg, alpha(lime, 0.4), transparent); +} + +#battery-group { +margin: 8px 0; +} + +/* Module Groups */ +#info-group, +#wireplumber, +#net, +#tray { + border-radius: 100px; + padding: 1px 10px; + margin: 8px 0; + background-color: alpha(@background, 0.99); +} +#backlight { + border-radius: 100px; + padding: 0 10px 1px 10px; + margin: 8px 0; + background-color: alpha(@background, 0.99); +} + +#net { + margin-right: 8px; +} \ No newline at end of file