{
config,
lib,
options,
...
}:
{
options.desktop.components.waybar.enable = lib.mkEnableOption "waybar";
config.programs.waybar = {
enable = config.desktop.components.waybar.enable;
settings = {
main = {
modules-left = [
"sway/workspaces"
"tray"
];
modules-center = [ "clock" ];
modules-right = [
"backlight"
"battery"
"network"
"wireplumber"
"cpu"
"memory"
];
backlight = {
format = "{icon}";
format-icons = [
""
""
];
tooltip-format = "{percent}%";
};
battery = {
format = "{icon}";
format-critical = "{icon} ({capacity}%)";
format-icons = [
""
""
""
""
];
format-time = "{H}h{m}m";
format-warning = "{icon} ({capacity}%)";
states = {
critical = 15;
warning = 25;
};
tooltip-format = "{time} remaining, {health}% battery health";
tooltip-format-critical = "plug yo shit in NOW!!";
};
cpu.format = "{avg_frequency} GHz";
clock = {
format = "{:%A, %b %d %Y - %H:%M %Z}";
# i am the time god. fear me.
timezones = [
"America/Toronto"
"America/Vancouver"
"America/Edmonton"
"America/Regina"
"America/Toronto" # duplicated so it appears in the list too
"America/Halifax"
"America/St_Johns"
"America/Sao_Paulo"
"Etc/UTC"
"Australia/Perth"
];
tooltip-format = "{tz_list}";
};
memory = {
format = "{used}/{total} GiB";
states = {
critical = 90;
warning = 70;
};
tooltip-format = "{percentage}% used";
};
network = {
format-disabled = "";
format-disconnected = "";
format-ethernet = " {ipaddr}/{cidr}";
format-icons = [
""
""
""
""
];
format-wifi = "{icon}";
interval = 1;
tooltip-format = "{ifname} tx: {bandwidthUpBytes} rx: {bandwidthDownBytes}";
tooltip-format-wifi = ''
Network: {essid}
{ifname}: {ipaddr}/{cidr}
tx: {bandwidthUpBytes}
rx: {bandwidthDownBytes}
'';
};
position = "bottom";
"sway/workspaces" = {
all-outputs = true;
disable-scroll = true;
format = "";
persistent-workspaces = {
"1" = [
"DP-1"
"eDP-1"
];
"2" = [
"DP-2"
"eDP-1"
];
"3" = [ ];
"4" = [ ];
"5" = [ ];
"6" = [ ];
"7" = [ ];
"8" = [ ];
"9" = [ ];
};
};
wireplumber = {
format = "{icon}";
format-icons = [
""
""
""
];
format-muted = "";
on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
tooltip-format = "{node_name} - {volume}%";
};
};
};
style = builtins.readFile ./style-${config.desktop.accent}.css;
};
}