{ config, lib, pkgs, ... }: with lib; let cfg = config.local.gui; in { config = mkIf cfg.enable { programs.waybar = { enable = true; settings = { mainBar = { layer = "top"; position = "top"; height = 20; spacing = 0; modules-left = [ "sway/workspaces" "sway/mode" ]; modules-center = [ "clock" ]; modules-right = [ "privacy" "cpu" "memory" "disk" "temperature" "keyboard-state" "tray" ]; "keyboard-state" = { numlock = true; capslock = true; }; "tray" = { icon-size = 13; spacing = 8; }; "clock" = { interval = 60; format = "{:%A %B %d %Y %H:%M}"; tooltip = false; }; "cpu" = { format = "cpu {usage}%"; tooltip = false; }; "memory" = { format = "mem {percentage}%"; tooltip = true; tooltip-format = "{used}/{total}"; }; "disk" = { format = "disk {specific_used:0.0f}/{specific_total:0.0f}"; unit = "GiB"; tooltip = false; }; "privacy" = { icon-size = 12; }; }; }; style = '' * { font-family: "JetBrains Mono", monospace; font-size: 12px; font-weight: 500; border: none; box-shadow: none; } /* Entire bar: fully transparent, no border */ window#waybar { background: transparent; color: #eaeaea; margin: 0; padding: 0; } /* Optional: small edge breathing room (comment out if you want edge-to-edge) */ /* window#waybar { margin: 3px 6px 0 6px; } */ /* Module containers */ .modules-left, .modules-center, .modules-right { padding: 0; margin: 0 6px; } /* Subtle separators between modules (no boxes) */ .modules-left > widget:not(:first-child), .modules-center > widget:not(:first-child), .modules-right > widget:not(:first-child) { margin-left: 12px; padding-left: 12px; border-left: 1px solid rgba(255, 255, 255, 0.08); } /* Tightest possible workspaces */ #workspaces { padding: 0; margin: 0; } #workspaces button { margin: 0; padding: 0 3px; min-width: 0; border-radius: 0; background: transparent; color: #cfcfcf; } #workspaces button:hover { background: rgba(255, 255, 255, 0.06); } #workspaces button.active, #workspaces button.focused { background: rgba(255, 255, 255, 0.10); color: #ffffff; border-bottom: 2px solid #ffffff; } #workspaces button.urgent { background: rgba(255, 80, 80, 0.25); border-bottom: 2px solid #ff5050; } /* Focused window title: single line, no glow */ #window { padding: 0 6px; margin: 0; color: #dedede; } /* Sway mode indicator: visible only when active, no bloat */ #mode { padding: 0 6px; margin: 0; background: rgba(255, 255, 255, 0.10); color: #ffffff; border-bottom: 2px solid #ffffff; } /* Status modules — keep them flat and compact */ #clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray { padding: 0 6px; margin: 0; background: transparent; color: #eaeaea; } /* States (battery, network, audio) */ #battery.charging { color: #c9ffbf; } #battery.warning:not(.charging) { color: #ffd29a; } #battery.critical:not(.charging) { color: #ff9a9a; } #network.disconnected { color: #ffb4b4; } #pulseaudio.muted { color: #9aa0a6; } /* Tray: compress icons */ #tray > .passive { opacity: 0.6; } #tray > .needs-attention { opacity: 1; } /* Tooltips: clean and readable */ tooltip { background: rgba(30, 30, 30, 0.95); border: 1px solid rgba(255, 255, 255, 0.08); color: #eaeaea; padding: 6px 8px; } /* Remove any leftover borders around everything */ #custom-*, #idle_inhibitor, #privacy, #bluetooth { border: none; background: transparent; margin: 0; padding: 0 6px; } ''; }; }; }