{ config, lib, pkgs, ... }: let cfg = config.ctucxConfig.services.waybar; in { options = { ctucxConfig.services.waybar = { enable = lib.mkEnableOption "waybar"; }; }; config = lib.mkIf cfg.enable { home-manager.users.katja = { wayland.windowManager.sway.config.startup = [ { always = true; command = "systemctl --user restart waybar"; } ]; systemd.user.services.waybar.Service.Environment = "PATH=$PATH:${pkgs.iwd}/bin"; programs = { waybar = { enable = true; systemd.enable = true; package = pkgs.waybar.override { hyprlandSupport = false; }; settings = [{ layer = "top"; position = "top"; height = 40; modules-left = [ "sway/workspaces" "sway/mode" ]; modules-center = [ "clock" ]; modules-right = [ "tray" "disk" "memory" "cpu" "idle_inhibitor" "network#wifi" "battery" "pulseaudio" ]; "sway/workspaces" = { disable-scroll = true; }; "sway/mode" = { tooltip = false; format = "{}"; }; clock = { interval = 1; format = "{:%H:%M:%S}"; format-alt = "{:%Y-%m-%d}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; tray = { tooltip = false; # icon-size = 21; spacing = 10; }; disk = { format = " {}%"; tooltip-format = "SSD: {used} / {total} used"; }; memory = { format = " {}%"; tooltip-format = "RAM: {used:0.1f}G / {total:0.1f}G used"; }; cpu = { format = " {usage}%"; tooltip = false; }; battery = { bat = "BAT0"; adapter = "AC"; interval = 10; full-at = 99; states = { full = 100; good = 99; warning = 40; critical = 15; }; format = "{icon} {capacity}%"; format-charging = " {capacity}%"; format-plugged = " {capacity}%"; format-empty = ""; format-full = ""; format-icons = ["" "" "" "" ""]; }; "network#wifi" = { interface = "wlan0*"; tooltip-format = "{ifname}: {ipaddr}/{cidr}"; on-click = "${pkgs.rofi-wayland}/bin/rofi -show wifi -modi 'wifi:${pkgs.rofi-iwd-wifi-menu}/bin/iwdrofimenu'"; format-ethernet = ""; format-wifi = " {essid} ({signalStrength}%)"; format-linked = ""; format-disconnected = ""; }; pulseaudio = { scroll-step = 1; on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; format = "{format_source} {icon} {volume}%"; format-bluetooth = "{format_source} {icon} {volume}%"; format-bluetooth-muted = "{format_source}  "; format-muted = "{format_source} "; format-source = ""; format-source-muted = ""; format-icons = { headphone = ""; phone = ""; portable = ""; car = ""; default = ["" "" ""]; }; }; idle_inhibitor = { format = "{icon}"; format-icons = { activated = ""; deactivated = ""; }; }; }]; style = '' @keyframes blink { to { background: transparent; color: #fff; } } * { font-family: 'Noto Sans'; font-size: 15px; border: none; border-radius: 0; min-height: 0; transition: none; box-shadow: none; } window#waybar { /* background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); */ background: rgba(0, 0, 0, 0.5); color: white; border-bottom: 2px solid rgba(59, 135, 86, 0.5); } #workspaces button.focused { background: rgba(255, 255, 255, 0.1); border-bottom: 3px solid rgb(74, 169, 108); } #workspaces button:hover { background: rgba(255, 255, 255, 0.06); } #clock { font-size: 16px; font-family: 'Noto Mono', monospace; } #disk, #memory, #cpu, #idle_inhibitor, #battery, #pulseaudio, #network { padding: 0px 15px; } #battery { color: #a3be8c; } #battery.charging { color: #a3be8c; } #battery.critical:not(.charging) { background: rgba(245, 60, 60, 0.4); color: #fff; border-radius: 15px; margin: 6px; animation-name: blink; animation-duration: 1s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } ''; }; }; }; }; }