nixos-config/home-manager/modules/waybar/default.nix

213 lines
6.7 KiB
Nix

{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.eboskma.programs.waybar;
in
{
options.eboskma.programs.waybar.enable = mkEnableOption "Enable waybar";
config = mkIf cfg.enable {
programs.waybar = {
enable = true;
systemd.enable = true;
settings = [
{
layer = "top";
position = "top";
height = 32;
modules-left = [
"wlr/workspaces"
"river/tags"
"river/mode"
"sway/workspaces"
"sway/mode"
"custom/now_playing"
];
modules-center = [
"sway/window"
"river/window"
];
modules-right = [
"network"
"memory"
"cpu"
"temperature"
"wireplumber"
"clock#date"
"clock#time"
"tray"
"idle_inhibitor"
"custom/notifications"
];
"clock#time" = {
interval = 1;
format = "{:%H:%M:%S}";
tooltip = false;
};
"clock#date" = {
interval = 10;
format = "󰃭 {:%e %b %Y}"; # Icon: calendar
tooltip-format = "{:%e %B %Y}";
};
"cpu" = {
interval = 5;
format = "󰻠 {usage}% ({load})"; # Icon: cpu_64_bit
states = {
warning = 70;
critical = 90;
};
};
"memory" = {
interval = 5;
format = "󰍛 {}%"; # Icon: memory
states = {
warning = 70;
critical = 90;
};
};
"network" = {
interval = 5;
format-wifi = "󰖩 {essid} ({signalStrength}%)"; # Icon: wifi
format-ethernet = "󰈀 {ifname}: {ipaddr}/{cidr}"; # Icon: ethernet
format-disconnected = "󰲜 Disconnected"; # Icon: network_off_outline
tooltip-format = "{ifname}: {ipaddr}";
};
"custom/now_playing" = {
exec = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token";
exec-on-event = false;
escape = true;
format = "󰐹 {}"; # Icon: radio
restart-interval = 1;
return-type = "json";
on-click = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token play-pause";
on-scroll-down = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token volume-up";
on-scroll-up = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token volume-down";
};
"sway/mode" = {
format = ''<span style="italic">󰁌 {}</span>''; # Icon: arrow_expand_all
tooltip = false;
};
"sway/window" = {
format = "{}";
max-length = 120;
};
"sway/workspaces" = {
all-outputs = false;
disable-scroll = true;
format = "{icon} {name}";
sort-by-number = true;
format-icons = {
"urgent" = "";
"focused" = "";
"default" = "";
};
};
"river/mode" = {
format = ''<span style="italic">󰁌 {}</span>''; # Icon: arrow_expand_all
};
"river/tags" = { };
"river/window" = {
max-length = 120;
};
"wlr/workspaces" = {
all-outputs = false;
# disable-scroll = true;
on-click = "activate";
format = "{icon} {name}";
sort-by-number = true;
format-icons = {
"urgent" = ""; # Icon: fa-exclamation_circle
"focused" = ""; # Icon: fa-dot_circle_o
"default" = ""; # Icon: fa-circle
};
};
"wireplumber" = {
format = "{icon} {volume}%";
format-muted = "󰖁"; # Icon: volume_off
format-icons = {
headphones = "󰋋"; # Icon: headphones
handsfree = "󰋎"; # Icon: headset
headset = "󰋎"; # Icon: headset
phone = ""; # Icon: phone
portable = ""; # Icon: phone
car = ""; # Icon: car
default = [
"󰕿"
"󰖀"
"󰕾"
]; # Icons: volume_low volume_medium volume_high
};
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
on-click-middle = "${pkgs.helvum}/bin/helvum";
on-click-right = "${pkgs.easyeffects}/bin/easyeffects";
};
"temperature" = {
hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
critical-threshold = 80;
interval = 5;
format = "{icon} {temperatureC}°C";
format-icons = [
"" # Icon = temperature-empty
"" # Icon = temperature-quarter
"" # Icon = temperature-half
"" # Icon = temperature-three-quarters
"" # Icon = temperature-full
];
tooltip = true;
};
"tray" = {
icon-size = 21;
spacing = 10;
};
"idle_inhibitor" = {
format = ''<span size="large">{icon}</span>'';
format-icons = {
activated = "󰛐";
deactivated = "󰛑";
};
};
"custom/notifications" = {
exec = "${pkgs.swaynotificationcenter}/bin/swaync-client --subscribe-waybar";
on-click = "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-panel --skip-wait";
on-click-right = "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-dnd --skip-wait";
return-type = "json";
tooltip = false;
format = "{icon}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>"; # Icon: bell_outline
none = ""; # Icon: bell_outline
dnd-notification = "<span foreground='red'><sup></sup></span>"; # Icon: bell_off_outline
dnd-none = ""; # Icon: bell_off_outline
};
escape = true;
};
}
];
style = ./style.css;
};
};
}