375 lines
8.2 KiB
Plaintext
375 lines
8.2 KiB
Plaintext
{
|
||
"layer": "top",
|
||
"height": 34,
|
||
|
||
//"modules-left": ["hyprland/window"],
|
||
|
||
"modules-center": [
|
||
"hyprland/workspaces",
|
||
"custom/hyprscroll_overflow"
|
||
],
|
||
|
||
"modules-right": [
|
||
"idle_inhibitor",
|
||
"pulseaudio",
|
||
"network",
|
||
"custom/bluetooth",
|
||
/*
|
||
"cpu",
|
||
"memory",
|
||
"temperature",
|
||
*/
|
||
"battery",
|
||
"tray",
|
||
"clock",
|
||
],
|
||
|
||
"custom/hyprscroll_overflow": {
|
||
"exec": "~/.config/waybar/scripts/hyprscroll-overflow.sh",
|
||
"interval": 2,
|
||
"return-type": "json",
|
||
"format": "{}",
|
||
"on-click": "~/.config/waybar/scripts/hyprscroll-menu.sh",
|
||
"tooltip": true
|
||
},
|
||
|
||
/*
|
||
"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",
|
||
},
|
||
|
||
"custom/bluetooth": {
|
||
"exec": "~/.config/waybar/scripts/bluetooth-status.sh",
|
||
"interval": 5,
|
||
"return-type": "json",
|
||
"on-click": "blueman-manager",
|
||
"min-width": 20,
|
||
"format": "{}"
|
||
},
|
||
|
||
"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;
|
||
}
|
||
|
||
#custom-bluetooth {
|
||
overflow: visible;
|
||
font-size: 14px; /* slightly larger */
|
||
}
|
||
|
||
#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;
|
||
}
|
||
|
||
|
||
[id^="custom-"] {
|
||
padding: 0 4px;
|
||
overflow: visible;
|
||
text-align: center;
|
||
}
|