nixos/home-modules/waybar.nix
jmug a66d51bed6 [Asahi] Move hyprland related configs to their own modules.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-06-03 21:11:09 -07:00

210 lines
6.8 KiB
Nix

{ ... } : {
wayland.windowManager.hyprland.settings = {
exec-once = [
"waybar"
];
};
programs.waybar = {
enable = true;
settings = [
{
# "layer": "top", # Waybar at top layer
# "position": "bottom", # Waybar position (top|bottom|left|right)
height = 30; # Waybar height (to be removed for auto height)
# "width": 1280, # Waybar width
spacing = 4; # Gaps between modules (4px)
# Choose the order of the modules
modules-left = [
"hyprland/workspaces"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"mpd"
"idle_inhibitor"
"wireplumber"
"network"
"power-profiles-daemon"
"cpu"
"memory"
"temperature"
"backlight"
"keyboard-state"
"sway/language"
"battery"
"battery#bat2"
"clock"
"tray"
"custom/power"
];
# Modules configuration
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = true;
warp-on-scroll = false;
format = "{name} {icon}";
format-icons = {
active = "";
default = "";
};
};
keyboard-state = {
numlock = true;
capslock = true;
format = "{name} {icon}";
format-icons = {
locked = "";
unlocked = "";
};
};
# "sway/mode": {
# "format": "<span style=\"italic\">{}</span>"
# },
# "sway/scratchpad": {
# "format": "{icon} {count}",
# "show-empty": false,
# "format-icons": ["", ""],
# "tooltip": true,
# "tooltip-format": "{app}: {title}"
# },
mpd = {
format = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) {songPosition}|{queueLength} {volume}% ";
format-disconnected = "Disconnected ";
format-stopped = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ";
unknown-tag = "N/A";
interval = 5;
consume-icons = {
on = " ";
};
random-icons = {
off = "<span color=\"#f53c3c\"></span> ";
on = " ";
};
repeat-icons = {
on = " ";
};
single-icons = {
on = "1 ";
};
state-icons = {
paused = "";
playing = "";
};
tooltip-format = "MPD (connected)";
tooltip-format-disconnected = "MPD (disconnected)";
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
};
tray = {
# "icon-size": 21,
spacing = 10;
# "icons": {
# "blueman": "bluetooth",
# "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
# }
};
clock = {
# "timezone": "America/New_York",
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
format-alt = "{:%Y-%m-%d}";
};
cpu = {
format = "{usage}% ";
tooltip = false;
};
memory = {
format = "{}% ";
};
temperature = {
# "thermal-zone": 2,
# "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
critical-threshold = 80;
# "format-critical": "{temperatureC}°C {icon}",
format = "{temperatureC}°C {icon}";
format-icons = ["" "" ""];
};
backlight = {
# "device": "acpi_video1",
format = "{percent}% {icon}";
format-icons = ["" "" "" "" "" "" "" "" ""];
};
battery = {
states = {
# "good": 95,
warning = 30;
critical = 15;
};
format = "{capacity}% {icon}";
format-full = "{capacity}% {icon}";
format-charging = "{capacity}% ";
format-plugged = "{capacity}% ";
format-alt = "{time} {icon}";
# "format-good": "", // An empty format will hide the module
# "format-full": "",
format-icons = ["" "" "" "" ""];
};
"battery#bat2" = {
bat = "BAT2";
};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true;
format-icons = {
default = "";
performance = "";
balanced = "";
power-saver = "";
};
};
network = {
# "interface": "wlp2*", // (Optional) To force the use of this interface
format-wifi = "{essid} ({signalStrength}%) ";
format-ethernet = "{ipaddr}/{cidr} ";
tooltip-format = "{ifname} via {gwaddr} ";
format-linked = "{ifname} (No IP) ";
format-disconnected = "Disconnected ";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
wireplumber = {
format = "{volume}% {icon}";
format-muted = "";
# on-click = "helvum";
max-volume = 150;
scroll-step = 0.15;
format-icons = [" " " " " "];
};
"custom/media" = {
format = "{icon} {text}";
return-type = "json";
max-length = 40;
format-icons = {
spotify = "";
default = "🎜";
};
escape = true;
exec = "$HOME/.config/waybar/mediaplayer.py 2> /dev/null"; # Script in resources folder;
# "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
};
"custom/power" = {
format = " ";
tooltip = false;
menu = "on-click";
menu-file = "$HOME/.config/waybar/power_menu.xml"; # Menu file in resources folde;
"menu-actions" = {
shutdown = "shutdown";
reboot = "reboot";
suspend = "systemctl suspend";
hibernate = "systemctl hibernate";
};
};
}
];
};
}