{ config, pkgs, ... }: let inherit (config.var.theme.bar) position; inherit (config.var.theme) rounding border-size gaps-in gaps-out; in { home.packages = with pkgs; [ playerctl ]; programs.waybar = { enable = true; systemd = { enable = true; target = "hyprland-session"; }; settings = [{ layer = "top"; position = position; modules-left = [ "idle_inhibitor" "power-profile-daemon" "backlight" "pulseaudio" "hyprland/workspaces" "hyprland/window" ]; modules-center = [ "mpris" ]; modules-right = [ "battery#1" "battery#2" "cpu" "memory" "temperature" "clock" "privacy" "tray" ]; clock = { "format" = "{:%d %b %H:%M}  "; "format-alt" = "{:%A, %d %B %Y (%R)} "; "tooltip-format" = '' {:%Y %B} {calendar}''; "calendar" = { "mode" = "year"; "mode-mon-col" = 3; "weeks-pos" = "right"; "on-scroll" = 1; "format" = { "months" = "{}"; "days" = "{}"; "weeks" = "W{}"; "weekdays" = "{}"; "today" = "{}"; }; }; actions = { "on-click-right" = "mode"; "on-scroll-up" = "shift_up"; "on-scroll-down" = "shift_down"; }; }; tray = { spacing = gaps-in; }; cpu = { format = " {usage}"; }; memory = { format = " {}"; }; idle_inhibitor = { format = "{icon}"; format-icons = { activated = ""; deactivated = ""; }; }; network = { format = "{ifname}"; format-wifi = "{essid} ({signalStrength}%) "; format-ethernet = "{ipaddr}/{cidr} 󰈀"; format-disconnected = ""; tooltip-format = "{ifname} via {gwaddr} 󰈀"; tooltip-format-wifi = "{essid} ({signalStrength}%) "; tooltip-format-ethernet = "{ifname} "; tooltip-format-disconnected = "Disconnected"; max-length = 50; }; temperature = { format = "{temperatureC}󰔄 "; }; backlight = { device = "intel_backlight"; format = "{icon}"; format-icons = [ "󱃓" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥" ]; }; "battery#1" = { bat = "BAT0"; interval = 90; states = { warning = 30; critical = 15; }; format = "{capacity}"; max-length = 2; }; "battery#2" = { bat = "BAT1"; interval = 90; states = { warning = 30; critical = 15; }; format = "{capacity} {icon}"; format-icons = [ "" "" "" "" "" ]; max-length = 25; }; "hyprland/window" = { format = "{}"; rewrite = { "(.*) — Mozilla Firefox" = "󰈹 $1"; "(.*) - kitty" = " [$1]"; }; separate-outputs = true; }; "hyprland/workspaces" = { format = "{name}"; }; mpris = { "format" = "{player_icon} {dynamic}"; "format-paused" = "{status_icon} {dynamic}"; "player-icons" = { "default" = "󰐊"; "mpv" = "󰎇"; }; "dynamic-len" = 30; "status-icons" = { "paused" = "󰏤"; }; "ignored-players" = [ "firefox" ]; }; privacy = { "icon-spacing" = 4; "icon-size" = 18; "transition-duration" = 250; "modules" = [ { "type" = "screenshare"; "tooltip" = true; "tooltip-icon-size" = 24; } { "type" = "audio-out"; "tooltip" = true; "tooltip-icon-size" = 24; } { "type" = "audio-in"; "tooltip" = true; "tooltip-icon-size" = 24; } ]; }; pulseaudio = { "format" = "{volume}%{icon}"; "format-bluetooth" = "{volume}%{icon}"; "format-muted" = ""; "format-icons" = { "headphone" = ""; "phone" = ""; "portable" = ""; "car" = ""; "default" = [ "" "" ]; }; "scroll-step" = 1; "on-click" = "pavucontrol"; "ignored-sinks" = [ "Easy Effects Sink" ]; }; "pulseaudio/slider" = { "min" = 0; "max" = 100; "orientation" = "horizontal"; }; }]; style = '' * { border: none; border-radius: 0; } window#waybar { background-color: @base00; color: @base05; transition-property: background-color; transition-duration: 0.5s; } window#waybar.hidden { opacity: 0.2; } label.module { padding: 0 ${toString gaps-out}px; } #workspaces { background-color: @base03; border-radius: 1em; margin: 0 1em; } #workspaces button { padding: 0 .3em; border-radius: 1em; background-color: @base03; } #workspaces button.urgent { background-color: @base09; } #workspaces button.empty { background-color: @base03; } #workspaces button.visible { background-color: @base04; color: @base01 } #workspaces button.active { background-color: @base0A; } label#battery.1 { padding-right: 0; } label#battery.2 { padding-left: ${toString gaps-in}px; } #privacy, #tray { padding: 0 ${toString gaps-in}px; } #tray { background-color: @base03; border-radius: 1em 0 0 1em ; } #tray > .passive { -gtk-icon-effect: dim; } #tray > .needs-attention { -gtk-icon-effect: highlight; background-color: @base08; } tooltip { border-radius: ${toString rounding}px; } ''; }; }