nixcfg/homeManagerModules/apps/waybar/default.nix

356 lines
9.6 KiB
Nix
Raw Normal View History

2024-04-07 22:16:33 -04:00
{
config,
lib,
pkgs,
2024-04-07 22:16:33 -04:00
...
}: {
config = lib.mkIf config.ar.home.apps.waybar.enable {
programs.waybar = {
enable = true;
settings = {
mainBar = {
2024-04-26 21:36:29 -04:00
height = 32;
layer = "top";
output = ["*"];
position = "top";
modules-left =
lib.optionals (config.ar.home.desktop.hyprland.enable)
["hyprland/workspaces" "hyprland/submap"]
++ lib.optionals (config.ar.home.desktop.sway.enable)
["sway/workspaces" "sway/scratchpad" "sway/mode"]
++ lib.optionals (config.ar.home.desktop.hyprland.tabletMode.enable)
["custom/menu" "custom/hyprland-close"];
2024-07-10 23:43:51 -04:00
modules-center = ["clock"];
modules-right = [
"tray"
"group/hardware"
2024-07-30 18:09:58 -04:00
"group/session"
];
2024-07-10 23:43:51 -04:00
"hyprland/workspaces" = {
"all-outputs" = true;
"format" = "{icon} {name}";
2024-07-30 18:14:41 -04:00
"format-icons" = {
"default" = "󰝥";
"active" = "󰪥";
};
2024-07-10 23:43:51 -04:00
"sort-by" = "id";
};
2024-07-10 23:43:51 -04:00
"hyprland/submap" = {
"on-click" = ''${lib.getExe'
config.wayland.windowManager.hyprland.package "hyprctl"} dispatch submap reset'';
};
2024-07-10 23:43:51 -04:00
"hyprland/window" = {
"format" = "";
2024-07-30 18:14:41 -04:00
"icon" = true;
"max-length" = 100;
"separate-outputs" = true;
};
2024-07-10 23:43:51 -04:00
"sway/workspaces" = {
"all-outputs" = true;
"format" = "{icon} {name}";
2024-07-30 18:14:41 -04:00
"format-icons" = {
"default" = "󰝥";
"focused" = "󰪥";
};
2024-07-30 18:14:41 -04:00
"sort-by" = "id";
};
2024-07-10 23:43:51 -04:00
"sway/mode" = {
"on-click" = ''${lib.getExe' config.wayland.windowManager.sway.package "swaymsg"} mode default'';
};
2024-07-10 23:43:51 -04:00
"sway/window" = {
"max-length" = 100;
};
2024-07-10 23:43:51 -04:00
"sway/scratchpad" = {
"format" = "{icon} {count}";
"format-icons" = ["" ""];
2024-07-30 18:14:41 -04:00
"show-empty" = false;
"tooltip" = true;
"tooltip-format" = "{app}: {title}";
};
2024-07-10 23:43:51 -04:00
2024-05-18 08:34:22 -04:00
"custom/sway-close" = {
"on-click" = ''${lib.getExe'
config.wayland.windowManager.sway.package "swaymsg"} kill'';
2024-05-18 08:34:22 -04:00
"format" = "󰅗";
};
2024-07-10 23:43:51 -04:00
"custom/hyprland-close" = {
"on-click" = ''${lib.getExe'
config.wayland.windowManager.hyprland.package "hyprctl"} dispatch killactive'';
"format" = "󰅗";
};
2024-07-10 23:43:51 -04:00
"river/window" = {
"max-length" = 100;
};
2024-07-10 23:43:51 -04:00
"river/tags" = {
"num-tags" = 4;
};
2024-07-10 23:43:51 -04:00
"clock" = {
"format" = "{:%I:%M%p}";
2024-07-30 18:14:41 -04:00
"interval" = 60;
"tooltip-format" = "{:%Y-%m-%d | %H:%M}";
};
2024-07-10 23:43:51 -04:00
"battery" = {
"format" = "{icon}";
"format-icons" = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
2024-07-30 18:14:41 -04:00
"tooltip-format" = ''
{capacity}%: {timeTo}.
Draw: {power} watts.'';
2024-07-30 18:14:41 -04:00
"states" = {"critical" = 20;};
};
2024-07-10 23:43:51 -04:00
2024-07-29 21:59:53 -04:00
"idle_inhibitor" = {
"format" = "{icon}";
2024-07-29 21:59:53 -04:00
"format-icons" = {
2024-07-29 20:00:44 -04:00
"activated" = "󰅶";
"deactivated" = "󰾪";
};
2024-07-29 21:59:53 -04:00
"timeout" = 45;
"tooltip-format-activated" = ''
2024-07-30 18:14:41 -04:00
Idle inhibited.
2024-07-29 21:59:53 -04:00
System will not sleep.'';
"tooltip-format-deactivated" = ''
2024-07-30 18:14:41 -04:00
Idle uninhibited.
2024-07-29 21:59:53 -04:00
System will sleep normally.'';
};
2024-07-10 23:43:51 -04:00
"bluetooth" = {
"format" = "";
"format-connected" = " {num_connections}";
2024-07-30 18:14:41 -04:00
"format-disabled" = ""; # an empty format will hide the module
"on-click" = lib.getExe' pkgs.blueberry "blueberry";
"tooltip-format" = "{controller_alias} {controller_address}";
2024-07-30 18:14:41 -04:00
"tooltip-format-connected" = ''
{controller_alias} {controller_address}
2024-03-28 19:52:15 -04:00
{device_enumerate}'';
2024-07-30 18:14:41 -04:00
"tooltip-format-enumerate-connected" = "{device_alias} {device_address}";
};
2024-07-10 23:43:51 -04:00
"pulseaudio" = {
"format" = "{icon}";
"format-bluetooth" = "{volume}% {icon}󰂯";
"format-muted" = "";
2024-07-10 23:43:51 -04:00
"format-icons" = {
"headphones" = "󰋋";
"handsfree" = "󰋎";
"headset" = "󰋎";
"default" = ["" "" ""];
};
2024-07-10 23:43:51 -04:00
"ignored-sinks" = ["Easy Effects Sink"];
"on-click" = "${lib.getExe pkgs.pavucontrol} -t 3";
2024-07-30 18:14:41 -04:00
"scroll-step" = 5;
};
2024-07-10 23:43:51 -04:00
"network" = {
2024-07-30 18:14:41 -04:00
"format-disconnected" = "󰀦";
"format-ethernet" = "󰈀";
"format-icons" = ["󰤟" "󰤢" "󰤥" "󰤨"];
2024-07-30 18:14:41 -04:00
"format-wifi" = "{icon}";
"on-click" = "${lib.getExe pkgs.networkmanager_dmenu} -i";
"tooltip-format" = "{ifname} via {gwaddr} 󰊗";
"tooltip-format-disconnected" = "Disconnected";
2024-07-30 18:14:41 -04:00
"tooltip-format-ethernet" = "{ifname} ";
"tooltip-format-wifi" = "{essid} ({signalStrength}%) {icon}";
};
2024-07-10 23:43:51 -04:00
"tray" = {"spacing" = 15;};
2024-07-10 23:43:51 -04:00
2024-07-30 18:09:58 -04:00
"custom/dnd" = let
mako-dnd = pkgs.writeShellScript "mako-dnd" ''
show() {
MAKO_MODE=$(${lib.getExe' pkgs.mako "makoctl"} mode)
if echo "$MAKO_MODE" | grep -q "do-not-disturb"; then
printf '{"text": "󰂛", "class": "on", "tooltip": "Notifications are snoozed."}\n'
else
printf '{"text": "󰂚", "class": "off","tooltip": "Notifications are enabled."}\n'
fi
}
toggle() {
${lib.getExe' pkgs.mako "makoctl"} mode -t do-not-disturb
${lib.getExe' pkgs.procps "pkill"} -SIGRTMIN+2 .waybar-wrapped
}
[ $# -gt 0 ] && toggle || show
'';
in {
"exec" = "${mako-dnd}";
"interval" = "once";
"on-click" = "${mako-dnd} toggle";
"return-type" = "json";
"signal" = 2;
};
"custom/logout" = {
"format" = "󰗽";
2024-07-30 18:14:41 -04:00
"on-click" = ''${lib.getExe config.programs.rofi.package} -i -show power-menu -modi "power-menu:${lib.getExe pkgs.rofi-power-menu} --choices=logout/lockscreen/suspend/shutdown/reboot"'';
};
2024-07-10 23:43:51 -04:00
"custom/menu" = {
"format" = "󰀻";
2024-07-30 18:14:41 -04:00
"on-click" = "${lib.getExe pkgs.nwg-drawer} -mt 5";
};
2024-07-10 23:43:51 -04:00
"power-profiles-daemon" = {
"format" = "{icon}";
2024-07-10 23:43:51 -04:00
"format-icons" = {
2024-07-30 18:14:41 -04:00
"balanced" = "󰗑";
"default" = "󱐌";
"performance" = "󱐌";
"power-saver" = "󰌪";
};
2024-07-30 18:14:41 -04:00
"tooltip-format" = ''
Profile: {profile}
Driver: {driver}'';
"tooltip" = true;
2024-03-28 19:52:15 -04:00
};
2024-07-10 23:43:51 -04:00
"group/hardware" = {
"orientation" = "horizontal";
2024-07-30 18:09:58 -04:00
modules = ["pulseaudio" "bluetooth" "network" "power-profiles-daemon" "battery"];
};
2024-07-30 18:10:17 -04:00
2024-07-30 18:09:58 -04:00
"group/session" = {
"orientation" = "horizontal";
modules = ["custom/dnd" "idle_inhibitor" "custom/logout"];
};
2024-03-28 19:52:15 -04:00
};
};
};
xdg.configFile."waybar/style.css".text = ''
* {
border: none;
border-radius: 0;
font-family: "NotoSansM Nerd Font";
font-size: 14px;
font-weight: 600;
}
window#waybar {
background: rgba (35, 38, 52, 0.0);
color: ${config.ar.home.theme.colors.text};
}
#workspaces button {
padding: 0px 5px;
margin: 0 0px;
color: ${config.ar.home.theme.colors.text};
}
#workspaces button.active,
#workspaces button.focused {
color: ${config.ar.home.theme.colors.primary};
}
#submap,
#mode {
padding: 0 15px;
margin: 0 5px;
color: #FFFFFF;
}
#tags button {
padding: 0px 5px;
margin: 0 0px;
color: ${config.ar.home.theme.colors.text};
}
#tags button.focused {
color: ${config.ar.home.theme.colors.primary};
}
#clock,
#battery,
#bluetooth,
#network,
#power-profiles-daemon,
#pulseaudio,
#wireplumber,
2024-07-29 21:59:53 -04:00
#idle_inhibitor,
2024-07-30 18:09:58 -04:00
#custom-dnd,
#custom-logout,
#custom-menu,
#custom-sway-close,
#tray {
padding: 0 7.5px;
margin: 0 5px;
}
#battery {
color: ${config.ar.home.theme.colors.text};
}
#battery.charging {
color: ${config.ar.home.theme.colors.primary};
}
#battery.critical:not(.charging) {
color: #e78284;
}
#workspaces,
#mode,
#submap,
#scratchpad,
#tray,
#clock,
#custom-menu,
#custom-sway-close,
#custom-hyprland-close,
#hardware {
border-radius: 10;
background: rgba (36, 36, 36, 0.8);
margin: 5px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
2024-07-30 18:09:58 -04:00
#session {
border-radius: 10;
background: rgba (36, 36, 36, 0.8);
margin: 5px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
#clock, #custom-menu, #custom-sway-close, #custom-hyprland-close {
padding: 0px 20px 0px 20px;
}
#submap,
#mode {
color: ${config.ar.home.theme.colors.text};
background: rgba(255, 123, 99, 0.8);
}
'';
2024-03-28 19:52:15 -04:00
};
}