From a00f15adfc74ffbf6da88e8974e81dc4eaf12fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?m=C3=BCde?= Date: Sun, 8 Feb 2026 15:13:39 +0100 Subject: [PATCH] waybar: pill style widgets, whole width bar --- homeConfigurations/muede/waybar.css | 360 +++++++++++++++++++--------- homeConfigurations/muede/waybar.nix | 59 ++--- 2 files changed, 264 insertions(+), 155 deletions(-) diff --git a/homeConfigurations/muede/waybar.css b/homeConfigurations/muede/waybar.css index 0210f6f..a5bd155 100644 --- a/homeConfigurations/muede/waybar.css +++ b/homeConfigurations/muede/waybar.css @@ -13,90 +13,31 @@ /* #endregion */ * { - font-family: sans-serif; + font-family: monospace sans-serif; + font-size: 12px; + } window#waybar { transition-property: background-color; transition-duration: 0.5s; - background: transparent; -} - -window#waybar.hidden { - opacity: 0.2; -} - -window#waybar.termite { - background-color: #3f3f3f; -} - -window#waybar.chromium { - background-color: #000000; - border: none; + /* Gradient border spanning the entire waybar window */ + border-bottom: 4px solid transparent; + background-clip: padding-box, border-box; + background-origin: padding-box, border-box; + background-image: + linear-gradient(90deg, @base01, @base00, @base01, @base00, @base01), + linear-gradient(90deg, @base0C, @base0D, @base0A, @base0D, @base0C); } .modules-left, .modules-center, .modules-right { - border: 0px solid #fff; - padding-bottom: 4px; - background-clip: content-box, padding-box; - background-image: - linear-gradient(90deg, @base01, @base01), - linear-gradient(90deg, #a30262, #4a6bb1); -} - -.modules-center, -.modules-left { - border-bottom-right-radius: 15px; - padding-right: 4px; -} - -.modules-center, -.modules-right { - border-bottom-left-radius: 15px; - padding-left: 4px; -} - -widget { - margin: 0px 4px; -} - -#workspaces, -#window, -#tray { - padding: 4px 6px; - margin-left: 6px; - margin-right: 6px; -} - -#workspaces button { - padding: 0 5px; - background-color: transparent; - color: #ffffff; - border-radius: 15px; -} - -#workspaces button:hover { - background: rgba(0, 0, 0, 0.2); -} - -#workspaces button.focused, -#workspaces button.active { - background-color: @base03; -} - -#workspaces button.urgent { - background-color: #eb4d4b; -} - -#mode { - background-color: #64727d; - box-shadow: inset 0 -3px #ffffff; + padding: 0px 4px 8px 4px; } +/* Common pill styling for all widgets */ #clock, -#battery, #cpu, #memory, #disk, @@ -107,17 +48,154 @@ widget { #wireplumber, #custom-media, #mode, -#idle_inhibitor, #scratchpad, +#mpd, +#custom-weather, +#battery, #power-profiles-daemon, -#mpd { - padding: 0 10px; - color: #ffffff; +#idle_inhibitor, +#custom-swaync, +#bluetooth, +#mpris, +#upower, +#workspaces, +#window, +#tray { + margin: 0px 4px; + padding: 0px 6px; + background: linear-gradient(135deg, @base02, @base01); + border-radius: 16px; + border: 1px solid; + transition: all 0.3s ease; } +/* special treatment for weird sized widgets */ +#custom-wlogout { + padding: 0px 10px 0px 8px; +} +#power-profiles-daemon, +#idle_inhibitor { + padding: 0px 14px 0px 8px; +} + +/* Individual widget colors */ +#workspaces, #window, -#workspaces { - margin: 0 4px; +#tray { + border-color: @base0D; +} + +#workspaces button { + padding: 0 6px; + background-color: transparent; + color: @base05; + border-radius: 12px; + border: none; + transition: all 0.3s ease; +} + +#workspaces button:hover { + background: @base03; +} + +#workspaces button.focused, +#workspaces button.active { + background-color: @base03; + color: @base07; +} + +#workspaces button.urgent { + background-color: @base08; + color: @base00; +} + +#clock { + color: @base07; + border-color: @base0D; +} + +#cpu { + color: @base09; + border-color: @base09; +} + +#memory { + color: @base0E; + border-color: @base0E; +} + +#disk { + color: @base0D; + border-color: @base0D; +} + +#temperature { + color: @base08; + border-color: @base08; +} + +#backlight { + color: @base0A; + border-color: @base0A; +} + +#network { + color: @base0B; + border-color: @base0B; +} + +#pulseaudio, +#wireplumber { + color: @base0D; + border-color: @base0D; +} + +#custom-media { + color: @base0E; + border-color: @base0E; +} + +#mode { + color: @base05; + border-color: @base03; + box-shadow: inset 0 -3px @base05; +} + +#mpd { + color: @base0E; + border-color: @base0E; +} + +#custom-weather { + color: @base0B; + border-color: @base0B; +} + +#battery, +#power-profiles-daemon, +#idle_inhibitor { + color: @base05; + border-color: @base03; +} + +#custom-swaync { + color: @base0E; + border-color: @base0E; +} + +#bluetooth { + color: @base0D; + border-color: @base0D; +} + +#mpris { + color: @base0E; + border-color: @base0E; +} + +#upower { + color: @base0B; + border-color: @base0B; } /* If workspaces is the leftmost module, omit left margin */ @@ -130,6 +208,19 @@ widget { margin-right: 0; } +/* Battery states with colored glows */ +#battery.charging { + box-shadow: 0 0 10px rgba(168, 201, 255, 0.6); + border-color: @base0B; + color: @base0B; +} + +#battery.warning:not(.charging) { + box-shadow: 0 0 10px rgba(209, 98, 164, 0.6); + border-color: @base0A; + color: @base0A; +} + @keyframes blink { to { background-color: #ffffff; @@ -137,31 +228,65 @@ widget { } } -/* Using steps() instead of linear as a timing function to limit cpu usage */ #battery.critical:not(.charging) { - background-color: #f53c3c; - color: #ffffff; + box-shadow: 0 0 10px rgba(243, 139, 168, 0.8); + border-color: @base08; + color: @base08; animation-name: blink; animation-duration: 0.5s; + /* Using steps() instead of linear as a timing function to limit cpu usage */ animation-timing-function: steps(12); animation-iteration-count: infinite; animation-direction: alternate; } -#power-profiles-daemon { - padding-right: 15px; +/* Bluetooth connected state */ +#bluetooth.connected { + box-shadow: 0 0 10px rgba(137, 180, 250, 0.5); } +/* Power profiles with state-appropriate glows */ #power-profiles-daemon.performance { - color: #f53c3c; + box-shadow: 0 0 10px rgba(243, 139, 168, 0.6); + border-color: @base08; + color: @base08; } #power-profiles-daemon.balanced { - color: #2980b9; + box-shadow: 0 0 10px rgba(137, 180, 250, 0.6); + border-color: @base0D; + color: @base0D; } #power-profiles-daemon.power-saver { - color: #2ecc71; + box-shadow: 0 0 10px rgba(168, 201, 255, 0.6); + border-color: @base0B; + color: @base0B; +} + +/* Idle inhibitor with state glow */ +#idle_inhibitor.activated { + box-shadow: 0 0 10px rgba(137, 180, 250, 0.6); + border-color: @base0D; + color: @base0D; +} + +/* MPD states with glows */ +#mpd.playing { + box-shadow: 0 0 10px rgba(168, 201, 255, 0.5); + border-color: @base0B; + color: @base0B; +} + +#mpd.paused { + box-shadow: 0 0 10px rgba(203, 166, 247, 0.5); + border-color: @base0E; + color: @base0E; +} + +#mpd.disconnected, +#mpd.stopped { + color: @base04; } #tray > .passive { @@ -170,35 +295,8 @@ widget { #tray > .needs-attention { -gtk-icon-effect: highlight; - background-color: #eb4d4b; -} - -#language { - padding: 0 5px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state { - padding: 0 0px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state > label { - padding: 0 5px; -} - -#keyboard-state > label.locked { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad.empty { - background-color: transparent; + box-shadow: 0 0 10px rgba(243, 139, 168, 0.8); + border-color: @base08; } #privacy { @@ -206,18 +304,42 @@ widget { } #privacy-item { - padding: 0 5px; - color: white; + /*padding: 4px 10px; + margin: 4px 6px 6px 6px;*/ + color: @base05; + background: linear-gradient(135deg, @base02, @base01); + border-radius: 16px; + transition: all 0.3s ease; } #privacy-item.screenshare { - background-color: #cf5700; + box-shadow: 0 0 10px rgba(209, 98, 164, 0.6); + border-color: @base0A; + color: @base0A; } #privacy-item.audio-in { - background-color: #1ca000; + box-shadow: 0 0 10px rgba(168, 201, 255, 0.6); + border-color: @base0B; + color: @base0B; } #privacy-item.audio-out { - background-color: #0069d4; + box-shadow: 0 0 10px rgba(137, 180, 250, 0.6); + border-color: @base0D; + color: @base0D; +} + +/* Custom wlogout button */ +#custom-wlogout { + color: @base08; + background: linear-gradient(135deg, @base02, @base01); + border-radius: 16px; + border: 1px solid @base08; + transition: all 0.3s ease; +} + +#custom-wlogout:hover { + box-shadow: 0 0 10px rgba(243, 139, 168, 0.5); + border-color: @base08; } diff --git a/homeConfigurations/muede/waybar.nix b/homeConfigurations/muede/waybar.nix index b04fd5b..4cf9532 100644 --- a/homeConfigurations/muede/waybar.nix +++ b/homeConfigurations/muede/waybar.nix @@ -37,37 +37,24 @@ "custom/swaync" ]; modules-right = [ - "group/system-tray" + "mpris" + "wireplumber" + "bluetooth" + "backlight" + "network" + "power-profiles-daemon" + "idle_inhibitor" #"image" - "group/status-infos" + "custom/weather" + "temperature" + "cpu" + "memory" + "disk" + # "battery" + "upower" "custom/wlogout" ]; - "group/system-tray" = { - orientation = "inherit"; - modules = [ - "mpris" - "wireplumber" - "bluetooth" - "backlight" - "network" - "power-profiles-daemon" - "idle_inhibitor" - ]; - }; - "group/status-infos" = { - orientation = "inherit"; - modules = [ - "custom/weather" - "temperature" - "cpu" - "memory" - "disk" - # "battery" - "upower" - ]; - }; - "niri/workspaces" = { format = "{icon}"; }; @@ -117,7 +104,7 @@ icon-size = 14; }; battery = { - format = "{capacity}% {icon}"; + format = "{icon} {capacity}%"; format-icons = [ "󰂎" # 0% "󰁺" # 10% @@ -176,19 +163,19 @@ }; cpu = { interval = 1; - format = "{usage:3}%@{avg_frequency:4}"; + format = " {usage:>3}%@{avg_frequency:>3.2f}"; }; disk = { format = "{free}/{total}"; }; "custom/wlogout" = { - format = " "; + format = ""; tooltip = false; on-click = "wlogout"; min-width = 20; }; idle_inhibitor = { - format = "{icon} "; + format = "{icon}"; format-icons = { activated = ""; deactivated = ""; @@ -213,7 +200,7 @@ # on-click = "playerctl play-pause"; # }; mpris = { - format = "{status_icon} {player} "; + format = "{status_icon} {player}"; tooltip-format = "{player} ({status_icon} {status}) {dynamic}"; status-icons = { playing = ""; @@ -222,7 +209,7 @@ }; }; memory = { - format = "{}%  "; + format = " {}%"; }; power-profiles-daemon = { format = "{icon}"; @@ -236,7 +223,7 @@ }; }; wireplumber = { - format = "{volume}% {icon}"; + format = "{icon} {volume}%"; format-muted = ""; format-icons = [ "" @@ -245,7 +232,7 @@ ]; }; temperature = { - format = "{temperatureC}°C "; + format = " {temperatureC}°C"; }; tray = { spacing = 4; @@ -266,7 +253,7 @@ in { tooltip = true; - format = "{icon} {0} "; + format = "{icon} {0}"; format-icons = { notification = "󱅫"; none = "󰂜";