nixos/home/waybar/default.nix
Evie Litherland-Smith 077b04ca73 Remove teams-for-linux, update chromium config and add package
teams-for-linux seems to have support issues with new teams updates,
so switching to just using chromium as my browser as that should work
better

Add chromium package back, also waybar rewrite and window rules, set
as default browser for mimeapps

Update chromium configs; Add ManagedBookmarks and alphabetise the
other config options. Add ublock-origin, simplelogin and catppuccin
theme plugins
2024-04-03 11:02:26 +01:00

349 lines
9.5 KiB
Nix

{
config,
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
};
programs.waybar = {
enable = true;
settings.main = {
layer = "top";
position = "top";
# Layout
"modules-left" = [
"hyprland/workspaces"
];
"modules-center" = [
"hyprland/window"
"mpris"
];
"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";
"(.*) - Chromium" = "󰊯 $1";
"((?:.*)WebCord.*)" = "󰙯 $1";
"(Signal.*)" = "󰭹 $1";
"(WhatsApp for Linux.*)" = "󰖣 $1";
"([Ss]team)" = "󰓓 $1";
"(Prism Launcher.*)" = "󰍳 Minecraft ($1)";
"(.*) Microsoft Teams(?: classic)" = "$1 󰊻 ";
"(X2Go Client)" = "󰢹 $1";
"(NoMachine|Nxplayer.bin) (.*)" = "󰢹 $1 $2";
};
"separate-outputs" = true;
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "󰟀 ";
"2" = "󰖟 ";
"3" = "󰝚 ";
"4" = "󰭻 ";
"5" = "󰹁 ";
"6" = "󰫃 ";
"7" = "󰫄 ";
"8" = "󰫅 ";
"9" = "󰫆 ";
"10" = "󰫇 ";
default = "󰫈 ";
urgent = "󰁡 ";
};
show-special = false;
sort-by-number = true;
all-outputs = false;
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
};
};
mpris = {
"format" = "{status_icon} {player_icon} {artist} - {title}";
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
"title-len" = 48;
"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}";
format = "{:%Y-%m-%d}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
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}";
format = "{:%R}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
};
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" = true;
"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 = fonts.sizes.desktop;
show-passive-items = true;
spacing = 5;
};
};
style = with scheme.withHashtag; let
accent = scheme.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}, 0.8);
margin: 5px 10px 0px;
padding: 0px;
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip {
/* TODO make transparent when I can fix the blurls issue */
/* background: alpha(${base00}, 0.8); */
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};
}
'';
};
}