diff --git a/.config/hypr/decoration.lua b/.config/hypr/decoration.lua index aaa3c1a..70bc979 100644 --- a/.config/hypr/decoration.lua +++ b/.config/hypr/decoration.lua @@ -14,12 +14,11 @@ hl.config({ respect_gaps = true, }, col = { - active_border = "rgba(0DB7D4FF)", - inactive_border = "rgba(31313633)", + active_border = "rgba(E29A6EFF)", + inactive_border = "rgba(2C252033)", }, }, }) - hl.config({ dwindle = { preserve_split = true, @@ -27,7 +26,6 @@ hl.config({ smart_resizing = false, }, }) - hl.config({ decoration = { rounding = 10, @@ -35,7 +33,7 @@ hl.config({ enabled = true, range = 16, render_power = 2, - color = "rgba(00000040)", + color = "rgba(1A161340)", }, blur = { enabled = true, @@ -45,18 +43,14 @@ hl.config({ }, }, }) - hl.config({ animations = { enabled = true, }, }) - hl.curve("myBezier", { type = "bezier", points = { {0.05, 0.9}, {0.1, 1.05} } }) - hl.animation({ leaf = "windows", enabled = true, speed = 2, bezier = "myBezier" }) hl.animation({ leaf = "windowsOut", enabled = true, speed = 2, bezier = "myBezier", style = "popin 80%" }) hl.animation({ leaf = "border", enabled = true, speed = 3, bezier = "myBezier" }) hl.animation({ leaf = "fade", enabled = true, speed = 2, bezier = "myBezier" }) hl.animation({ leaf = "workspaces", enabled = true, speed = 2, bezier = "myBezier" }) - diff --git a/.config/waybar/scripts/mediaplayer.sh b/.config/waybar/scripts/mediaplayer.sh new file mode 100755 index 0000000..051e118 --- /dev/null +++ b/.config/waybar/scripts/mediaplayer.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# waybar custom module: shows currently playing media, mac-menu-bar style. +# Outputs a single JSON line: {"text":..., "tooltip":..., "class":..., "alt":...} +# waybar re-runs this on an interval (set in config.jsonc) and re-renders. + +# --status-format lets us build one compact string per call instead of +# separate playerctl invocations for title/artist/status (fewer subprocess +# spawns = faster polling, matters since waybar calls this every ~1s). +STATUS=$(playerctl -a metadata --format '{{status}}|{{artist}}|{{title}}|{{playerName}}' 2>/dev/null | head -n1) + +if [ -z "$STATUS" ]; then + # No MPRIS players running at all -> render nothing (empty text hides + # the module if `"class": "hidden"` is styled to display:none, but + # simplest is just an empty text with no tooltip). + echo '{"text": "", "tooltip": "No media playing", "class": "hidden"}' + exit 0 +fi + +# IFS='|' read splits our pipe-delimited format string into vars. +IFS='|' read -r PSTATUS ARTIST TITLE PLAYER <<< "$STATUS" + +# Playing vs Paused get different CSS classes so you can dim the paused state. +case "$PSTATUS" in + Playing) ICON="" ;; # nerd-font play glyph + Paused) ICON="" ;; # nerd-font pause glyph + *) ICON="" ;; +esac + +# Truncate long titles so the bar doesn't blow out — cut at 30 chars, +# append an ellipsis. This is bash parameter expansion, not a subprocess. +LABEL="${ARTIST} - ${TITLE}" +if [ "${#LABEL}" -gt 32 ]; then + LABEL="${LABEL:0:29}..." +fi + +# Escape double quotes so we don't break the JSON if a title contains one. +LABEL_ESC=$(printf '%s' "$LABEL" | sed 's/"/\\"/g') +TOOLTIP_ESC=$(printf '%s — %s\n(%s)' "$ARTIST" "$TITLE" "$PLAYER" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g') + +CLASS="media-${PSTATUS,,}" # bash ${var,,} lowercases -> "media-playing" / "media-paused" + +echo "{\"text\": \"${ICON} ${LABEL_ESC}\", \"tooltip\": \"${TOOLTIP_ESC}\", \"class\": \"${CLASS}\", \"alt\": \"${PSTATUS}\"}" diff --git a/.config/waybar/style.css b/.config/waybar/style.css index cb09bf3..d18f436 100644 --- a/.config/waybar/style.css +++ b/.config/waybar/style.css @@ -1,32 +1,33 @@ /* ============================================================ - WAYBAR STYLE — Dark Industrial / Refined Utility - Palette: deep charcoal base, amber accents, cool greys + WAYBAR STYLE — Cream Claude / Warm Minimal + Palette: warm cream base, clay/terracotta accent, soft browns ============================================================ */ /* ── Root Variables ───────────────────────────────────────── */ * { - font-family: "JetBrainsMono Nerd Font Propo"; + font-family: "Inter", "SF Pro Display", "Segoe UI", sans-serif; font-size: 13px; + font-weight: 400; border: none; border-radius: 0; } /* ── Bar ──────────────────────────────────────────────────── */ window#waybar { - background: rgba(10, 10, 14, 0); - color: #dcdce8; + background: rgba(26, 22, 19, 0.55); + color: #e8ddd0; } /* ── Tooltip ──────────────────────────────────────────────── */ tooltip { - background: #0e0e12; - border: 1px solid rgba(255, 180, 60, 0.35); - color: #dcdce8; + background: rgba(30, 25, 21, 0.92); + border: 1px solid rgba(196, 108, 74, 0.4); + color: #e8ddd0; padding: 6px 10px; } tooltip label { - color: #dcdce8; + color: #e8ddd0; } /* ── Shared Module Base ───────────────────────────────────── */ @@ -41,53 +42,42 @@ tooltip label { #custom-power { padding: 6px 12px; margin: 5px 0; - color: #dcdce8; - background: rgba(10, 10, 14, 0.3); + color: #e8ddd0; + background: rgba(44, 37, 32, 0.5); transition: color 0.2s ease, background 0.2s ease; } -/* ── Separator dots between modules ──────────────────────── */ -#cpu, -#memory, -#pulseaudio, -#bluetooth, -#custom-micmute, -#battery { - border-left: 1px solid rgba(255, 255, 255, 0); -} - /* ═══════════════════════════════════════════════════════════ LEFT — System Info: Clock · CPU · Memory ═══════════════════════════════════════════════════════════ */ #clock { - font-family: "JetBrainsMono Nerd Font Propo"; - font-weight: 400; + font-weight: 500; font-size: 12.5px; - color: #f0de9c; - letter-spacing: 0.04em; + color: #e29a6e; + letter-spacing: 0.03em; padding-left: 0.4em; - border-left: 3px solid rgba(255, 180, 60, 0.3); + border-left: 3px solid rgba(226, 154, 110, 0.5); margin-left: 8px; } #cpu { - color: #b8d8ee; + color: #c9baa8; } #cpu:hover { - color: #d8f0ff; - background: rgba(160, 196, 216, 0.14); + color: #f0e6d8; + background: rgba(226, 154, 110, 0.16); } #memory { - color: #b0d4be; + color: #c9baa8; } #memory:hover { - color: #ceeede; - background: rgba(157, 191, 173, 0.14); + color: #f0e6d8; + background: rgba(180, 156, 120, 0.2); } @@ -102,12 +92,11 @@ tooltip label { } #workspaces button { - font-family: 'JetBrains Nerd Font Propo'; font-size: 12px; padding: 2px 10px; margin: 4px 2px; - color: #6e6e88; - background: rgba(255, 255, 255, 0.05); + color: #8a7a68; + background: rgba(232, 221, 208, 0.08); border: 1px solid transparent; border-radius: 3px; transition: all 0.15s ease; @@ -115,22 +104,22 @@ tooltip label { } #workspaces button:hover { - color: #c0c0d8; - background: rgba(255, 255, 255, 0.1); - border-color: rgba(255, 255, 255, 0.15); + color: #e8ddd0; + background: rgba(232, 221, 208, 0.14); + border-color: rgba(232, 221, 208, 0.2); } #workspaces button.active { - color: #f0c060; - background: rgba(255, 180, 60, 0.14); - border-color: rgba(255, 180, 60, 0.5); + color: #e29a6e; + background: rgba(226, 154, 110, 0.18); + border-color: rgba(226, 154, 110, 0.55); font-weight: 600; } #workspaces button.urgent { - color: #f08080; - background: rgba(240, 80, 80, 0.15); - border-color: rgba(240, 80, 80, 0.45); + color: #d9695a; + background: rgba(217, 105, 90, 0.18); + border-color: rgba(217, 105, 90, 0.5); } @@ -149,61 +138,61 @@ tooltip label { #tray > .needs-attention { -gtk-icon-effect: highlight; - background-color: rgba(240, 120, 60, 0.25); + background-color: rgba(196, 108, 74, 0.25); } /* ── Audio ────────────────────────────────────────────────── */ #pulseaudio { - color: #c4bce8; + color: #c9a68c; } #pulseaudio:hover { - color: #e0d8ff; - background: rgba(176, 168, 216, 0.14); + color: #f0e6d8; + background: rgba(201, 166, 140, 0.16); } /* ── Bluetooth ────────────────────────────────────────────── */ #bluetooth { - color: #90c8f0; + color: #9ab4c4; } #bluetooth.connected { - color: #70d8ff; + color: #a8c8dc; } #bluetooth:hover { - background: rgba(128, 184, 224, 0.14); + background: rgba(154, 180, 196, 0.16); } /* ── Microphone Mute ──────────────────────────────────────── */ #custom-micmute { - color: #b0d4be; + color: #c9baa8; } #custom-micmute.muted { - color: #585870; + color: #6e6055; } #custom-micmute:hover { - background: rgba(157, 191, 173, 0.14); + background: rgba(201, 186, 168, 0.16); } /* ── Battery ──────────────────────────────────────────────── */ #battery { - color: #b8dc98; + color: #a8bc90; } #battery.charging, #battery.plugged { - color: #d4f098; + color: #c0d4a0; } #battery.warning:not(.charging) { - color: #eecb68; + color: #dcb06a; } #battery.critical:not(.charging) { - color: #f07060; + color: #e0796a; animation: battery-pulse 1.5s ease-in-out infinite; } @@ -220,19 +209,19 @@ tooltip label { } #battery:hover { - background: rgba(168, 204, 136, 0.14); + background: rgba(168, 188, 144, 0.16); } /* ── Power Button ─────────────────────────────────────────── */ #custom-power { - color: #d07070; + color: #e29a6e; font-size: 14px; padding: 2px 14px 2px 12px; margin-right: 8px; - border-right: 3px solid rgba(255, 0, 0, 0.3); + border-right: 3px solid rgba(196, 108, 74, 0.4); } #custom-power:hover { - color: #f09090; - background: rgba(200, 60, 60, 0.2); + color: #c0392b; + background: rgba(196, 108, 74, 0.2); } diff --git a/.config/wofi/style.css b/.config/wofi/style.css index 0a8a6ee..58f84ec 100644 --- a/.config/wofi/style.css +++ b/.config/wofi/style.css @@ -1,50 +1,43 @@ /* ~/.config/wofi/style.css */ - -@define-color base #1e1e2e; -@define-color mantle #181825; -@define-color surface #313244; -@define-color overlay #6c7086; -@define-color text #cdd6f4; -@define-color subtext #a6adc8; -@define-color blue #89b4fa; -@define-color lavndr #b4befe; +@define-color base rgba(26, 22, 19, 0.75); +@define-color mantle rgba(20, 17, 14, 0.7); +@define-color surface rgba(232, 221, 208, 0.1); +@define-color overlay #8a7a68; +@define-color text #e8ddd0; +@define-color subtext #c9baa8; +@define-color accent #e29a6e; +@define-color accent2 #c46c4a; window { background-color: transparent; - font-family: "JetBrainsMono Nerd Font", "Inter", sans-serif; + font-family: "Inter", "SF Pro Display", "Segoe UI", sans-serif; font-size: 14px; } - #outer-box { background-color: @base; - border: 2px solid @surface; + border: 1px solid rgba(226, 154, 110, 0.35); border-radius: 14px; padding: 12px; } - #input { background-color: @mantle; color: @text; - border: 1px solid @surface; + border: 1px solid rgba(232, 221, 208, 0.12); border-radius: 10px; padding: 10px 14px; margin-bottom: 10px; - caret-color: @blue; + caret-color: @accent; } - #input:focus { - border-color: @blue; + border-color: @accent; } - #scroll { margin: 0; border: none; } - #inner-box { background-color: transparent; } - #entry { padding: 8px 10px; border-radius: 8px; @@ -52,32 +45,26 @@ window { color: @subtext; transition: background-color 120ms ease, color 120ms ease; } - #entry:selected, #entry:hover { background-color: @surface; color: @text; outline: none; } - #entry:selected { - box-shadow: inset 3px 0 0 0 @lavndr; + box-shadow: inset 3px 0 0 0 @accent; } - /* node type `image`, not `img` — this is the one that actually moves the icon */ #entry image { margin-right: 18px; -gtk-icon-transform: scale(0.9); } - #entry #text { color: inherit; } - #entry:selected #text { font-weight: 600; } - #unselected { color: @subtext; } diff --git a/.config/wofi/wallpaper.css b/.config/wofi/wallpaper.css index f1d6d8e..2518210 100644 --- a/.config/wofi/wallpaper.css +++ b/.config/wofi/wallpaper.css @@ -1,61 +1,50 @@ -/* wallpaper.sh picker — dark glass, cyan accent */ - +/* wallpaper.sh picker — dark glass, terracotta accent */ window { - background-color: rgba(16, 18, 27, 0.88); - border: 1px solid rgba(122, 162, 247, 0.35); + background-color: rgba(26, 22, 19, 0.85); + border: 1px solid rgba(226, 154, 110, 0.35); border-radius: 16px; - font-family: "JetBrainsMono Nerd Font", monospace; + font-family: "Inter", "SF Pro Display", "Segoe UI", sans-serif; } - #input { margin: 12px; padding: 10px 14px; - border: 1px solid rgba(122, 162, 247, 0.25); + border: 1px solid rgba(226, 154, 110, 0.25); border-radius: 10px; - background-color: rgba(26, 29, 42, 0.9); - color: #c0caf5; + background-color: rgba(20, 17, 14, 0.85); + color: #e8ddd0; font-size: 15px; } - #input:focus { - border-color: rgba(125, 207, 255, 0.8); + border-color: rgba(226, 154, 110, 0.8); } - #inner-box { margin: 6px 12px 12px 12px; background-color: transparent; } - #outer-box { background-color: transparent; } - #scroll { margin: 0px; } - #entry { margin: 6px; padding: 6px; border: 2px solid transparent; border-radius: 12px; - background-color: rgba(36, 40, 59, 0.5); + background-color: rgba(44, 37, 32, 0.5); } - #entry:selected { - border-color: #7dcfff; - background-color: rgba(125, 207, 255, 0.15); + border-color: #e29a6e; + background-color: rgba(226, 154, 110, 0.15); } - #entry image { border-radius: 8px; } - #text { - color: #c0caf5; + color: #c9baa8; margin: 0px 4px; } - #entry:selected #text { color: #ffffff; }