343 lines
9.5 KiB
Nix
343 lines
9.5 KiB
Nix
{ lib, pkgs, config, ... }: {
|
|
home-manager.users.agatha = {
|
|
|
|
systemd.user.services.polybar = {
|
|
Service = {
|
|
Environment = lib.mkForce (lib.concatStringsSep ":" [
|
|
"PATH=${config.home-manager.users.agatha.services.polybar.package}/bin"
|
|
"/run/wrappers/bin"
|
|
"${pkgs.dbus}/bin"
|
|
"${pkgs.dunst}/bin"
|
|
"${pkgs.systemd}/bin"
|
|
"${pkgs.util-linux}/bin"
|
|
"${pkgs.gnused}/bin"
|
|
"${pkgs.kitty}/bin"
|
|
]);
|
|
};
|
|
Install = { WantedBy = [ "graphical-session.target" ]; };
|
|
};
|
|
|
|
xdg.configFile."polybar/config.ini".onChange =
|
|
"${pkgs.systemd}/bin/systemctl --user restart polybar.service";
|
|
|
|
services.polybar = {
|
|
enable = true;
|
|
package = pkgs.polybarFull;
|
|
|
|
settings = let
|
|
color = n:
|
|
config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString
|
|
n}";
|
|
in {
|
|
"colors" = {
|
|
background = color 0;
|
|
foreground = color 7;
|
|
foreground-alt = color 7;
|
|
primary = color 1;
|
|
secondary = color 2;
|
|
alert = color 3;
|
|
red = color 4;
|
|
};
|
|
|
|
"bar/left" = {
|
|
width = "100%:-30";
|
|
height = 30;
|
|
offset-x = 15;
|
|
offset-y = 12;
|
|
radius = 0;
|
|
fixed-center = true;
|
|
|
|
background = "\${colors.background}";
|
|
foreground = "\${colors.foreground}";
|
|
|
|
line = {
|
|
size = 0;
|
|
color = color 3;
|
|
};
|
|
border = {
|
|
size = 3;
|
|
color = color 1;
|
|
};
|
|
padding = {
|
|
left = 2;
|
|
right = 2;
|
|
};
|
|
module.margin = {
|
|
left = 1;
|
|
right = 1;
|
|
};
|
|
|
|
font = {
|
|
"0" = "Iosevka Gothic:pixelsize=10;3";
|
|
"1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2";
|
|
"2" = "Siji:pixelsize=11;2";
|
|
"3" = "Symbols Nerd Font:pixelsize=10;2";
|
|
"4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1";
|
|
};
|
|
|
|
modules = {
|
|
left = "bspwm";
|
|
center = "date";
|
|
right = "spotify wireguard notification-status";
|
|
};
|
|
|
|
wm-restack = "bspwm";
|
|
cursor-click = "pointer";
|
|
locale = "de_DE.UTF-8";
|
|
};
|
|
|
|
"bar/right" = {
|
|
width = "100%:-30";
|
|
height = 30;
|
|
offset-x = 15;
|
|
offset-y = 12;
|
|
radius = 0;
|
|
fixed-center = true;
|
|
|
|
background = "\${colors.background}";
|
|
foreground = "\${colors.foreground}";
|
|
|
|
line = {
|
|
size = 0;
|
|
color = color 3;
|
|
};
|
|
border = {
|
|
size = 3;
|
|
color = color 1;
|
|
};
|
|
padding = {
|
|
left = 2;
|
|
right = 2;
|
|
};
|
|
module.margin = {
|
|
left = 1;
|
|
right = 1;
|
|
};
|
|
|
|
font = {
|
|
"0" = "Iosevka Gothic:pixelsize=10;3";
|
|
"1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2";
|
|
"2" = "Siji:pixelsize=11;2";
|
|
"3" = "Symbols Nerd Font:pixelsize=10;2";
|
|
"4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1";
|
|
};
|
|
|
|
modules = {
|
|
left = "bspwm";
|
|
center = "date";
|
|
right = lib.mkDefault
|
|
"filesystem battery pulseaudio xkeyboard memory cpu notification-status powermenu";
|
|
};
|
|
|
|
wm-restack = "bspwm";
|
|
cursor-click = "pointer";
|
|
locale = "de_DE.UTF-8";
|
|
};
|
|
|
|
"module/xkeyboard" = {
|
|
type = "internal/xkeyboard";
|
|
blacklist-0 = "num lock";
|
|
|
|
format-prefix = " ";
|
|
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
|
|
label = {
|
|
layout = "%layout%";
|
|
|
|
indicator = {
|
|
padding = 2;
|
|
margin = 1;
|
|
background = "\${colors.secondary}";
|
|
underline = "\${colors.secondary}";
|
|
};
|
|
};
|
|
};
|
|
|
|
"module/bspwm" = {
|
|
type = "internal/bspwm";
|
|
|
|
label = {
|
|
focused = "%name%";
|
|
focused-foreground = "\${colors.primary}";
|
|
focused-padding = 1;
|
|
|
|
occupied = "%name%";
|
|
occupied-padding = 1;
|
|
|
|
urgent = "%name%!";
|
|
urgent-background = "\${xrdb:color1:#222}";
|
|
urgent-padding = 1;
|
|
|
|
empty = "%name%";
|
|
empty-foreground = "\${colors.foreground-alt}";
|
|
empty-padding = 1;
|
|
};
|
|
};
|
|
|
|
"module/date" = {
|
|
type = "internal/date";
|
|
interval = 5;
|
|
|
|
date = "";
|
|
date-alt = " %a, %d %b %Y";
|
|
|
|
time = "%H:%M";
|
|
time-alt = "%H:%M:%S";
|
|
|
|
format-prefix = "";
|
|
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
|
|
label = ''
|
|
%{A3:${pkgs.dunst}/bin/dunstify ' Calendar' "$(${pkgs.util-linux}/bin/cal --color=always | ${pkgs.sd}/bin/sd '\\x1b\[7m' '<b>' | ${pkgs.sd}/bin/sd '\\x1b\[0m' '</b>')":}%date%%{A} %time%
|
|
'';
|
|
};
|
|
|
|
"module/filesystem" = {
|
|
type = "internal/fs";
|
|
interval = 25;
|
|
|
|
mount-0 = "/";
|
|
|
|
label-mounted = "%mountpoint%: %percentage_used%%";
|
|
label-unmounted = "%mountpoint% not mounted";
|
|
label-unmounted-foreground = "\${colors.foreground-alt}";
|
|
};
|
|
|
|
"module/cpu" = {
|
|
type = "internal/cpu";
|
|
interval = 2;
|
|
format-prefix = " ";
|
|
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
label = "%{A1:kitty btop:}%percentage:2%%%{A}";
|
|
};
|
|
|
|
"module/memory" = {
|
|
type = "internal/memory";
|
|
interval = 2;
|
|
format-prefix = " ";
|
|
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
label = "%{A1:kitty btop:}%percentage_used%%%{A}";
|
|
};
|
|
|
|
"module/pulseaudio" = {
|
|
type = "internal/pulseaudio";
|
|
|
|
format-volume = "%{A3:pavucontrol:}<label-volume> <bar-volume>%{A}";
|
|
label-volume = " %percentage%%";
|
|
label-volume-foreground = "\${root.foreground}";
|
|
|
|
label-muted = " muted";
|
|
label-muted-foreground = "\${colors.primary}";
|
|
|
|
bar.volume = {
|
|
width = 14;
|
|
foreground-0 = "\${colors.secondary}";
|
|
foreground-1 = "\${colors.secondary}";
|
|
foreground-2 = "\${colors.primary}";
|
|
foreground-3 = "\${colors.primary}";
|
|
foreground-4 = "\${colors.primary}";
|
|
foreground-5 = "\${colors.alert}";
|
|
foreground-6 = "\${colors.red}";
|
|
gradient = false;
|
|
indicator = "|";
|
|
indicator-font = 5;
|
|
fill = "─";
|
|
fill-font = 2;
|
|
empty = "─";
|
|
empty-font = 2;
|
|
empty-foreground = "\${colors.foreground-alt}";
|
|
};
|
|
};
|
|
|
|
"module/powermenu" = {
|
|
type = "custom/menu";
|
|
|
|
expand-right = true;
|
|
format-spacing = 1;
|
|
|
|
label = {
|
|
open = "";
|
|
open-foreground = "\${colors.secondary}";
|
|
close = " cancel";
|
|
close-foreground = "\${colors.secondary}";
|
|
separator = "|";
|
|
separator-foreground = "\${colors.foreground-alt}";
|
|
};
|
|
|
|
menu = {
|
|
"0-0" = "reboot";
|
|
"0-0-exec" = "${pkgs.systemd}/bin/reboot";
|
|
"0-1" = "power off";
|
|
"0-1-exec" = "${pkgs.systemd}/bin/shutdown now";
|
|
};
|
|
};
|
|
|
|
"module/battery" = {
|
|
type = "internal/battery";
|
|
full-at = 99;
|
|
low-at = 10;
|
|
battery = "BAT0";
|
|
adapter = "AC";
|
|
poll-interval = 3;
|
|
|
|
content-font = 3;
|
|
|
|
format-charging = "<animation-charging> <label-charging>";
|
|
format-discharging = "<ramp-capacity> <label-discharging>";
|
|
label = {
|
|
charging = "%percentage_raw%%";
|
|
discharging = "%percentage_raw%%";
|
|
full = "";
|
|
};
|
|
|
|
ramp = {
|
|
capacity-0 = "";
|
|
capacity-1 = "";
|
|
capacity-2 = "";
|
|
capacity-3 = "";
|
|
capacity-4 = "";
|
|
};
|
|
|
|
animation = {
|
|
charging-0 = "";
|
|
charging-1 = "";
|
|
charging-2 = "";
|
|
charging-3 = "";
|
|
charging-4 = "";
|
|
|
|
charging-framerate = 750;
|
|
};
|
|
};
|
|
|
|
"module/notification-status" = {
|
|
type = "custom/script";
|
|
exec = ''
|
|
if $(dunstctl is-paused); then echo "Notifications paused"; else echo ""; fi'';
|
|
interval = 2;
|
|
format-prefix = " ";
|
|
};
|
|
|
|
"module/wireguard" = {
|
|
type = "custom/script";
|
|
exec = ''
|
|
${pkgs.networkmanager}/bin/nmcli conn show --active | ${pkgs.ripgrep}/bin/rg -q wireguard && echo "VPN Connected" || echo ""'';
|
|
click-left = "kitty nmtui";
|
|
interval = 5;
|
|
format-prefix = " ";
|
|
};
|
|
|
|
"module/spotify" = {
|
|
type = "custom/script";
|
|
interval = 1;
|
|
exec =
|
|
"${pkgs.polybar-spotify}/bin/polybar-spotify -f '{artist}: {song}'";
|
|
format-prefix = " ";
|
|
format = "<label>";
|
|
click-left =
|
|
"${pkgs.playerctl}/bin/playerctl --player=spotify play-pause";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|