feat(waybar): GNOME-style layout (workspaces | clock | stats+power)

- modules-left: workspaces only (drop window title; GNOME doesn't show it)
- modules-center: prominent clock pill with calendar tooltip styled in
  Kanagawa colors
- modules-right: stats grouped as a single chip ending in a power button,
  rounded only at the outer edges so they read as one unit
- per-module colors removed; right side uses neutral fg_dim, with accent
  reserved for the clock pill and warnings (battery low / network offline)
- workspaces: persistent 1-5, dot indicators, hover lifts to brighter bg
- clock: scroll = shift calendar month/year; right-click = mode toggle
- audio: right-click = mute; backlight: scroll = adjust
- power: clock-style accent, hover red, opens power-menu
This commit is contained in:
Claude 2026-06-09 15:39:06 +00:00
parent 0499624bc3
commit d9b2b709fe
No known key found for this signature in database
2 changed files with 120 additions and 63 deletions

View file

@ -2,62 +2,75 @@
"layer": "top",
"position": "top",
"height": 32,
"spacing": 6,
"spacing": 4,
"margin-top": 4,
"margin-left": 8,
"margin-right": 8,
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-left": ["hyprland/workspaces"],
"modules-center": ["clock"],
"modules-right": ["tray", "network", "pulseaudio", "backlight", "battery", "custom/power"],
"modules-right": ["network", "pulseaudio", "backlight", "battery", "tray", "custom/power"],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"sort-by-number": true,
"format-icons": {
"1": "1", "2": "2", "3": "3", "4": "4", "5": "5",
"6": "6", "7": "7", "8": "8", "9": "9", "10": "10",
"active": "●",
"default": "○"
"default": "○",
"urgent": "◆"
},
"persistent-workspaces": {
"*": 5
}
},
"hyprland/window": {
"format": "{title}",
"max-length": 80,
"separate-outputs": true
},
"clock": {
"format": " {:%a %d %b %H:%M}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
},
"tray": {
"icon-size": 16,
"spacing": 8
"format": "{:%a %d %b %H:%M}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 3,
"weeks-pos": "right",
"on-scroll": 1,
"format": {
"months": "<span color='#dcd7ba'><b>{}</b></span>",
"days": "<span color='#c8c093'>{}</span>",
"weeks": "<span color='#7e9cd8'><i>W{}</i></span>",
"weekdays": "<span color='#e6c384'><b>{}</b></span>",
"today": "<span color='#7e9cd8'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click-right": "mode",
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down"
}
},
"network": {
"format-wifi": " {essid} ({signalStrength}%)",
"format-wifi": " {essid}",
"format-ethernet": " {ifname}",
"format-disconnected": "󰖪 offline",
"tooltip-format": "{ifname} via {gwaddr}",
"tooltip-format-wifi": "{essid} ({signalStrength}%) {ipaddr}/{cidr}\n{frequency}MHz",
"tooltip-format-ethernet": "{ifname} via {gwaddr}\n{ipaddr}/{cidr}",
"on-click": "wezterm start --class waybar-net -- nmtui"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": " muted",
"format-muted": " ",
"format-icons": { "default": ["", "", ""] },
"scroll-step": 5,
"on-click": "pavucontrol"
"on-click": "pavucontrol",
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", ""]
"format-icons": ["", "", "", "", ""],
"on-scroll-up": "brightnessctl set 5%+",
"on-scroll-down": "brightnessctl set 5%-"
},
"battery": {
@ -65,7 +78,13 @@
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""]
"format-icons": ["", "", "", "", ""],
"tooltip-format": "{timeTo} ({power}W)"
},
"tray": {
"icon-size": 16,
"spacing": 8
},
"custom/power": {

View file

@ -1,18 +1,21 @@
/* Kanagawa Wave palette */
/* Kanagawa Wave palette, GNOME-ish layout: workspace dots on the left,
* prominent clock pill in the center, a single neutral stats chip on the
* right ending in a power button. */
@define-color bg #1f1f28;
@define-color bg_alt #2a2a37;
@define-color bg_hover #363646;
@define-color bg_active #2d4f67;
@define-color fg #dcd7ba;
@define-color fg_dim #c8c093;
@define-color blue #7e9cd8;
@define-color teal #7aa89f;
@define-color violet #957fb8;
@define-color orange #ffa066;
@define-color red #e82424;
@define-color yellow #e6c384;
@define-color green #98bb6c;
@define-color fg_subtle #727169;
@define-color accent #7e9cd8;
@define-color accent_alt #957fb8;
@define-color warn #ffa066;
@define-color crit #e82424;
* {
font-family: "JetBrainsMono Nerd Font", monospace;
font-family: "JetBrainsMono Nerd Font", "JetBrains Mono", monospace;
font-size: 13px;
border: none;
border-radius: 0;
@ -20,63 +23,98 @@
}
window#waybar {
background: rgba(31, 31, 40, 0.85);
background: rgba(31, 31, 40, 0.88);
color: @fg;
border-radius: 10px;
border-radius: 12px;
border: 1px solid @bg_alt;
}
#workspaces { padding: 0 6px; }
/* ---------- LEFT: workspaces (Activities-like) ---------- */
#workspaces {
margin: 4px 6px;
padding: 0 4px;
background: transparent;
}
#workspaces button {
padding: 0 8px;
color: @fg_dim;
margin: 0 1px;
color: @fg_subtle;
background: transparent;
border-radius: 6px;
border-radius: 8px;
transition: all 200ms ease;
}
#workspaces button.active {
color: @bg;
background: @blue;
color: @fg;
background: @bg_active;
}
#workspaces button.urgent {
color: @bg;
background: @red;
background: @crit;
}
#workspaces button:hover {
background: @bg_alt;
color: @fg;
background: @bg_hover;
box-shadow: none;
text-shadow: none;
}
#window {
padding: 0 10px;
color: @fg_dim;
font-style: italic;
}
window#waybar.empty #window { background: transparent; }
/* ---------- CENTER: clock pill ---------- */
#clock {
color: @yellow;
padding: 0 12px;
margin: 4px 0;
padding: 0 18px;
color: @fg;
background: @bg_alt;
border-radius: 999px;
font-weight: bold;
letter-spacing: 0.3px;
}
#clock:hover { background: @bg_hover; }
#tray, #network, #pulseaudio, #backlight, #battery, #custom-power {
/* ---------- RIGHT: stats chip ---------- */
#network,
#pulseaudio,
#backlight,
#battery,
#tray {
padding: 0 10px;
margin: 4px 2px;
border-radius: 6px;
margin: 4px 0;
color: @fg_dim;
background: @bg_alt;
}
/* Round only the outer ends of the right-side group so it reads as one chip. */
#network { border-radius: 999px 0 0 999px; padding-left: 14px; }
#tray { padding: 0 8px; }
#custom-power {
margin: 4px 6px 4px 0;
padding: 0 14px;
color: @fg_dim;
background: @bg_alt;
border-radius: 0 999px 999px 0;
}
#network { color: @teal; }
#pulseaudio { color: @violet; }
#backlight { color: @yellow; }
#battery { color: @green; }
#battery.warning { color: @orange; }
#battery.critical { color: @red; }
#custom-power { color: @red; padding: 0 12px; }
/* Hover: lift to brighter bg and full fg. */
#network:hover,
#pulseaudio:hover,
#backlight:hover,
#battery:hover,
#tray:hover,
#custom-power:hover {
color: @fg;
background: @bg_hover;
}
/* Status colors are reserved for warnings only (GNOME-style restraint). */
#battery.warning { color: @warn; }
#battery.critical { color: @crit; }
#network.disconnected { color: @crit; }
#pulseaudio.muted { color: @fg_subtle; }
#custom-power { color: @accent; }
#custom-power:hover { color: @crit; }
tooltip {
background: @bg;
border: 1px solid @bg_alt;
border-radius: 8px;
border-radius: 10px;
padding: 6px;
}
tooltip label { color: @fg; }