{ config, pkgs, ... }: { systemd.user.targets.tray.Unit = { Description = "Home Manager System Tray"; Requires = ["graphical-session-pre.target"]; }; programs.waybar = { enable = true; style = builtins.readFile (config.lib.stylix.colors { template = ./default.mustache; extension = ".css"; }); systemd = { enable = true; target = "hyprland-session.target"; }; settings.main = { layer = "top"; position = "top"; # Layout "modules-left" = ["hyprland/window" "mpris"]; "modules-center" = ["hyprland/workspaces"]; "modules-right" = [ "custom/notification" "pulseaudio" "network" "bluetooth" "clock#calendar" "clock" "backlight" "battery" "custom/weather" "tray" ]; # Module config "hyprland/window" = { "format" = "{title}"; # TODO workspace rewrites "rewrite" = { "(.*) - GNU Emacs at (.*)" = " $1 [$2]"; "(Alacritty.*)" = " $1"; "(.*) - mpv" = "󰦟 $1"; "(btm)" = " Resource Usage [$1]"; "(cava)" = "󰝚 Music Visualiser [$1]"; "(.*) - Thunar" = "󰝰 $1"; "Nyxt - (.*)" = "󰀹 $1"; "(.*)(?: — )?Mozilla Firefox" = "󰈹 $1"; "((?:.*)WebCord.*)" = "󰙯 $1"; "(Signal.*)" = "󰭹 $1"; "(WhatsApp for Linux.*)" = "󰖣 $1"; "([Ss]team)" = "󰓓 $1"; "(Prism Launcher.*)" = "󰍳 Minecraft ($1)"; "Microsoft Teams(?: classic)?(?: - )?(.*)(?: \| Microsoft Teams)?" = "󰊻 $1"; }; "separate-outputs" = true; }; "hyprland/workspaces" = { format = "{icon}"; format-icons = { default = "󰋙 "; active = "󰫈 "; urgent = "󰁡 "; }; show-special = false; persistent-workspaces = { "1" = []; "2" = []; "3" = []; "4" = []; "5" = []; "6" = []; }; }; mpris = { "format" = "> {player_icon} {player}"; "tooltip-format" = "{player_icon} ({player}) {dynamic}"; "interval" = 1; "dynamic-order" = ["album" "artist" "title" "position" "length"]; "player-icons" = { "default" = "󰲸 "; "emms" = " "; "firefox" = "󰈹 "; "mpv" = "󰦟 "; }; "status-icons" = { "playing" = "󰐊"; "paused" = "󰏤"; "stopped" = "󰓛"; }; "ignored-players" = []; }; pulseaudio = { scroll-step = 5; format = "{format_source} {icon} {volume}%"; format-muted = "{format_source} 󰝟 "; format-source = "󰍬"; format-source-muted = "󰍭"; format-icons = { car = "󰄍"; default = ["󰕿" "󰖀" "󰕾"]; hands-free = "󰥰"; headset = "󰋎"; phone = "󰏲"; portable = "󰏳"; headphone = "󰋋"; }; on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; on-click-right = "${pkgs.pamixer}/bin/pamixer -t"; on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5"; on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5"; }; disk = { format = "󰋊 {percentage_used}%"; path = config.home.homeDirectory; }; cpu = { format = "󰻠 {usage}%"; tooltip = false; }; memory = {format = "󰍛 {}%";}; temperature = { critical-threshold = 80; format = "{icon} {temperatureC}°C"; format-icons = ["󱃃" "󰔏" "󱃂"]; }; network = { format-icons = ["󰤟 " "󰤢 " "󰤥 " "󰤨 "]; format-wifi = "{icon}"; format-ethernet = "󰈁 "; tooltip-format = "{essid} ({signalStrength}%)"; format-linked = "󰈂 "; format-disconnected = "󰈂 "; }; bluetooth = { format = "󰂯 "; format-disabled = "󰂲 "; format-off = "󰂲 "; format-on = "󰂯 "; format-connected = "󰂱 "; tooltip-format = "{status} | {device_alias}"; on-click = "${pkgs.bluez}/bin/bluetoothctl power on"; on-click-right = "${pkgs.bluez}/bin/bluetoothctl power off"; }; "clock#calendar" = { format = "{:󰃭 %Y-%m-%d}"; tooltip-format = "{calendar}"; calendar = { mode = "month"; mode-mon-col = 3; weeks-pos = "left"; on-scroll = 1; on-click-right = "mode"; format = { months = "{}"; days = "{}"; weeks = "W{}"; weekdays = "{}"; today = "{}"; }; }; actions = { on-click-right = "mode"; on-scroll-up = "shift_up"; on-scroll-down = "shift_down"; }; }; clock = {format = "{:󰥔 %R}";}; backlight = { format = "{icon}"; tooltip-format = "{percent}%"; format-icons = [" " " " " " " " " " " " " " " " " "]; }; battery = { states = { warning = 30; critical = 20; }; format = "{icon}"; format-charging = "󰂄 "; format-plugged = "󰚥 "; tooltip-format = "{capacity}% {time}"; format-icons = ["󱃍 " "󰁺 " "󰁻 " "󰁼 " "󰁽 " "󰁾 " "󰁿 " "󰂀 " "󰂁 " "󰂂 " "󰁹 "]; }; "custom/notification" = let swaync = pkgs.swaynotificationcenter; in { "tooltip" = false; "format" = "{icon}{}"; "format-icons" = { "notification" = "󱅫 "; "none" = "󰂚 "; "dnd-notification" = "󰅸 "; "dnd-none" = "󰂜 "; "inhibited-notification" = "󰅸 "; "inhibited-none" = "󰂜 "; "dnd-inhibited-notification" = "󰅸 "; "dnd-inhibited-none" = "󰂜 "; }; "return-type" = "json"; "exec-if" = "which ${swaync}/bin/swaync-client"; "exec" = "${swaync}/bin/swaync-client -swb"; "on-click" = "${swaync}/bin/swaync-client -t -sw"; "on-click-right" = "${swaync}/bin/swaync-client -d -sw"; "escape" = true; }; "custom/weather" = { "format" = "{}°"; "tooltip" = true; "interval" = 3600; "exec" = "${pkgs.wttrbar}/bin/wttrbar --location Didcot --hide-conditions"; "return-type" = "json"; }; tray = { icon-size = config.stylix.fonts.sizes.desktop; show-passive-items = true; spacing = 5; }; }; }; }