{ config, lib, pkgs, ... }: let cfg = config.samfelag.modules.desktop.polybar; in { options.samfelag.modules.desktop.polybar = { enable = lib.mkEnableOption "polybar"; }; config = lib.mkIf cfg.enable { # - Configuration ---------------------------- services.polybar = { enable = true; package = pkgs.polybar.override { i3Support = true; pulseSupport = true; }; config = { # - Colors ------------------------------- "colors" = { "background" = "#222"; "background-alt" = "#444"; "foreground" = "#dfdfdf"; "foreground-alt" = "#555"; "primary" = "#ffb52a"; "secondary" = "#e60053"; "alert" = "#bd2c40"; }; # - Mainbar ------------------------------ "bar/mainbar-i3" = { "monitor" = "\${env:MONITOR}"; "monitor-strict" = "false"; "bottom" = "false"; "fixed-center" = "true"; "width" = "100%"; "height" = "30"; "background" = "\${colors.background}"; "foreground" = "\${colors.foreground}"; "radius" = "0.0"; "line-size" = "2"; "line-color" = "#000000"; "border-color" = "#000000"; "padding-left" = "1"; "padding-right" = "1"; "module-margin-left" = "0"; "module-margin-right" = "0"; "font-0" = "\"Iosevka:style=Regular:size=15;2\""; "font-1" = "\"Iosevka:size=16;3\""; "font-2" = "\"Iosevka:style=Regular:pixelsize=10;1\""; "font-3" = "\"Iosevka:style=Solid:pixelsize=10;1\""; "font-4" = "\"Iosevka:pixelsize=10;1\""; "modules-left" = "i3"; "modules-center" = "date"; "modules-right" = "wifi pulseaudio battery"; "separator" = "\" : \""; "tray-position" = "left"; "tray-detached" = "false"; "tray-maxsize" = "20"; "tray-background" = "\${colors.background}"; "tray-offset-x" = "0"; "tray-offset-y" = "0"; "tray-padding" = "4"; "tray-scale" = "1.0"; "enable-ipc" = "true"; "click-left" = ""; "click-middle" = ""; "click-right" = ""; "scroll-up" = "i3wm-wsnext"; "scroll-down" = "i3wm-wsprev"; "double-click-left" = ""; "double-click-middle" = ""; "double-click-right" = ""; "cursor-click" = ""; "cursor-scroll" = ""; }; # - Module: i3 --------------------------- "module/i3" = { "type" = "internal/i3"; "format" = " "; "index-sort" = "true"; "wrapping-scroll" = "false"; "label-mode-padding" = "2"; "label-mode-foreground" = "#000"; "label-mode-background" = "\${colors.primary}"; "label-focused" = "%index%"; "label-focused-background" = "\${colors.background-alt}"; "label-focused-underline" = "\${colors.secondary}"; "label-focused-padding" = "2"; "label-unfocused" = "%index%"; "label-unfocused-padding" = "2"; "label-visible" = "%index%"; "label-visible-background" = "\${self.label-focused-background}"; "label-visible-underline" = "\${colors.primary}"; "label-visible-padding" = "\${self.label-focused-padding}"; "label-urgent" = "%index%"; "label-urgent-background" = "\${colors.alert}"; "label-urgent-padding" = "2"; }; # - Module: date ------------------------- "module/date" = { "type" = "internal/date"; "interval" = "1"; "date" = "%A, %d %B %Y"; "time" = "%H:%M:%S"; "time-alt" = "%H:%M:%S %Z (%z)"; "date-alt" = "%Y-%m-%d"; "format-prefix" = ""; "format-prefix-foreground" = "\${colors.foreground-alt}"; "format-underline" = ""; "label" = "%date% · %time%"; }; # - Module: pulseaudio ------------------- "module/pulseaudio" = { "type" = "internal/pulseaudio"; "format-volume" = " "; "label-volume" = "VOL %percentage%%"; "label-volume-foreground" = "\${colors.foreground-alt}"; "label-muted" = "muted"; "label-muted-foreground" = "#666"; "bar-volume-width" = "10"; "bar-volume-foreground-0" = "#55aa55"; "bar-volume-foreground-1" = "#55aa55"; "bar-volume-foreground-2" = "#55aa55"; "bar-volume-foreground-3" = "#55aa55"; "bar-volume-foreground-4" = "#55aa55"; "bar-volume-foreground-5" = "#f5a70a"; "bar-volume-foreground-6" = "#ff5555"; "bar-volume-gradient" = "false"; "bar-volume-indicator" = "|"; "bar-volume-indicator-font" = "0"; "bar-volume-fill" = "-"; "bar-volume-fill-font" = "0"; "bar-volume-empty" = "-"; "bar-volume-empty-font" = "0"; "bar-volume-empty-foreground" = "\${colors.foreground-alt}"; }; # - Module: battery ---------------------- "module/battery" = { "type" = "internal/battery"; "battery" = "BAT0"; "adapter" = "AC"; "full-at" = "98"; "format-charging-prefix" = "\"▴\""; "format-charging" = ""; "format-charging-foreground" = "#55aa55"; "format-charging-underline" = ""; "format-discharging-prefix" = "\"▾\""; "format-discharging" = ""; "format-discharging-foreground" = "#f5a70a"; "format-discharging-underline" = ""; "format-full" = "FULL BATTERY"; "format-full-foreground" = "#55aa55"; "format-full-underline" = "\${self.format-charging-underline}"; "ramp-capacity-0" = ""; "ramp-capacity-1" = ""; "ramp-capacity-2" = ""; "ramp-capacity-foreground" = "\${colors.foreground-alt}"; }; }; script = "polybar --reload mainbar-i3 &"; # #!/usr/bin/env bash # # Terminate already running bar instances # killall -q polybar # # # Wait until the processes have been shut down # while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done # # for m in $(polybar --list-monitors | cut -d":" -f1); do # WIRELESS=$(ls /sys/class/net/ | grep ^wl | awk 'NR==1{print $1}') MONITOR=$m polybar --reload mainbar-i3 & # done # # echo "Bars launched..." # ''; }; }; }