nixos/home/waybar/default.nix
Evie Litherland-Smith d4aab0d669 waybar: fix swaync-client missing by referencing package directly
Fix MS Teams waybar rewrite, I think the pipe was causing issues
2024-01-29 14:14:48 +00:00

186 lines
5.5 KiB
Nix

{ config, pkgs, ... }: {
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
programs.waybar = {
enable = true;
style = ./style.css;
systemd = {
enable = true;
target = "hyprland-session.target";
};
settings.main = {
layer = "top";
position = "top";
# Layout
"modules-left" = [ "hyprland/window" "mpris" ];
"modules-center" = [ "hyprland/workspaces" ];
"modules-right" = [
"custom/notification"
"pulseaudio"
"clock"
"custom/separator"
"backlight"
"battery"
"tray"
];
# Module config
"custom/separator" = { format = "|"; };
"hyprland/window" = {
"format" = "{title}";
# TODO workspace rewrites
"rewrite" = {
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
"foot" = " ";
"Nyxt - (.*)" = "󰀹 $1";
"(.*) Mozilla Firefox" = "󰈹 $1";
"(.*) - Thunar" = "󰝰 $1";
".*WebCord (.*)" = "󰙯 $1";
"(Steam|steam)" = "󰓓 ";
"(.*) - mpv" = "󰦟 $1";
"Microsoft Teams - (.*)" = "󰊻 $1";
};
"separate-outputs" = true;
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "󰋙 ";
active = "󰫈 ";
urgent = "󰁡 ";
};
show-special = false;
sort-by = "id";
persistent-workspaces = {
"1" = [ ];
"2" = [ ];
"3" = [ ];
"4" = [ ];
"5" = [ ];
"6" = [ ];
};
};
mpris = {
"format" = "> {player_icon} {player}";
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
"interval" = 1;
"dynamic-order" = [ "album" "artist" "title" "position" "length" ];
"player-icons" = {
"default" = "󰲸 ";
"emms" = " ";
"firefox" = "󰈹 ";
"mpv" = "󰦟 ";
};
"status-icons" = {
"playing" = "󰐊";
"paused" = "󰏤";
"stopped" = "󰓛";
};
"ignored-players" = [ ];
};
pulseaudio = {
scroll-step = 5;
format = "{format_source} {icon} {volume}%";
format-muted = "{format_source} 󰝟 ";
format-source = "󰍬";
format-source-muted = "󰍭";
format-icons = {
car = "󰄍";
default = [ "󰕿" "󰖀" "󰕾" ];
hands-free = "󰥰";
headset = "󰋎";
phone = "󰏲";
portable = "󰏳";
headphone = "󰋋";
};
on-click = "pavucontrol";
on-click-middle = "volumectl -m %";
on-click-right = "volumectl %";
on-scroll-up = "volumectl -u + 5";
on-scroll-down = "volumectl -u - 5";
};
disk = {
format = "󰋊 {percentage_used}%";
path = config.home.homeDirectory;
};
cpu = {
format = "󰻠 {usage}%";
tooltip = false;
};
memory = { format = "󰍛 {}%"; };
temperature = {
critical-threshold = 80;
format = "{icon} {temperatureC}°C";
format-icons = [ "󱃃" "󰔏" "󱃂" ];
};
clock = {
format = "{:󰃭 %Y-%m-%d 󰥔 %R}";
format-alt = "{:󰥔 %R}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
weeks-pos = "left";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
actions = {
on-click-right = "mode";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
backlight = {
format = "{icon} ";
tooltip-format = "{percent}%";
format-icons = [ "" "" "" "" "" "" "" "" "" ];
};
battery = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} ";
format-charging = "󰂄 ";
format-plugged = "󰚥 ";
tooltip-format = "{capacity}% {time}";
format-icons = [ "󱃍" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
};
"custom/notification" = let swaync = pkgs.swaynotificationcenter;
in {
"tooltip" = false;
"format" = "{icon}{}";
"format-icons" = {
"notification" = "󱅫 ";
"none" = "󰂚 ";
"dnd-notification" = "󰅸 ";
"dnd-none" = "󰂜 ";
"inhibited-notification" = "󰅸 ";
"inhibited-none" = "󰂜 ";
"dnd-inhibited-notification" = "󰅸 ";
"dnd-inhibited-none" = "󰂜 ";
};
"return-type" = "json";
"exec-if" = "which ${swaync}/bin/swaync-client";
"exec" = "${swaync}/bin/swaync-client -swb";
"on-click" = "${swaync}/bin/swaync-client -t -sw";
"on-click-right" = "${swaync}/bin/swaync-client -d -sw";
"escape" = true;
};
tray = {
icon-size = 16;
show-passive-items = true;
spacing = 5;
};
};
};
}