{ options, config, lib, inputs, pkgs, ... }: with lib; with lib.custom; let cfg = config.apps.helpers.waybar; in { options.apps.helpers.waybar = with types; { enable = mkBoolOpt false "Enable WayBar"; }; config = mkIf cfg.enable { services.swaync = { enable = true; style = '' * { all: unset; font-size: 14px; font-family: "Cantarell"; transition: 200ms; } trough highlight { background: #cad3f5; } scale trough { margin: 0rem 1rem; background-color: #363a4f; min-height: 8px; min-width: 70px; } slider { background-color: #8aadf4; } .floating-notifications.background .notification-row .notification-background { box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f; border-radius: 12.6px; margin: 18px; background-color: #24273a; color: #cad3f5; padding: 0; } .floating-notifications.background .notification-row .notification-background .notification { padding: 7px; border-radius: 12.6px; } .floating-notifications.background .notification-row .notification-background .notification.critical { box-shadow: inset 0 0 7px 0 #ed8796; } .floating-notifications.background .notification-row .notification-background .notification .notification-content { margin: 7px; } .floating-notifications.background .notification-row .notification-background .notification .notification-content .summary { color: #cad3f5; } .floating-notifications.background .notification-row .notification-background .notification .notification-content .time { color: #a5adcb; } .floating-notifications.background .notification-row .notification-background .notification .notification-content .body { color: #cad3f5; } .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * { min-height: 3.4em; } .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action { border-radius: 7px; color: #cad3f5; background-color: #363a4f; box-shadow: inset 0 0 0 1px #494d64; margin: 7px; } .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { box-shadow: inset 0 0 0 1px #494d64; background-color: #363a4f; color: #cad3f5; } .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active { box-shadow: inset 0 0 0 1px #494d64; background-color: #7dc4e4; color: #cad3f5; } .floating-notifications.background .notification-row .notification-background .close-button { margin: 7px; padding: 2px; border-radius: 6.3px; color: #24273a; background-color: #ed8796; } .floating-notifications.background .notification-row .notification-background .close-button:hover { background-color: #ee99a0; color: #24273a; } .floating-notifications.background .notification-row .notification-background .close-button:active { background-color: #ed8796; color: #24273a; } .control-center { box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f; border-radius: 12.6px; margin: 18px; background-color: #24273a; color: #cad3f5; padding: 14px; } .control-center .widget-title > label { color: #cad3f5; font-size: 1.3em; } .control-center .widget-title button { border-radius: 7px; color: #cad3f5; background-color: #363a4f; box-shadow: inset 0 0 0 1px #494d64; padding: 8px; } .control-center .widget-title button:hover { box-shadow: inset 0 0 0 1px #494d64; background-color: #5b6078; color: #cad3f5; } .control-center .widget-title button:active { box-shadow: inset 0 0 0 1px #494d64; background-color: #7dc4e4; color: #24273a; } .control-center .notification-row .notification-background { border-radius: 7px; color: #cad3f5; background-color: #363a4f; box-shadow: inset 0 0 0 1px #494d64; margin-top: 14px; } .control-center .notification-row .notification-background .notification { padding: 7px; border-radius: 7px; } .control-center .notification-row .notification-background .notification.critical { box-shadow: inset 0 0 7px 0 #ed8796; } .control-center .notification-row .notification-background .notification .notification-content { margin: 7px; } .control-center .notification-row .notification-background .notification .notification-content .summary { color: #cad3f5; } .control-center .notification-row .notification-background .notification .notification-content .time { color: #a5adcb; } .control-center .notification-row .notification-background .notification .notification-content .body { color: #cad3f5; } .control-center .notification-row .notification-background .notification > *:last-child > * { min-height: 3.4em; } .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action { border-radius: 7px; color: #cad3f5; background-color: #181926; box-shadow: inset 0 0 0 1px #494d64; margin: 7px; } .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { box-shadow: inset 0 0 0 1px #494d64; background-color: #363a4f; color: #cad3f5; } .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active { box-shadow: inset 0 0 0 1px #494d64; background-color: #7dc4e4; color: #cad3f5; } .control-center .notification-row .notification-background .close-button { margin: 7px; padding: 2px; border-radius: 6.3px; color: #24273a; background-color: #ee99a0; } .close-button { border-radius: 6.3px; } .control-center .notification-row .notification-background .close-button:hover { background-color: #ed8796; color: #24273a; } .control-center .notification-row .notification-background .close-button:active { background-color: #ed8796; color: #24273a; } .control-center .notification-row .notification-background:hover { box-shadow: inset 0 0 0 1px #494d64; background-color: #8087a2; color: #cad3f5; } .control-center .notification-row .notification-background:active { box-shadow: inset 0 0 0 1px #494d64; background-color: #7dc4e4; color: #cad3f5; } .notification.critical progress { background-color: #ed8796; } .notification.low progress, .notification.normal progress { background-color: #8aadf4; } .control-center-dnd { margin-top: 5px; border-radius: 8px; background: #363a4f; border: 1px solid #494d64; box-shadow: none; } .control-center-dnd:checked { background: #363a4f; } .control-center-dnd slider { background: #494d64; border-radius: 8px; } .widget-dnd { margin: 0px; font-size: 1.1rem; } .widget-dnd > switch { font-size: initial; border-radius: 8px; background: #363a4f; border: 1px solid #494d64; box-shadow: none; } .widget-dnd > switch:checked { background: #363a4f; } .widget-dnd > switch slider { background: #494d64; border-radius: 8px; border: 1px solid #6e738d; } .widget-mpris .widget-mpris-player { background: #363a4f; padding: 7px; } .widget-mpris .widget-mpris-title { font-size: 1.2rem; } .widget-mpris .widget-mpris-subtitle { font-size: 0.8rem; } .widget-menubar > box > .menu-button-bar > button > label { font-size: 3rem; padding: 0.5rem 2rem; } .widget-menubar > box > .menu-button-bar > :last-child { color: #ed8796; } .power-buttons button:hover, .powermode-buttons button:hover, .screenshot-buttons button:hover { background: #363a4f; } .control-center .widget-label > label { color: #cad3f5; font-size: 2rem; } .widget-buttons-grid { padding-top: 1rem; } .widget-buttons-grid > flowbox > flowboxchild > button label { font-size: 2.5rem; } .widget-volume { padding-top: 1rem; } .widget-volume label { font-size: 1.5rem; color: #7dc4e4; } .widget-volume trough highlight { background: #7dc4e4; } .widget-backlight trough highlight { background: #eed49f; } .widget-backlight label { font-size: 1.5rem; color: #eed49f; } .widget-backlight .KB { padding-bottom: 1rem; } .image { padding-right: 0.5rem; } ''; }; programs.waybar = { enable = true; systemd.enable = true; systemd.target = "graphical-session.target"; style = '' * { min-height: 0; min-width: 0; font-family: Cantarell; font-size: 16px; font-weight: 600; } window#waybar { transition-property: background-color; transition-duration: 0.5s; /* background-color: #1e1e2e; */ /* background-color: #181825; */ background-color: #11111b; /* background-color: rgba(24, 24, 37, 0.6); */ } #workspaces button { padding: 0.3rem 0.6rem; margin: 0.4rem 0.25rem; border-radius: 6px; /* background-color: #181825; */ background-color: #1e1e2e; color: #cdd6f4; } #workspaces button:hover { color: #1e1e2e; background-color: #cdd6f4; } #workspaces button.active { background-color: #1e1e2e; color: #89b4fa; } #workspaces button.urgent { background-color: #1e1e2e; color: #f38ba8; } #clock, #pulseaudio, #custom-logo, #custom-power, #custom-spotify, #custom-notification, #cpu, #tray, #memory, #window, #mpris { padding: 0.3rem 0.6rem; margin: 0.4rem 0.25rem; border-radius: 6px; /* background-color: #181825; */ background-color: #1e1e2e; } #mpris.playing { color: #a6e3a1; } #mpris.paused { color: #9399b2; } #custom-sep { padding: 0px; color: #585b70; } window#waybar.empty #window { background-color: transparent; } #cpu { color: #94e2d5; } #memory { color: #cba6f7; } #clock { color: #74c7ec; } #clock.simpleclock { color: #89b4fa; } #window { color: #cdd6f4; } #pulseaudio { color: #b4befe; } #pulseaudio.muted { color: #a6adc8; } #custom-logo { color: #89b4fa; } #custom-power { color: #f38ba8; } tooltip { background-color: #181825; border: 2px solid #89b4fa; } ''; settings = { mainBar = { layer = "bottom"; position = "top"; height = 40; spacing = 2; exclusive = true; "gtk-layer-shell" = true; passthrough = false; "fixed-center" = true; "modules-left" = ["hyprland/workspaces" "hyprland/window"]; "modules-center" = ["mpris"]; "modules-right" = [ "cpu" "memory" "pulseaudio" "clock" "clock#simpleclock" "tray" "custom/notification" "custom/power" ]; "custom/spotify" = { format = " {}"; "return-type" = "json"; "on-click" = "playerctl -p spotify play-pause"; "on-click-right" = "spotifatius toggle-liked"; "on-click-middle" = "playerctl -p spotify next"; exec = "spotifatius monitor"; }; mpris = { player = "spotify"; "dynamic-order" = ["artist" "title"]; format = "{player_icon} {dynamic}"; "format-paused" = "{status_icon} {dynamic}"; "status-icons" = { paused = ""; }; "player-icons" = { default = ""; }; }; "hyprland/workspaces" = { "on-click" = "activate"; format = "{id}"; "all-outputs" = true; "disable-scroll" = false; "active-only" = false; }; "hyprland/window" = { format = "{title}"; }; tray = { "show-passive-items" = true; spacing = 10; }; "clock#simpleclock" = { tooltip = false; format = " {:%H:%M}"; }; clock = { format = " {:L%a %d %b}"; calendar = { format = { days = "{}"; months = "{}"; today = "{}"; weekdays = "{}"; weeks = "W{}"; }; mode = "month"; "mode-mon-col" = 1; "on-scroll" = 1; }; "tooltip-format" = "{calendar}"; }; cpu = { format = " {usage}%"; tooltip = true; interval = 1; }; memory = { format = " {used:0.1f}Gi"; }; pulseaudio = { format = "{icon} {volume}%"; "format-muted" = " muted"; "format-icons" = { headphone = ""; default = [" " " " " "]; }; "on-click" = "pavucontrol"; }; "custom/sep" = { format = "|"; tooltip = false; }; "custom/power" = { tooltip = false; "on-click" = "wlogout -p layer-shell &"; format = "⏻"; }; "custom/notification" = { escape = true; exec = "swaync-client -swb"; "exec-if" = "which swaync-client"; format = "{icon}"; "format-icons" = { none = "󰅺"; notification = "󰡟"; }; "on-click" = "sleep 0.1 && swaync-client -t -sw"; "return-type" = "json"; tooltip = false; }; }; }; }; }; }