{ config, lib, options, ... }: { options.desktop.components.waybar.enable = lib.mkEnableOption "waybar"; config.programs.waybar = { enable = config.desktop.components.waybar.enable; settings = { main = { modules-left = [ "sway/workspaces" "tray" ]; modules-center = [ "clock" ]; modules-right = [ "backlight" "battery" "network" "wireplumber" ]; backlight = { format = "{icon}"; format-icons = [ "" "󰖨" ]; tooltip-format = "{percent}%"; }; battery = { format = "{icon}"; format-critical = "{icon} ({capacity}%)"; format-icons = [ "" "" "" "" ]; format-time = "{H}h{m}m"; format-warning = "{icon} ({capacity}%)"; states = { critical = 15; warning = 25; }; tooltip-format = "{time} remaining, {health}% battery health"; tooltip-format-critical = "plug yo shit in NOW!!"; }; clock = { format = "{:%A, %b %d %Y - %H:%M %Z}"; # i am the time god. fear me. timezones = [ "America/Toronto" "America/Vancouver" "America/Edmonton" "America/Regina" "America/Toronto" # duplicated so it appears in the list too "America/Halifax" "America/St_Johns" "America/Sao_Paulo" "Etc/UTC" "Australia/Perth" ]; tooltip-format = "{tz_list}"; }; network = { format-disabled = "󰀝"; format-disconnected = "󰌙"; format-ethernet = "󰌗 {ipaddr}/{cidr}"; format-icons = [ "󰤟" "󰤢" "󰤥" "󰤨" ]; format-wifi = "{icon}"; interval = 1; tooltip-format = "{ifname} tx: {bandwidthUpBytes} rx: {bandwidthDownBytes}"; tooltip-format-wifi = '' Network: {essid} {ifname}: {ipaddr}/{cidr} tx: {bandwidthUpBytes} rx: {bandwidthDownBytes} ''; }; position = "bottom"; "sway/workspaces" = { all-outputs = true; disable-scroll = true; format = ""; persistent-workspaces = { "1" = [ "DP-1" "eDP-1" ]; "2" = [ "DP-2" "eDP-1" ]; "3" = [ ]; "4" = [ ]; "5" = [ ]; "6" = [ ]; "7" = [ ]; "8" = [ ]; "9" = [ ]; }; }; wireplumber = { format = "{icon}"; format-icons = [ "󰕿" "󰖀" "󰕾" ]; format-muted = "󰸈"; on-click = "wpctl set-mute @DEFAULT_SINK@ toggle"; tooltip-format = "{node_name} - {volume}%"; }; }; }; style = builtins.readFile ./style-${config.desktop.accent}.css; }; }