From 824a42ad72d90420713e6e87d75fedcb1366295e Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Mon, 22 Dec 2025 14:48:12 -0500 Subject: Add ef-dream theme and integrate with vim/polybar configs Amp-Thread-ID: https://ampcode.com/threads/T-019b479a-0995-731e-8d63-ed185a1ab54a Co-authored-by: Amp --- lib/polybar.nix | 235 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 124 insertions(+), 111 deletions(-) (limited to 'lib/polybar.nix') diff --git a/lib/polybar.nix b/lib/polybar.nix index dc384f6..d3d5c3d 100644 --- a/lib/polybar.nix +++ b/lib/polybar.nix @@ -5,71 +5,105 @@ let inherit (import ./theme.nix { inherit pkgs lib; }) colors theme; - size-int = fontSize*2; + size-int = fontSize + 3; size = toString size-int; + bar-height = size-int + 16; bar-common = { background = colors."${theme}".background; foreground = colors."${theme}".foreground; - font-0 = "FiraSans:size=${size};0"; - font-1 = "Font Awesome 5:pixelsize=${size};0"; - font-2 = "MaterialIcons:size=${size}:antialias=false;0"; + font-0 = "Fira Code:size=${size};2"; + font-1 = "Font Awesome 5 Free:style=Solid:pixelsize=${size};2"; + font-2 = "Noto Color Emoji:scale=10;2"; - line-size = "${size}pt"; - border-size = "5pt"; + line-size = "2pt"; + border-size = "0pt"; - height = "${toString (size-int+14)}pt"; + height = "${toString bar-height}pt"; width = "100%"; - radius = 6; - padding-left = 0; + radius = 0; + padding-left = 1; padding-right = 1; module-margin = 1; enable-ipc = true; - - # these are deprecated, i need to rework this - tray-background = colors."${theme}".background; - tray-detached = false; - tray-maxsize = size-int; - tray-padding = 5; - tray-scale = 1; }; in { services.polybar = { config = { - "bar/perf" = bar-common // { - modules-center = "date"; - modules-left = [ "eth" ]; - modules-right = [ "mem" "temp" ]; - radius = 0; - separator = "|"; + # Top bar: user-level work stuff (workspaces, date, tray) + "bar/top" = bar-common // { + modules-left = [ "ewmh" ]; + modules-center = [ "date" ]; + modules-right = [ "pulseaudio" "battery" ]; tray-position = "right"; + tray-background = colors."${theme}".background; + tray-padding = 4; + separator = " "; + separator-foreground = colors.${theme}.highlight; }; - "bar/cpu" = bar-common // { - modules-center = ["cpu"]; + # Bottom bar: memory, temp, network (stacked above CPU bar) + "bar/bottom" = bar-common // { + bottom = true; + offset-y = "${toString bar-height}pt"; + modules-left = [ "mem" ]; + modules-center = [ "temp" ]; + modules-right = [ "network-speed" ]; + separator = " โ”‚ "; + separator-foreground = colors.${theme}.highlight; }; - "bar/org" = bar-common // { - modules-right = [ "date" ]; - modules-left = ["ewmh" ]; - radius = 0; - separator = "|"; + # CPU bar: very bottom, just CPU cores + "bar/cpu" = bar-common // { + bottom = true; + modules-center = [ "cpu" ]; }; "module/ewmh" = { type = "internal/xworkspaces"; - label-active-foreground = "#fff"; + pin-workspaces = false; + enable-click = true; + enable-scroll = true; + label-active = "%name%"; + label-active-foreground = colors.${theme}.background; + label-active-background = colors.${theme}.cursor; + label-active-padding = 1; + label-occupied = "%name%"; + label-occupied-foreground = colors.${theme}.foreground; + label-occupied-padding = 1; + label-urgent = "%name%"; + label-urgent-foreground = colors.${theme}.background; + label-urgent-background = colors.${theme}.red; + label-urgent-padding = 1; + label-empty = "%name%"; + label-empty-foreground = colors.${theme}.cyan; + label-empty-padding = 1; }; "module/date" = { type = "internal/date"; - internal = 5; - date = "%Y.%m.%d"; - time = "%H.%M"; - label = "%date%..%time%"; + interval = 5; + date = "%a %Y.%m.%d"; + time = "%H:%M"; + label = "%date% %time%"; + label-foreground = colors.${theme}.foreground; + }; + + "module/pulseaudio" = { + type = "internal/pulseaudio"; + use-ui-max = false; + interval = 5; + format-volume = " "; + label-volume = "%percentage%%"; + label-muted = "๐Ÿ”‡ muted"; + label-muted-foreground = colors.${theme}.cyan; + ramp-volume-0 = "๐Ÿ”ˆ"; + ramp-volume-1 = "๐Ÿ”‰"; + ramp-volume-2 = "๐Ÿ”Š"; + click-right = "pwvucontrol &"; }; "module/battery" = { @@ -77,73 +111,55 @@ in { battery = "BAT0"; adapter = "AC"; full-at = 99; - }; - - "module/volume-bar" = { - type = "internal/alsa"; - master-soundcard = "hw:1"; - bar-volume-font = 2; - bar-volume-width = 9; - format-volume = ""; - label-volume = " .) "; - label-muted = " .) mute"; - label-volume-foreground = colors.${theme}.foreground; - format-muted-foreground = colors.${theme}.foreground; - bar-volume-foreground-0 = colors.${theme}.foreground; - bar-volume-foreground-1 = colors.${theme}.foreground; - bar-volume-foreground-2 = colors.${theme}.foreground; - bar-volume-foreground-3 = colors.${theme}.foreground; - bar-volume-foreground-4 = colors.${theme}.foreground; - bar-volume-foreground-5 = colors.${theme}.foreground; - bar-volume-foreground-6 = colors.${theme}.foreground; - bar-volume-gradient = true; - bar-volume-indicator = "โ€ข"; - bar-volume-fill = "โ€ข"; - bar-volume-empty = "ยท"; - bar-volume-empty-foreground = colors.${theme}.foreground; - }; - - "network-base" = { - type = "internal/network"; - interval = 5; - format-connected = ""; - format-disconnected = ""; - label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; - }; - - "module/eth" = { - "inherit" = "network-base"; - interface-type = "wired"; - label-connected = "%{F#F0C674}%ifname%%{F-} %local_ip%"; - #label-connected = "eth up: %upspeed:9% down: %downspeed%"; - #label-disconnected = "no eth"; - }; - - "module/wifi" = { - type = "internal/network"; - interface = "wlan1"; - label-connected = "wifi up: %upspeed% down: %downspeed%"; - label-disconnected = "no wifi"; + format-charging = "โšก "; + format-discharging = "๐Ÿ”‹ "; + format-full = "โœ“ "; + label-charging = "%percentage%%"; + label-discharging = "%percentage%%"; + label-full = "%percentage%%"; }; "module/cpu" = { type = "internal/cpu"; - interval = 3; + interval = 2; format-padding = 1; format = "