Evie Litherland-Smith
6dd70aa58e
Made swayfx the standard, added nixos system-level module to enable and autostart with greetd; Includes fix for missing session that should be fixed in later nixpkgs versions Fixed formatting for waybar workspaces module, wasn't showing active or empty workspaces correctly
348 lines
9.4 KiB
Nix
348 lines
9.4 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" = [
|
|
"sway/workspaces"
|
|
"sway/window"
|
|
];
|
|
"modules-center" = [
|
|
"mpris"
|
|
];
|
|
"modules-right" = [
|
|
"custom/notification"
|
|
"pulseaudio"
|
|
"network"
|
|
"bluetooth"
|
|
"clock#calendar"
|
|
"clock"
|
|
"backlight"
|
|
"battery"
|
|
"custom/weather"
|
|
"tray"
|
|
];
|
|
# Module config
|
|
"sway/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" = [];
|
|
};
|
|
};
|
|
"sway/window" = {
|
|
"format" = "{title}";
|
|
"max-length" = 50;
|
|
"rewrite" = {
|
|
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
|
"(Alacritty.*)" = " $1";
|
|
"(.*) - mpv" = " $1";
|
|
"swayimg: (.*)" = " $1";
|
|
"(btm)" = " Resource Usage [$1]";
|
|
"(cava)" = " Music Visualiser [$1]";
|
|
"(.*) - Thunar" = " $1";
|
|
"Mozilla Firefox" = " $1";
|
|
"(.*) — Mozilla Firefox" = " $1";
|
|
"Nyxt - (.*)" = " $1";
|
|
"(.*) - Chromium" = " $1";
|
|
"((?:.*)WebCord.*)" = " $1";
|
|
"(Signal.*)" = " $1";
|
|
"([Ss]team)" = " $1";
|
|
"(Prism Launcher.*)" = " Minecraft ($1)";
|
|
"(X2Go Client)" = " $1";
|
|
"(NoMachine|Nxplayer.bin) (.*)" = " $1 $2";
|
|
};
|
|
};
|
|
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.persistent {
|
|
color: ${base03};
|
|
}
|
|
#workspaces button.focused {
|
|
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};
|
|
}
|
|
'';
|
|
};
|
|
}
|