forked from fabian/nix
		
	
		
			
				
	
	
		
			182 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  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 = " {usage}%";
 | 
						|
            tooltip = false;
 | 
						|
          };
 | 
						|
          "memory" = {
 | 
						|
            format = " {percentage}%";
 | 
						|
            tooltip = true;
 | 
						|
            tooltip-format = "{used}/{total}";
 | 
						|
          };
 | 
						|
          "disk" = {
 | 
						|
            format = " {specific_used:0.0f}/{specific_total:0.0f}";
 | 
						|
            unit = "GiB";
 | 
						|
            tooltip = false;
 | 
						|
          };
 | 
						|
          "privacy" = {
 | 
						|
            icon-size = 12;
 | 
						|
          };
 | 
						|
        };
 | 
						|
      };
 | 
						|
      style = ''
 | 
						|
        * {
 | 
						|
          font-family: "JetBrainsMono Nerd Font", 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;
 | 
						|
          box-shadow: inset 0 -2px #ffffff;
 | 
						|
        }
 | 
						|
        #workspaces button.urgent {
 | 
						|
          background: rgba(255, 80, 80, 0.25);
 | 
						|
          box-shadow: inset 0 -2px #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;
 | 
						|
          box-shadow: inset 0 -2px #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;
 | 
						|
        }
 | 
						|
      '';
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |