This commit is contained in:
nnwhen 2025-06-16 02:04:11 +02:00
commit 367711b7a1
6 changed files with 664 additions and 0 deletions

43
foot/foot.ini Executable file
View file

@ -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=<inverse foreground/background>
# blink=no
# blink-rate=500
# beam-thickness=1.5
# underline-thickness=<font underline thickness>
[mouse]
hide-when-typing=no
alternate-scroll-mode=yes

95
fuzzel/fuzzel.ini Executable file
View file

@ -0,0 +1,95 @@
# output=<not set>
# 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=<not set>
# 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=<use font metrics>
# 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

159
rmpc/config.ron Normal file
View file

@ -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,
"<Space>": TogglePause,
"[": VolumeDown,
"]": VolumeUp,
"-": VolumeDown,
"=": VolumeUp,
// "s": Stop,
"x": ToggleRandom,
"v": ToggleSingle,
// "O": ShowOutputs,
// "z": ToggleRepeat,
// "c": ToggleConsume,
// "P": ShowDecoders,
"<Tab>": NextTab,
"<S-Tab>": 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: {
"<C-c>": Close,
"<Esc>": 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,
"<C-k>": PaneUp,
"<C-j>": PaneDown,
"<C-h>": PaneLeft,
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"<C-d>": DownHalf,
"w": NextResult,
"W": PreviousResult,
"s": Select,
"<C-s>": InvertSelection,
"<CR>": Confirm,
},
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"),
// (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),
),
],
)

144
rmpc/themes/nnwhen.ron Normal file
View file

@ -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))
),
],
)

104
waybar/config Executable file
View file

@ -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
}
}

119
waybar/style.css Executable file
View file

@ -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;
}