{ "layer": "top", "height": 34, //"modules-left": ["hyprland/window"], "modules-center": ["hyprland/workspaces" ], "modules-right": [ "idle_inhibitor", "pulseaudio", "network", // "cpu", // "memory", // "temperature", "battery", "tray", "clock", "custom/notifications", ], /* "custom/notifications": { "tooltip": false, "return-type": "json", "exec-if": "which swaync-client", "exec": "swaync-client -swb", "format": "{icon}", "format-icons": { "notification": "", "none": "", "dnd-notification": "󰂠", "dnd-none": "󰪓", }, "on-click": "swaync-client -t", "on-click-right": "swaync-client -d", "on-click-middle": "swaync-client -dn", }, */ "idle_inhibitor": { "tooltip": true, "format": "{icon}", "format-icons": { "activated": "  ", "deactivated": " 󰒲 ", }, "tooltip-format-activated": "Staying awake", "tooltip-format-deactivated": "Might sleep....", }, "pulseaudio": { "format": "{volume}% {icon}", "format-bluetooth": "{volume}% {icon}", "format-muted": "", "format-icons": { "headphones": "", "headset": "", "phone": "", "portable": "", "default": ["", ""], }, "on-click": "pavucontrol", }, "network": { "format-wifi": " ({bandwidthDownBits})", "format-ethernet": " ({bandwidthDownBits})", "format-disconnected": "Disconnected ⚠", "tooltip-format-wifi": "{essid} ({signalStrength}%)", "tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}", "on-click": "impala", "on-click-right": "nm-connection-editor", }, "cpu": { "format": "{usage}%  ", "tooltip": false, }, "memory": { "format": "{percentage}%  ", }, "temperature": { "format": "{temperatureC}°C ", "tooltip": false, }, "tray": { "spacing": 10, "icon-size": 14, }, "clock": { "format": "{:%a, %d %b %Y - %H:%M}", "tooltip": false, "on-click": "flatpak run eu.betterbird.Betterbird -calendar", }, "battery": { "bat": "BAT0", "states": { "good": 95, "warning": 30, "critical": 15, }, "format": "{capacity}% {icon}", "format-charging": "{capacity}% 󰂄", "format-plugged": "{capacity}%  ", "format-icons": ["󰁺", "󰁼", "󰁾", "󰂀", "󱈏 "], }, } /* --- Hyprland palette (ported) --- */ @define-color base rgba(30, 30, 46, 1.0); /* 1e1e2eff */ @define-color inactive rgba(89, 89, 89, 0.667); /* 595959aa */ @define-color blue rgba(51, 204, 255, 0.933); /* 33ccffee */ @define-color green rgba(0, 255, 153, 0.933); /* 00ff99ee */ /* extra colors you referenced but didn’t define */ @define-color text rgba(255, 255, 255, 1.0); @define-color surface1 rgba(255, 255, 255, 0.08); @define-color subtext1 rgba(255, 255, 255, 0.35); @define-color red rgba(255, 0, 0, 0.90); @define-color overlay1 rgba(255, 255, 255, 0.35); @define-color yellow rgba(255, 215, 0, 0.95); * { font-family: Aporetic Sans Mono, Iosevka Nerd Font, Roboto, Helvetica, Arial, sans-serif; font-size: 13px; } window#waybar { background-color: transparent; color: @text; transition-property: background-color; border-bottom: 0px solid rgba(0, 0, 0, 0); transition-duration: 0.5s; } #workspaces button { padding: 0px 1px; min-width: 80px; background-color: transparent; color: @text; border: 2px solid @inactive; border-radius: 10px; } #custom-notifications.empty { color: @overlay1; } #custom-notifications.unread { color: @yellow; } #workspaces button:hover { background-color: @surface1; color: @text; } #workspaces button.active { padding: 0px 1px; min-width: 80px; color: @text; border-radius: 10px; font-weight: bold; border: 1px solid transparent; background: linear-gradient(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.15)) padding-box, linear-gradient(45deg, @blue, @green) border-box; } #custom-hyprscroll_overflow.overflow { padding: 0px 1px; min-width: 80px; color: @text; border-radius: 10px; font-weight: bold; border: 1px dashed transparent; background: linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05)) padding-box, linear-gradient(45deg, @blue, @green) border-box; } #custom-hyprscroll_overflow.overflow { background: linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05)) padding-box, linear-gradient(45deg, @blue, @green) border-box; } #custom-hyprscroll_overflow.hidden { padding: 0; margin: 0; min-width: 0; border: 0; background: transparent; opacity: 0; } #clock, #idle_inhibitor, #battery, #cpu, #memory, #temperature, #network, #pulseaudio, #tray { margin: 0 5px; padding: 0 2px; } #idle_inhibitor.activated { background-color: @green; } #battery.charging { color: @green; } @keyframes blink { to { background-color: #ffffff; color: black; } } #battery.warning:not(.charging) { color: white; animation-name: blink; animation-duration: 0.5s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } #window, #workspaces { margin: 0 4px; } .modules-left > widget:first-child > #workspaces { margin-left: 0; } .modules-right > widget:last-child > #workspaces { margin-right: 0; } #network.disconnected { background-color: @red; } #temperature.critical { background-color: @red; } /* ========================================================= * Notifications * ========================================================= */ #custom-notifications { margin: 0 4px; padding: 0 4px; min-width: 0; } #custom-notifications.empty { color: @overlay1; } #custom-notifications.unread { color: @yellow; } /* ========================================================= * Hyprscroll overflow indicator (custom/hyprscroll_overflow) * States: .ok, .overflow, .error * ========================================================= */ /* Default (no overflow): subtle pill, still hoverable for tooltip */ #custom-hyprscroll_overflow.ok { padding: 0px 1px; min-width: 80px; color: @subtext1; border-radius: 10px; /* subtle outline so you know it's there */ border: 1px solid rgba(255, 255, 255, 0.12); background: rgba(255, 255, 255, 0.03); } /* Make it feel interactive (hover) */ #custom-hyprscroll_overflow.ok:hover { color: @text; background-color: @surface1; border: 1px solid rgba(255, 255, 255, 0.18); } /* Overflow state: you already have this; keep it. Optional: add hover tweak so it "pops" a bit. */ #custom-hyprscroll_overflow.overflow:hover { background: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1)) padding-box, linear-gradient(45deg, @blue, @green) border-box; } /* Error state: clear but not screaming */ #custom-hyprscroll_overflow.error { padding: 0px 1px; min-width: 80px; color: @text; border-radius: 10px; border: 1px solid rgba(255, 0, 0, 0.55); background: rgba(255, 0, 0, 0.15); font-weight: bold; } /* Optional: if you keep .hidden in the script for any reason */ #custom-hyprscroll_overflow.hidden { padding: 0; margin: 0; min-width: 0; border: 0; background: transparent; opacity: 0; }