{ pkgs, lib, config, ... }: { home-manager.users.fhauser = { xsession.preferStatusNotifierItems = true; wayland.windowManager.sway.config.bars = [ ]; programs.waybar = { enable = true; settings = [{ position = "top"; #height = modules-left = [ "sway/mode" "sway/workspaces" ]; modules-center = [ "sway/window" ]; modules-right = [ "backlight" "idle_inhibitor" "bluetooth" "cpu" "temperature" "memory" "disk" "network" "pulseaudio" #"custom/keyboard-layout" "battery" "tray" "clock" ]; modules = { backlight.format = " {percent}%"; disk.format = " {percentage_used}%"; clock.format = "{:%Y-%2m-%2d %H:%M}"; "sway/workspaces" = { disable-scroll-wraparound = true; enable-bar-scroll = true; numeric-first = true; }; battery = { interval = 10; states = { warning = 15; critical = 10; }; format = " {capacity}% {time}"; # Icon: bolt format-discharging = "{icon} {capacity}% {time}"; format-time = "{H}:{M}"; format-icons = [ "" # Icon: battery-full "" # Icon: battery-three-quarters "" # Icon: battery-half "" # Icon: battery-quarter "" # Icon: battery-empty ]; tooltip = "true"; }; cpu = { interval = "5"; format = " {usage}% ({load})"; # Icon: microchip states = { warning = "70"; critical = "90"; }; }; #"custom/keyboard-layout" = { # exec = pkgs.writeShellScript "keyboard-layout" "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4"; # # Interval set only as a fallback, as the value is updated by signal # interval = "30"; # format = " {}"; # Icon: keyboard # # Signal sent by Sway key binding (~/.config/sway/key-bindings) # signal = "1"; # SIGHUP # tooltip = "false"; #}; memory = { interval = "5"; format = " {}%"; # Icon: microchip states = { warning = "70"; critical = "90"; }; }; network = { interval = "5"; format-wifi = " {essid} ({signalStrength}%)"; # Icon: wifi format-ethernet = "🔗 {ifname}: {ipaddr}/{cidr}"; # Icon: ethernet format-disconnected = "🔗"; tooltip-format = "{ifname}: {ipaddr}"; }; "sway/mode" = { format = '' {}''; # Icon: expand-arrows-alt tooltip = "false"; }; "sway/window" = { format = "{}"; max-length = "120"; }; "sway/workspaces" = { all-outputs = false; disable-scroll = true; format = "{icon}"; format-icons = { "10" = " 10"; "11" = " 11"; "12" = " 12"; "13" = " 13"; }; }; pulseaudio = { scroll-step = 3; format = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%"; format-muted = "🔇"; format-icons = { headphones = ""; handsfree = ""; headset = ""; phone = ""; portable = ""; car = ""; default = [ "" "" "" ]; }; on-click = "pavucontrol"; }; temperature = { critical-threshold = 80; interval = 5; format = "{icon} {temperatureC}°C"; format-icons = [ "" # Icon: temperature-empty "" # Icon: temperature-quarter "" # Icon: temperature-half "" # Icon: temperature-three-quarters "" # Icon: temperature-full ]; tooltip = "true"; hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; }; idle_inhibitor = { format = "{icon}"; format-icons = { activated = ""; deactivated = ""; }; }; tray = { icon-size = "21"; spacing = "10"; }; }; }]; systemd.enable = true; style = '' /* ============================================================================= * * Waybar configuration * * Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration * * =========================================================================== */ /* ----------------------------------------------------------------------------- * Keyframes * -------------------------------------------------------------------------- */ @keyframes blink-warning { 70% { color: white; } to { color: white; background-color: orange; } } @keyframes blink-critical { 70% { color: white; } to { color: white; background-color: red; } } /* ----------------------------------------------------------------------------- * Base styles * -------------------------------------------------------------------------- */ /* Reset all styles */ * { border: none; border-radius: 0; min-height: 0; margin: 0; padding: 0; } /* The whole bar */ #waybar { background: #323232; color: white; /*font-family: Cantarell, Noto Sans, sans-serif;*/ font-size: 13px; } /* Each module */ #battery, #clock, #cpu, #custom-keyboard-layout, #memory, #mode, #network, #pulseaudio, #temperature, #backlight, #idle_inhibitor, #tray { margin-left: 5px; margin-right: 5px; padding-left: 5px; padding-right: 5px; /*border-right: solid 1px black;*/ } #backlight { margin-right: 0; padding-right: 0; } #idle_inhibiter { margin-left: 0; padding-left: 0; } /* ----------------------------------------------------------------------------- * Module styles * -------------------------------------------------------------------------- */ #battery { animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } #battery.warning { color: orange; } #battery.critical { color: red; } #battery.warning.discharging { animation-name: blink-warning; animation-duration: 4s; } #battery.critical.discharging { animation-name: blink-critical; animation-duration: 3s; } #clock { font-weight: bold; } #cpu { /* No styles */ } #cpu.warning { color: orange; } #cpu.critical { color: red; } #memory { animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } #memory.warning { color: orange; } #memory.critical { color: red; animation-name: blink-critical; animation-duration: 2s; } #mode { background: #64727D; border-top: 2px solid white; /* To compensate for the top border and still have vertical centering */ padding-bottom: 2px; } #network { /* No styles */ } #network.disconnected { color: orange; } #pulseaudio { /* No styles */ } #pulseaudio.muted { /* No styles */ } #custom-spotify { color: rgb(102, 220, 105); } #temperature { /* No styles */ } #temperature.critical { color: red; } #tray { /* No styles */ } #window { font-weight: bold; } #workspaces button { border-top: 2px solid transparent; /* To compensate for the top border and still have vertical centering */ padding-bottom: 2px; padding-left: 10px; padding-right: 10px; color: #888888; } #workspaces button.focused { border-color: #4c7899; color: white; background-color: #285577; } #workspaces button.urgent { border-color: #c9545d; color: #c9545d; } ''; }; systemd.user.services.waybar.Unit = { Requisite = lib.mkForce [ ]; After = lib.mkForce [ ]; }; }; }