forked from fabian/nix_config
183 lines
4.7 KiB
Nix
183 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 = "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;
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
}
|