nixos/home/waybar/default.nix
Evie Litherland-Smith 6686c06ef8 Update waybar wttr and tooltip settings
Remove wttr tooltip, add custom format to include "feels like"
temperature

Split tooltip styling into tooltip and tooltip label for better
control. Still can't use transparency for now though, TODO later.
2024-03-09 12:18:03 +00:00

326 lines
9.1 KiB
Nix

{
config,
pkgs,
accentColour ? "base07",
...
}: {
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
};
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "hyprland-session.target";
};
settings.main = {
layer = "top";
position = "bottom";
# Layout
"modules-left" = ["hyprland/window" "mpris"];
"modules-center" = ["hyprland/workspaces"];
"modules-right" = [
"custom/notification"
"pulseaudio"
"network"
"bluetooth"
"clock#calendar"
"clock"
"backlight"
"battery"
"custom/weather"
"tray"
];
# Module config
"hyprland/window" = {
"format" = "{title}";
"rewrite" = {
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
"(Alacritty.*)" = " $1";
"(.*) - mpv" = "󰦟 $1";
"(btm)" = " Resource Usage [$1]";
"(cava)" = "󰝚 Music Visualiser [$1]";
"(.*) - Thunar" = "󰝰 $1";
"Nyxt - (.*)" = "󰀹 $1";
"Mozilla Firefox" = "󰈹 $1";
"(.*) Mozilla Firefox" = "󰈹 $1";
"((?:.*)WebCord.*)" = "󰙯 $1";
"(Signal.*)" = "󰭹 $1";
"(WhatsApp for Linux.*)" = "󰖣 $1";
"([Ss]team)" = "󰓓 $1";
"(Prism Launcher.*)" = "󰍳 Minecraft ($1)";
"Microsoft Teams(?: classic)?(?: - )?(.*)(?: \| Microsoft Teams)?" = "󰊻 $1";
};
"separate-outputs" = true;
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "󰋙 ";
active = "󰫈 ";
urgent = "󰁡 ";
};
show-special = false;
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
"6" = [];
"7" = [];
"8" = [];
"9" = [];
};
};
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 = "${pkgs.pavucontrol}/bin/pavucontrol";
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 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 = ["󱃃" "󰔏" "󱃂"];
};
network = {
format-icons = ["󰤟 " "󰤢 " "󰤥 " "󰤨 "];
format-wifi = "{icon}";
format-ethernet = "󰈁 ";
tooltip-format = "{essid} ({signalStrength}%)";
format-linked = "󰈂 ";
format-disconnected = "󰈂 ";
};
bluetooth = {
format = "󰂯";
format-disabled = "󰂲";
format-off = "󰂲";
format-on = "󰂯";
format-connected = "󰂱";
tooltip-format = "{status} | {device_alias}";
on-click = "${pkgs.bluez}/bin/bluetoothctl power on";
on-click-right = "${pkgs.bluez}/bin/bluetoothctl power off";
};
"clock#calendar" = {
format = "{:󰃭 %Y-%m-%d}";
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";
};
};
clock = {format = "{:󰥔 %R}";};
backlight = {
format = "{icon}";
tooltip-format = "{percent}%";
format-icons = [" " " " " " " " " " " " " " " " " "];
};
battery = {
states = {
warning = 30;
critical = 20;
};
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;
};
"custom/weather" = let
date-format = "%Y-%m-%d";
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
in {
"format" = "{}°";
"tooltip" = false;
"interval" = 900; # Every 15 minutes
"exec" = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
"return-type" = "json";
};
tray = {
icon-size = config.stylix.fonts.sizes.desktop;
show-passive-items = true;
spacing = 5;
};
};
style = with config.stylix;
with config.lib.stylix.colors.withHashtag; let
accent = config.lib.stylix.colors.withHashtag.${accentColour};
in ''
* {
all: unset;
font-size: ${toString fonts.sizes.desktop}px;
font-family: "${fonts.monospace.name}";
}
window {
background: transparent;
}
window > box {
color: ${base05};
background: alpha(${base00}, ${toString opacity.desktop});
margin: 0px 10px 5px;
padding: 0px;
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip {
/* TODO make transparent when I can fix the blurls issue */
/* background: alpha(${base00}, ${toString opacity.popups}); */
background: ${base00};
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip label {
color: ${base05};
border: none;
padding: 5px;
margin: 0px;
}
#workspaces,
#window,
#mpris,
#pulseaudio,
#network,
#bluetooth,
#backlight,
#battery,
#clock,
#custom-notification,
#custom-weather,
#tray {
margin: 0px;
padding: 1px 5px;
}
#workspaces,
#window,
#mpris,
#tray,
#backlight,
#battery,
#custom-weather {
color: ${base05};
}
#workspaces button {
background: transparent;
color: ${base05};
margin: 0px;
padding: 0px 5px;
}
#workspaces button.empty {
color: ${base03};
}
#workspaces button.active {
color: ${accent};
}
#workspaces button.urgent {
color: ${base09};
}
#custom-notification {
color: ${base08};
}
#pulseaudio {
color: ${base09};
}
#network {
color: ${base0A};
}
#bluetooth {
color: ${base0B};
}
#clock.calendar {
color: ${base0C};
}
#clock {
color: ${base0D};
}
'';
};
}