{ lib, config, ... }: { options.homeprogs.waybar.enable = lib.mkEnableOption "Enable waybar"; config = lib.mkIf config.homeprogs.waybar.enable { programs.waybar = { enable = true; settings = [ { layer = "top"; position = "top"; height = 30; spacing = 6; modules-left = [ "hyprland/workspaces" "hyprland/window" ]; modules-center = [ "clock" "hyprland/language" "tray" "battery" ]; modules-right = [ "idle_inhibitor" "wireplumber" "network" "cpu" "memory" "disk" "temperature" "backlight" ]; wireplumber = { scroll-step = 1; # %, can be a float format = "{volume}% "; format-muted = "Muted"; on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; on-click-right = "pavucontrol"; }; network = { # interface = "wlp2*"; # (Optional) To force the use of this interface format-wifi = "({signalStrength}%) "; format-ethernet = "{ifname} "; tooltip-format = "{ifname} via {gwaddr} "; format-linked = "{ifname} (No IP) "; format-disconnected = "Disconnected ⚠"; format-alt = "{essid}: {ipaddr}/{cidr}"; }; "hyprland/workspaces" = { all-outputs = false; active-only = false; format = "{name}"; format-icons = { urgent = ""; focused = ""; default = ""; }; }; "hyprland/window" = { max-length = 200; separate-outputs = true; }; keyboard-state = { numlock = false; format = "{name} {icon}"; format-icons = { locked = ""; unlocked = ""; }; }; idle_inhibitor = { format = "{icon}"; format-icons = { activated = ""; deactivated = ""; }; }; tray = { icon-size = 21; spacing = 10; }; clock = { timezone = "Europe/Amsterdam"; tooltip-format = "{:%Y %B}\n{calendar}"; format-alt = "{:%Y-%m-%d}"; }; cpu = { format = "{usage}% "; tooltip = false; }; memory = { format = "{}% "; }; temperature = { thermal-zone = 1; # hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; critical-threshold = 80; # format-critical = "{temperatureC}°C {icon}"; format = "{temperatureC}°C {icon}"; format-icons = [ "" "" "" ]; }; "backlight" = { # device = "acpi_video1"; format = "{percent}{icon}"; format-icons = [ "" "" "" "" "" "" "" "" "" ]; }; battery = { states = { # good = 95; warning = 30; critical = 15; }; format = "{capacity}% {icon}"; format-charging = "{capacity}% "; format-plugged = "{capacity}% "; format-alt = "{time} {icon}"; # format-good = ""; // An empty format will hide the module # format-full = ""; format-icons = [ "" "" "" "" "" ]; }; } ]; style = ./waybar.css; }; }; }