nixos/system/home/sway/waybar/default.nix
Evie Litherland-Smith 2ac1d1a63e Initial changes to add stylix again
Add stylix with theme, font and image configuration.

Change all relevant (current) options to that nix evaluates without
error, not fully tested yet though.

Remove plasma manager and associated components.

Condensed some files - remove some standalone files for packages with
much smaller configuration now that they're not being manually themed.
2024-09-19 08:05:48 +01:00

396 lines
10 KiB
Nix

{
config,
pkgs,
fonts,
accentColourName,
...
}:
{
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session.target" ];
};
programs.waybar = {
enable = true;
systemd.enable = true;
settings.main = {
name = "main";
layer = "top";
position = "top";
# Layout
"modules-left" = [
"sway/window"
"mpris"
];
"modules-center" = [ "sway/workspaces" ];
"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" = "󰫈 ";
default = "󰋙 ";
urgent = "󰁡 ";
};
all-outputs = false;
persistent-workspaces = {
"1" = [ ];
"2" = [ ];
"3" = [ ];
"4" = [ ];
"5" = [ ];
"6" = [ ];
};
};
"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";
"(Signal.*)" = "󰭹 $1";
"((?:.*)WebCord.*)" = "󰙯 $1";
"(Cartridges.*)" = "󰊗 $1";
"([Ss]team.*)" = "󰓓 $1";
"(Prism Launcher.*)" = "󰍳 Minecraft ($1)";
"(.*)(?: *)PrusaSlicer-(.*)" = "󰐫 $1 PrusaSlicer ($2)";
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = "󰹛 $1 G-code Viewer ($2)";
"FreeCAD (.*)" = "󰻬 FreeCAD $1";
"(.*) - Blender.* " = "󰂫 $1";
"(X2Go Client)" = "󰢹 $1";
"(NoMachine|Nxplayer.bin) (.*)" = "󰢹 $1 $2";
"(.*) \| Microsoft Teams" = "󰊻 ($1)";
};
};
mpris = {
"format" = "{player_icon} {artist} - {title} {status_icon}";
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
"title-len" = 64;
"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 = "󰈁 ";
format-linked = "󰈂 ";
format-disconnected = "󰈂 ";
tooltip-format = "{essid} ({signalStrength}%)";
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
};
bluetooth = {
format = "󰂯";
format-disabled = "󰂲";
format-off = "󰂲";
format-on = "󰂯";
format-connected = "󰂱";
tooltip-format = "{status} | {device_alias}";
on-click = "${pkgs.blueman}/bin/blueman-manager";
};
"clock#calendar" = {
format = "󰃭 {:%Y-%m-%d}";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
weeks-pos = "left";
on-scroll = 1;
format =
let
sc = config.scheme.withHashtag;
in
{
months = "<span color='${sc.red}'><b>{}</b></span>";
weeks = "<span color='${sc.cyan}'><b>W{}</b></span>";
weekdays = "<span color='${sc.orange}'><b>{}</b></span>";
days = "<span color='${sc.base05}'><b>{}</b></span>";
today = "<span color='${sc.${accentColourName}}'><b><i>{}</i></b></span>";
};
};
actions = {
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
clock.format = "󰥔 {:%R}";
backlight = {
format = "{icon}";
tooltip-format = "{percent}%";
format-icons = [
" "
" "
" "
" "
" "
" "
" "
" "
" "
];
};
battery = {
states = {
warning = 20;
critical = 10;
};
format = "{icon}";
format-time = "{H}:{m}";
format-charging = "󰂄 ({time})";
format-plugged = "󰚥 ";
format-warning = "{icon}{capacity}%";
format-critical = "{icon}{capacity}% ({time})";
tooltip-format = "{capacity}% | {power}W | {time}";
format-icons = [
"󱃍 "
"󰁺 "
"󰁻 "
"󰁼 "
"󰁽 "
"󰁾 "
"󰁿 "
"󰂀 "
"󰂁 "
"󰂂 "
"󰁹 "
];
};
"custom/notification" =
let
makoctl = "${config.services.mako.package}/bin/makoctl";
jq = "${pkgs.jq}/bin/jq";
in
{
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '󱅫 ' ) || echo '󰂚 ' ";
format = "{}";
on-click = "${makoctl} dismiss -a";
interval = 3;
};
"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 = 20;
show-passive-items = true;
spacing = 5;
};
};
style =
let
sc = config.scheme.withHashtag;
alpha = "0.8";
in
''
* {
all: unset;
font-size: ${toString (fonts.sizes.popups + 2)}px;
font-family: ${fonts.monospace.name};
}
window {
background: transparent;
box-shadow: none;
border: none;
}
window > box {
color: ${sc.base05};
background: ${sc.base00};
margin: 5px 5px 0px;
padding: 0px;
border-top: 1px solid ${sc.base04};
border-radius: 5px;
}
tooltip {
background: alpha(${sc.base00}, ${alpha});
border: 1px solid ${sc.${accentColourName}};
border-radius: 5px;
box-shadow: none;
}
tooltip label {
color: ${sc.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,
#tray,
#backlight,
#battery,
#custom-weather {
color: ${sc.base05};
}
#workspaces button {
background: transparent;
color: ${sc.base05};
margin: 0px;
padding: 0px 5px;
}
#workspaces button.persistent {
color: ${sc.base03};
}
#workspaces button.focused {
color: ${sc.${accentColourName}};
}
#workspaces button.urgent {
color: ${sc.base09};
}
#mpris {
color: ${sc.base04};
}
#custom-notification {
color: ${sc.base08};
}
#pulseaudio {
color: ${sc.base09};
}
#network {
color: ${sc.base0A};
}
#bluetooth {
color: ${sc.base0B};
}
#clock.calendar {
color: ${sc.base0C};
}
#clock {
color: ${sc.base0D};
}
#battery.warning {
color: ${sc.base09};
}
#battery.critical {
color: ${sc.base08};
}
#battery.charging,
#battery.plugged {
color: ${sc.base0B};
}
'';
};
}