nix/modules/home-manager/desktop/sway/includes/waybar.nix

286 lines
7.3 KiB
Nix

{lib, config, ...}:
with lib;
let
cfg = config.modules.desktop.sway;
in
{
config = mkIf cfg.enable {
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "sway-session.target";
};
settings = {
mainbar = {
layer = "top";
spacing = 6;
disable-toolptips = true;
modules-center = [];
modules-left = [
"sway/workspaces"
"sway/mode"
];
modules-right = [
"network"
"custom/sep"
] ++ (
if cfg.waybar.laptop then [
"backlight"
"battery"
"custom/sep"
]
else [
]
) ++
[
"memory"
"cpu"
"temperature"
"custom/sep"
] ++ (
if cfg.waybar.gpuThermal.enable then [
"temperature#gpu"
"custom/sep"
]
else [
]
) ++
[
"pulseaudio"
"custom/sep"
"clock"
"custom/sep"
"tray"
];
"clock" = {
"format-alt" = "{:%Y-%m-%d}";
"timezone" = "Europe/Paris";
"tooltip" = false;
};
"cpu" = {
"format" = "{usage}% {icon}";
"format-icons" = [ "" ];
"states" = {
"critical" = 90;
"warning" = 70;
};
"tooltip" = false;
};
"custom/sep" = {
"format" = "|";
"tooltip" = false;
};
"idle_inhibitor" = {
"format" = "{icon}";
"format-icons" = {
"activated" = "";
"deactivated" = "";
};
};
"memory" = {
"format" = "{used:0.1f}G/{total:0.1f}G ";
"interval" = 30;
"states" = {
"critical" = 90;
"warning" = 70;
};
};
"network" = {
"format-alt" = "{ifname}: {ipaddr}/{cidr}";
"format-disconnected" = "Disconnected ";
"format-ethernet" = "{ifname}: {ipaddr}/{cidr} 󰈀 ";
"format-linked" = "{ifname} (No IP) 󰈀 ";
"format-wifi" = "{essid} ({signalStrength}%) ";
"tooltip" = false;
};
"pulseaudio" = {
"format" = "{format_source} {volume}% {icon} ";
"format-bluetooth" = "{volume}% {icon}";
"format-icons" = {
"car" = "";
"default" = "";
"handsfree" = "󰋎";
"headphones" = "󰋋";
"headset" = "󰋎";
"phone" = "";
"portable" = "";
};
"format-muted" = "{format_source} 󰝟 ";
"format-source" = "{volume}% ";
"format-source-muted" = " ";
"tooltip" = false;
};
"sway/mode" = {
"format" = "<span style=\"italic\">{}</span>";
};
"sway/workspace" = {
"disable-scroll" = true;
};
"temperature" = {
"critical-threshold" = 80;
"format" = "{temperatureC}°C ";
"hwmon-path-abs" = "${cfg.waybar.cpuThermal.hwmonPathAbs}";
"input-filename" = "${cfg.waybar.cpuThermal.inputFilename}";
};
"temperature#gpu" = {
"critical-threshold" = 80;
"format" = "GPU: {temperatureC}°C ";
"hwmon-path" = "${cfg.waybar.gpuThermal.hmonPath}";
};
"backlight" = {
"format" = "{percent}% {icon}";
"format-icons" = [
"󰌶"
"󱩏"
"󱩐"
"󱩐"
"󱩑"
"󱩒"
"󱩓"
"󱩔"
"󱩕"
"󱩖"
"󰛨"
];
};
"battery" = {
"tooltip" = false;
"states" = {
"full" = 100;
"warning" = 30;
"critical" = 15;
};
"format" = "{capacity}% {icon}";
"format-charging" = "{capacity}% 󰓦";
"format-plugged" = "{capacity}% ";
"format-alt" = "{time} {icon}";
"format-icons" = [
" "
" "
" "
" "
" "
];
};
};
};
style = ''
@define-color color-base-bg #323232;
@define-color color-base-fg #ddd;
@define-color color-hover #f268b3;
@define-color color-selected #1cd180;
@define-color color-ok #1cd180;
@define-color color-warning #f2b768;
@define-color color-critical #f268b3;
* {
border: none;
border-radius: 0;
min-height:0;
}
window#waybar {
background: @color-base-bg ;
color: @color-base-fg;
font-family: "Fira Code Nerd Font";
font-size: 12px;
}
button,
button:disabled,label:disabled{
color:inherit;
}
button:hover{
background:none;
box-shadow:inherit;
box-shadow:inherit;
text-shadow:inherit;
text-shadow:inherit;
border-top:none;
}
#workspaces {
color:#fff;
}
#workspaces button {
margin:0 3px;
padding:4px 4px;
color:#9c9c9c;
border-bottom: 1px solid transparent;
}
#workspaces button:hover {
box-shadow:inherit;
text-shadow:inherit;
color: @color-hover;
border-bottom: 1px solid @color-hover;
}
#workspaces button.focused {
background: @color-selected;
color: @color-base-bg;
}
#workspaces button.visible:not(.focused) {
color: @color-selected;
border-color: @color-selected;
}
#clock,
#cpu,
#memory,
#backlight,
#network,
#tray,
#mode,
#battery,
#idle_inhibitor {
padding: 2px 4px;
margin: 0;
background-color: transparent;
}
#mode{
background:@color-warning;
font-weight:bold;
}
#pulseaudio {}
#pulseaudio.muted {
color:@color-critical;
}
#battery.discharging {
color: @color-base-fg;
border-bottom: none;
}
#battery.charging, #battery.plugged {
border-bottom: 1px solid @color-ok;
color: @color-selected;
}
#battery.critical:not(.charging),
#cpu.critical,
#memory.critical{
border-color: @color-critical;
color: @color-critical;
}
#battery.warning:not(.charging),
#cpu.warning,
#memory.warning{
border-color: @color-warning;
color: @color-warning;
}
#tray {
font-family: "DejaVu sans";
font-size: 12px;
}
'';
};
};
}