nix-config/users/mara/config/waybar.nix
2025-12-23 15:43:07 +01:00

175 lines
4.7 KiB
Nix

{ lib, pkgs, ... }:
{
programs.waybar = {
enable = true;
systemd.enable = true;
style = ./waybar.css;
settings = {
topBar = {
position = "top";
name = "top_bar";
reload_style_on_change = true;
modules-left = [
"clock"
"custom/sep"
"battery"
"custom/bat-sep"
"network"
];
modules-center = [
"mpris"
];
modules-right = [
"memory"
"custom/sep"
"cpu"
"custom/sep"
"temperature"
"custom/sep"
"disk"
];
"custom/sep" = {
format = "|";
tooltip = false;
};
"custom/bat-sep" = {
exec = "${lib.getExe' pkgs.coreutils "ls"} /sys/class/power_supply/* >/dev/null 2>&1 && ${lib.getExe' pkgs.coreutils "printf"} '|'";
interval = "once";
tooltip = false;
};
clock = {
format = "{:%Y-%m-%d %H:%M}";
tooltip = false;
};
battery = {
format = "{capacity}% - {timeTo}";
tooltip = false;
};
network = {
format-ethernet = "{ifname} - {bandwidthUpBytes} {bandwidthDownBytes}";
format-wifi = "{ifname} ({signalStrength}%) - {bandwidthUpBytes} {bandwidthDownBytes}";
format-disconnected = "";
tooltip-format = "{ipaddr}/{cidr} - [{gwaddr}]";
tooltip-wifi-format = "{ipaddr}/{cidr} - [{gwaddr}] \n{essid} - {freqency}GHz ({signaldBm}dBm)";
interval = 1;
tooltip = true;
};
mpris = {
format = " | {dynamic} | ";
dynamic-seperator = " | ";
dynamic-len = 32;
dynamic-order = [
"title"
"artist"
];
tooltip = false;
};
memory = {
format = "{used}GiB/{total}GiB";
tooltip = false;
interval = 1;
};
cpu = {
format = "{usage}% {avg_frequency}GHz";
tooltip = false;
interval = 1;
};
temperature = {
format = "{temperatureC}°C";
tooltip = false;
interval = 5;
};
disk = {
format = "{free}";
tooltip = false;
interval = 60;
};
};
bottomBar = {
margin = "5";
ipc = true;
position = "bottom";
name = "bottom_bar";
reload-style-on-change = true;
modules-left = [
"sway/workspaces"
"custom/sep"
"backlight"
"custom/back-sep"
"idle_inhibitor"
"custom/sep"
"bluetooth"
];
modules-center = [
"sway/mode"
"tray"
];
modules-right = [
"wireplumber"
"wireplumber#mic"
];
"custom/sep" = {
format = "|";
tooltip = false;
};
"custom/back-sep" = {
exec = "${lib.getExe' pkgs.coreutils "ls"} /sys/class/backlight/* >/dev/null 2>&1 && ${lib.getExe' pkgs.coreutils "printf"} '|'";
interval = "once";
tooltip = false;
};
"sway/workspaces" = {
format = " {name}·{icon} ";
format-icons = {
"1" = "dev";
"2" = "web";
"3" = "com";
"4" = "mus";
default = "ext";
};
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
};
all-outputs = true;
};
backlight = {
format = "{percent}%";
tooltip = false;
on-scroll-up = "${lib.getExe pkgs.brightnessctl} s 1%+ >/dev/null";
on-scroll-down = "${lib.getExe pkgs.brightnessctl} s 1%- >/dev/null";
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "on";
deactivated = "off";
};
tooltip = false;
};
bluetooth = {
format = "off";
format-on = "on: {num_connections}";
format-connected = "on: {num_connections}";
format-connected-battery = "on: {num_connections} - {device_battery_percentage}%";
format-off = "off";
format-disabled = "off";
on-click = "(${lib.getExe' pkgs.bluez "bluetoothctl"} show | ${lib.getExe' pkgs.findutils "grep"} 'Powered: no' && ${lib.getExe' pkgs.bluez "bluetoothctl"} power on) || ${lib.getExe' pkgs.bluez "bluetoothctl"} power off";
on-click-middle = "${lib.getExe pkgs.kitty} ${lib.getExe pkgs.bluetui}";
tooltip = false;
};
"sway/mode" = {
format = "{} |";
tooltip = false;
};
};
};
};
}