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"
];