diff --git a/hosts/asahi/home.nix b/hosts/asahi/home.nix index ef1afed..edd7942 100644 --- a/hosts/asahi/home.nix +++ b/hosts/asahi/home.nix @@ -58,6 +58,221 @@ in websearch.prefix = "?"; }; }; + 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" + "pulseaudio" + "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": "{}" + # }, + # "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 = " "; + 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 = "{:%Y %B}\n{calendar}"; + 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}"; + }; + pulseaudio = { + # "scroll-step": 1, // %, can be a float + format = "{volume}% {icon} {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = "{volume}% "; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = [" " " " " "]; + }; + on-click = "pavucontrol"; + }; + "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"; + }; + }; + } + ]; + }; + programs.ssh = { enable = true; addKeysToAgent = "yes"; @@ -101,6 +316,9 @@ in wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.settings = { + exec-once = [ + "waybar" + ]; monitor = [ ",preferred,auto,auto" "eDP-1,preferred,auto,1.333333" @@ -250,6 +468,7 @@ in # Scroll through existing workspaces with mainMod + scroll "$mainMod, mouse_down, workspace, e+1" "$mainMod, mouse_up, workspace, e-1" + # App launcher "$mainMod, space, exec, GSK_RENDERER=ngl walker" ];