diff --git a/home/home.nix b/home/home.nix index 4193284..5a2b47c 100644 --- a/home/home.nix +++ b/home/home.nix @@ -184,6 +184,15 @@ gtk.enable = true; x11.enable = true; }; + + # Waybar configuration with glassmorphic theme + programs.waybar = { + enable = true; + systemd.enable = true; + }; + + home.file.".config/waybar/config".source = ./waybar-config.json; + home.file.".config/waybar/style.css".source = ./waybar-style.css; # Flatpaks are managed in system/flatpak.nix diff --git a/home/waybar-config.json b/home/waybar-config.json new file mode 100644 index 0000000..abb3c52 --- /dev/null +++ b/home/waybar-config.json @@ -0,0 +1,95 @@ +{ + "layer": "top", + "position": "top", + "height": 40, + "spacing": 4, + + "modules-left": ["hyprland/workspaces", "hyprland/window"], + "modules-center": ["clock"], + "modules-right": ["pulseaudio", "network", "battery", "tray"], + + "hyprland/workspaces": { + "format": "{icon}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10" + }, + "persistent-workspaces": { + "*": 5 + } + }, + + "hyprland/window": { + "format": "{}", + "max-length": 50, + "separate-outputs": true + }, + + "clock": { + "format": "{:%H:%M}", + "format-alt": "{:%A, %B %d, %Y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "weeks-pos": "right", + "on-scroll": 1, + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + } + }, + + "battery": { + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon} {time}", + "format-icons": ["", "", "", "", ""] + }, + + "network": { + "format-wifi": " {essid}", + "format-ethernet": " {ipaddr}", + "format-disconnected": "⚠ Disconnected", + "tooltip-format": "{ifname} via {gwaddr}", + "tooltip-format-wifi": " {essid} ({signalStrength}%)", + "on-click": "nm-connection-editor" + }, + + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": " Muted", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + + "tray": { + "icon-size": 16, + "spacing": 10 + } +} diff --git a/home/waybar-style.css b/home/waybar-style.css new file mode 100644 index 0000000..38a61f4 --- /dev/null +++ b/home/waybar-style.css @@ -0,0 +1,134 @@ +* { + border: none; + border-radius: 0; + font-family: "FiraCode Nerd Font", "JetBrainsMono Nerd Font"; + font-size: 13px; + min-height: 0; +} + +window#waybar { + background: rgba(30, 30, 46, 0.3); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + color: #cdd6f4; +} + +/* Workspaces */ +#workspaces { + background: rgba(49, 50, 68, 0.4); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + margin: 5px 5px 5px 10px; + padding: 0px 5px; + border-radius: 15px; + border: 2px solid rgba(137, 180, 250, 0.3); +} + +#workspaces button { + padding: 0px 10px; + margin: 4px 3px; + border-radius: 10px; + color: #cdd6f4; + background: transparent; + transition: all 0.3s ease; +} + +#workspaces button.active { + background: rgba(137, 180, 250, 0.3); + color: #89b4fa; + border-radius: 10px; + box-shadow: 0 0 15px rgba(137, 180, 250, 0.4); +} + +#workspaces button:hover { + background: rgba(137, 180, 250, 0.2); + border-radius: 10px; +} + +/* Window title */ +#window { + background: rgba(49, 50, 68, 0.4); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + margin: 5px 10px; + padding: 5px 15px; + border-radius: 15px; + border: 2px solid rgba(137, 180, 250, 0.3); + color: #cdd6f4; +} + +/* Clock */ +#clock { + background: rgba(49, 50, 68, 0.4); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + padding: 5px 20px; + margin: 5px 10px; + border-radius: 15px; + border: 2px solid rgba(137, 180, 250, 0.3); + color: #89b4fa; + font-weight: bold; +} + +/* Right modules */ +#pulseaudio, +#network, +#battery, +#tray { + background: rgba(49, 50, 68, 0.4); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + padding: 5px 15px; + margin: 5px 5px; + border-radius: 15px; + border: 2px solid rgba(137, 180, 250, 0.3); +} + +#tray { + margin-right: 10px; +} + +#pulseaudio { + color: #89dceb; +} + +#network { + color: #a6e3a1; +} + +#battery { + color: #f9e2af; +} + +#battery.charging { + color: #a6e3a1; +} + +#battery.warning:not(.charging) { + color: #fab387; +} + +#battery.critical:not(.charging) { + color: #f38ba8; + animation: blink 1s linear infinite; +} + +@keyframes blink { + to { + opacity: 0.5; + } +} + +/* Tooltips */ +tooltip { + background: rgba(30, 30, 46, 0.8); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-radius: 10px; + border: 2px solid rgba(137, 180, 250, 0.3); + color: #cdd6f4; +} + +tooltip label { + color: #cdd6f4; +}