diff --git a/home/modules/desktop/wayland/bar/waybar/default.nix b/home/modules/desktop/wayland/bar/waybar/default.nix index f313bed..7e9bd9b 100644 --- a/home/modules/desktop/wayland/bar/waybar/default.nix +++ b/home/modules/desktop/wayland/bar/waybar/default.nix @@ -1,7 +1,9 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.homeModules.desktop.wayland.bar.waybar; + monitorWidth = (lib.head config.monitors).width - 20; + inherit (config.colorscheme) colors; in { @@ -9,6 +11,129 @@ in programs.waybar = { enable = true; systemd.enable = true; + package = pkgs.waybar; + + settings.mainBar = { + layer = "top"; + position = "top"; + height = 30; + width = monitorWidth; + exclusive = true; + margin-top = 10; + margin-bottom = -12; + + modules-left = [ "clock" "battery" "hyprland/workspaces" ]; + modules-center = []; + modules-right = [ "tray" ]; + + "hyprland/workspaces" = let + hyprctl = config.wayland.windowManager.hyprland.package + "/bin/hyprctl"; + in { + on-click = "activate"; + on-scroll-up = "${hyprctl} dispatch workspace m+1"; + on-scroll-down = "${hyprctl} dispatch workspace m-1"; + format = "{icon}"; + active-only = false; + persistent-workspaces = { + "*" = 5; + }; + format-icons = { + active = ""; + default = ""; + urgent = ""; + }; + all-outputs = false; + }; + + clock = { + format = "{:%I:%M %p}"; + format-alt = "{:%Y-%m-%d}"; + }; + battery = { + states = { + good = 100; + warning = 35; + critical = 15; + }; + bat = "BAT0"; + interval = 10; + format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; + format = "{icon} {capacity}%"; + format-charging = "󱐋{icon} {capacity}%"; + tooltip-format = "{timeTo} {power}W"; + }; + tray = { + icon-size = 21; + spacing = 5; + }; + }; + style = /* css */ '' + * { + font-family: "${config.fontProfiles.monospace.family}"; + font-size: 19px; + border: solid #${colors.base05}; + } + + window#waybar { + background-color: transparent; + margin: 10px; + } + + #clock, + #battery, + #workspaces { + background-color: #${colors.base00}; + padding-right: 10px; + } + + #clock { + padding-left: 10px; + border: 2px solid #${colors.base05}; + border-right: 0px; + border-top-left-radius: 10px; + } + + #battery { + padding-left: 10px; + padding-left: 10px; + border-top: 2px solid #${colors.base05}; + border-bottom: 2px solid #${colors.base05}; + border-left: 0px; + } + + #battery.good { + color: #${colors.base0B}; + } + #battery.warning { + color: #${colors.base0A}; + } + #battery.critical { + color: #${colors.base08}; + } + + #tray { + padding-right: 10px; + padding-left: 10px; + background-color: transparent; + border: 0; + } + + #workspaces { + border: 2px solid #${colors.base05}; + border-left: 0; + border-top-right-radius: 10px; + } + + #workspace button, + #workspaces button.active, + #workspaces button.visible { + color: #${colors.base0B}; + } + + #workspaces button.urgent { + color: #${colors.base08}; + } + ''; }; }; }