nixos-config/config/modules/bspwm/polybar.nix

195 lines
5.1 KiB
Nix

{ pkgs, lib, ... }:
{
services.polybar = {
enable = true;
script = ""; # required but we start polybar via bspwm, so dont start it here.
config =
let
theme = import ../theme.nix "light";
colors = theme.colors;
in
rec {
common-bar = {
width = "100%";
height = "${theme.sizing.str.xxl}pt";
radius = 0;
override-redirect = true;
#;dpi = 96
background-0 = "#efefef";
background-1 = colors.background;
background-2 = colors.background;
background-3 = colors.background;
background-4 = colors.background;
background-5 = "#2e2e2e";
foreground = colors.foreground;
line-size = "3pt";
border-size = "${theme.sizing.str.xs}pt";
border-color = colors.primary;
padding-left = 0;
padding-right = 1;
module-margin = 1;
separator = "|";
separator-foreground = colors.disabled;
font-0 = "Charcoal;2";
# wm-restack = "bspwm";
cursor-click = "pointer";
cursor-scroll = "ns-resize";
enable-ipc = true;
};
"global/wm" = {
margin-bottom = 0;
};
"bar/primary" = lib.recursiveUpdate common-bar {
monitor = "DP-2";
modules-left = "xworkspaces xwindow";
modules-right = "filesystem memory cpu wlan date";
};
"bar/secondary" = lib.recursiveUpdate common-bar {
monitor = "HDMI-1";
modules-left = "xworkspaces";
modules-center = "date";
modules-right = "systray";
};
"module/xworkspaces" = {
type = "internal/xworkspaces";
group-by-monitor = true;
pin-workspaces = true;
label-active = "%name%";
label-active-background = colors.background-alt;
label-active-underline = colors.primary;
label-active-padding = 1;
label-occupied = "%name%";
label-occupied-padding = 1;
label-urgent = "%name%";
label-urgent-background = colors.alert;
label-urgent-padding = 1;
label-empty = "%name%";
label-empty-foreground = colors.disabled;
label-empty-padding = 1;
};
"module/systray" = {
type = "internal/tray";
format-margin = "8pt";
tray-spacing = "16pt";
};
"module/xwindow" = {
type = "internal/xwindow";
label = "%title:0:60:...%";
};
"module/filesystem" = {
type = "internal/fs";
interval = 25;
mount-0 = "/";
label-mounted = "%{F${colors.primary}}%mountpoint%%{F-} %percentage_used%%";
label-unmounted = "%mountpoint% not mounted";
label-unmounted-foreground = colors.disabled;
};
"module/pulseaudio" = {
type = "internal/pulseaudio";
format-volume-prefix = "VOL ";
format-volume-prefix-foreground = colors.primary;
format-volume = "<label-volume>";
label-volume = "%percentage%%";
label-muted = "muted";
label-muted-foreground = colors.disabled;
};
"module/xkeyboard" = {
type = "internal/xkeyboard";
blacklist-0 = "num lock";
label-layout = "%layout%";
label-layout-foreground = colors.primary;
label-indicator-padding = 2;
label-indicator-margin = 1;
label-indicator-foreground = colors.background;
label-indicator-background = colors.secondary;
};
"module/memory" = {
type = "internal/memory";
interval = 2;
format-prefix = "RAM ";
format-prefix-foreground = colors.primary;
label = "%percentage_used:2%%";
};
"module/cpu" = {
type = "internal/cpu";
interval = 2;
format-prefix = "CPU ";
format-prefix-foreground = colors.primary;
label = "%percentage:2%%";
};
"network-base" = {
type = "internal/network";
interval = 5;
format-connected = "<label-connected>";
format-disconnected = "<label-disconnected>";
label-disconnected = "%{F${colors.primary}}%ifname%%{F${colors.disabled}} disconnected";
};
"module/wlan" = {
"inherit" = "network-base";
interface-type = "wireless";
label-connected = "%{F${colors.primary}}%ifname%%{F-} %essid% %local_ip%";
};
"module/eth" = {
"inherit" = "network-base";
interface-type = "wired";
label-connected = "%{F${colors.primary}}%ifname%%{F-} %local_ip%";
};
"module/date" = {
type = "internal/date";
interval = 1;
date = "%l:%M%P";
date-alt = "%Y-%m-%d %H:%M:%S";
label = "%date%";
label-foreground = colors.primary;
};
"settings" = {
screenchange-reload = true;
pseudo-transparency = false;
#; vim:ft=dosini
};
};
};
}