From 67cea4f1921281d30c8a1bbd93ecad2214119913 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Sun, 20 Jul 2025 23:49:22 -0300 Subject: [PATCH] feat: double-monitor waybar configuration --- home/guz-lite/desktop.nix | 89 ---------------------- home/guz-lite/waybar.css | 15 ++-- hosts/battleship/home.nix | 153 +++++++++++++++++++++++++++++++++++++- hosts/fighter/home.nix | 92 ++++++++++++++++++++++- 4 files changed, 249 insertions(+), 100 deletions(-) diff --git a/home/guz-lite/desktop.nix b/home/guz-lite/desktop.nix index 04bca50..e374eb0 100644 --- a/home/guz-lite/desktop.nix +++ b/home/guz-lite/desktop.nix @@ -123,95 +123,6 @@ ## Temp status bar programs.waybar.enable = true; programs.waybar.style = builtins.readFile ./waybar.css; - # programs.waybar.settings.single = with builtins; fromJSON (readFile ./wayland.json); - programs.waybar.settings.single = { - layer = "top"; - position = "top"; - height = 25; - spacing = 5; - - margin-top = 5; - margin-right = 10; - margin-left = 10; - - modules-left = [ - "hyprland/workspaces" - "hyprland/window" - ]; - - "hyprland/workspaces" = { - active-only = false; - persistent-workspaces = let - MONITOR-1 = config.wayland.windowManager.hyprland.settings."$MONITOR-1"; - MONITOR-2 = config.wayland.windowManager.hyprland.settings."$MONITOR-2"; - in { - "${MONITOR-1}" = [1 2 3 4 5]; - "${MONITOR-2}" = [6 7 8 9 10]; - }; - format = "{icon}"; - format-icons = { - default = ""; - active = ""; - }; - }; - - "hyprland/window" = { - format = "{title}"; - }; - - modules-center = [ - "clock" - ]; - - "clock" = { - format = "{:%d  %R}"; - format-alt = "{:%B %d, 12.0%y (%A)}"; - tooltip-format = "{calendar}"; - calendar = { - mode = "year"; - mode-mon-col = 3; - weeks-pos = "left"; - on-scroll = 1; - format = with config.lib.stylix.colors.withHashtag; { - months = "{}"; - days = "{}"; - weeks = "W{}"; - weeksdays = "{}"; - today = "{}"; - }; - }; - }; - - modules-right = [ - "pulseaudio" - "cpu" - "memory" - "disk" - ]; - - "pulseaudio" = { - format = "{icon} {volume}%"; - format-muted = ""; - format-icons = { - default = ["" ""]; - }; - onclick = "${lib.getExe pkgs.pwvucontrol}"; - }; - - "cpu" = { - format = " {usage}%"; - }; - - "memory" = { - format = " {percentage}%"; - }; - - "disk" = { - interval = 30; - format = "󰨣 {specific_free:0.2f}"; - unit = "GB"; - }; - }; programs.waybar.systemd.enable = true; # Notifications diff --git a/home/guz-lite/waybar.css b/home/guz-lite/waybar.css index 4103c15..c0bf73c 100644 --- a/home/guz-lite/waybar.css +++ b/home/guz-lite/waybar.css @@ -29,19 +29,19 @@ tooltip { background-color: transparent; } -.modules-left { +.modules-left, +.modules-right { padding-right: 10px; -} - -.modules-left { padding-left: 10px; } -.modules-left #workspaces { +.modules-left #workspaces, +.modules-right #workspaces { padding: 0; } -.modules-left #workspaces button { +.modules-left #workspaces button, +.modules-right #workspaces button { padding-left: 0; padding-right: 0; @@ -49,7 +49,8 @@ tooltip { padding-top: 6px; } -.modules-left #workspaces button.active { +.modules-left #workspaces button.active, +.modules-right #workspaces button.active { border-bottom-style: none; /* Align icons */ diff --git a/hosts/battleship/home.nix b/hosts/battleship/home.nix index 1745b1a..ed281b4 100644 --- a/hosts/battleship/home.nix +++ b/hosts/battleship/home.nix @@ -1,9 +1,158 @@ -{lib, ...}: { +{ + config, + lib, + pkgs, + ... +}: { # Host specific overrides of the root home - home-manager.users.guz = { + home-manager.users.guz = let + cfg = config.home-manager.users.guz; + hyprcfg = cfg.wayland.windowManager.hyprland.settings; + in { wayland.windowManager.hyprland.settings = { "$MONITOR-1" = lib.mkForce "HDMI-A-1"; "$MONITOR-2" = lib.mkForce "DVI-D-1"; }; + + programs.waybar.settings = let + layer = "top"; + position = "top"; + + height = 25; + spacing = 5; + + margin-top = 5; + margin-x = 10; + margin-right = margin-x; + margin-left = margin-x; + in { + main = { + inherit + layer + position + height + spacing + margin-top + margin-right + margin-left + ; + + output = [hyprcfg."$MONITOR-1"]; + + modules-left = [ + "hyprland/workspaces" + ]; + + "hyprland/workspaces" = { + active-only = false; + persistent-workspaces = { + "${hyprcfg."$MONITOR-1"}" = [1 2 3 4 5]; + }; + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + + modules-center = [ + "hyprland/window" + ]; + + "hyprland/window" = { + format = "{title}"; + }; + + modules-right = [ + "clock" + "pulseaudio" + ]; + + "clock" = { + format = "󰥔 {:%d  %R}"; + format-alt = "{:%B %d, 12.0%y (%A)}"; + tooltip-format = "{calendar}"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "left"; + on-scroll = 1; + format = with config.lib.stylix.colors.withHashtag; { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weeksdays = "{}"; + today = "{}"; + }; + }; + }; + + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = ""; + format-icons = { + default = ["" ""]; + }; + onclick = "${lib.getExe pkgs.pwvucontrol}"; + }; + }; + secondary = { + inherit + layer + position + height + spacing + margin-top + margin-right + margin-left + ; + + output = [hyprcfg."$MONITOR-2"]; + + modules-left = [ + "cpu" + "memory" + "disk" + ]; + + "cpu" = { + format = " {usage}%"; + }; + + "memory" = { + format = " {percentage}%"; + }; + + "disk" = { + interval = 30; + format = "󰨣 {specific_free:0.2f}"; + unit = "GB"; + }; + + modules-center = [ + "hyprland/window" + ]; + + "hyprland/window" = { + format = "{title}"; + }; + + modules-right = [ + "hyprland/workspaces" + ]; + + "hyprland/workspaces" = { + active-only = false; + persistent-workspaces = { + "${hyprcfg."$MONITOR-2"}" = [6 7 8 9 10]; + }; + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + }; + }; }; } diff --git a/hosts/fighter/home.nix b/hosts/fighter/home.nix index 00db245..7a53d40 100644 --- a/hosts/fighter/home.nix +++ b/hosts/fighter/home.nix @@ -1,19 +1,107 @@ -{lib, ...}: { +{ + config, + lib, + pkgs, + ... +}: { # Host specific overrides of the root home - home-manager.users.guz = { + home-manager.users.guz = let + cfg = config.home-manager.users.guz; + hyprcfg = cfg.wayland.windowManager.hyprland.settings; + in { wayland.windowManager.hyprland.settings = { "$MONITOR-1" = lib.mkForce "eDP-1"; }; programs.waybar.settings.single = { + layer = "top"; + position = "top"; + height = 25; + spacing = 5; + + margin-top = 5; + margin-right = 10; + margin-left = 10; + + modules-left = [ + "hyprland/workspaces" + "hyprland/window" + ]; + + "hyprland/workspaces" = { + active-only = false; + persistent-workspaces = { + "${hyprcfg."$MONITOR-1"}" = [1 2 3 4 5]; + }; + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + + "hyprland/window" = { + format = "{title}"; + }; + + modules-center = [ + "clock" + ]; + + "clock" = { + format = "{:%d  %R}"; + format-alt = "{:%B %d, 12.0%y (%A)}"; + tooltip-format = "{calendar}"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "left"; + on-scroll = 1; + format = with config.lib.stylix.colors.withHashtag; { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weeksdays = "{}"; + today = "{}"; + }; + }; + }; + modules-right = [ "battery" + "pulseaudio" + "cpu" + "memory" + "disk" ]; "battery" = { format-icons = ["" "" "" "" ""]; format = "{icon} {capacity}%"; }; + + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = ""; + format-icons = { + default = ["" ""]; + }; + onclick = "${lib.getExe pkgs.pwvucontrol}"; + }; + + "cpu" = { + format = " {usage}%"; + }; + + "memory" = { + format = " {percentage}%"; + }; + + "disk" = { + interval = 30; + format = "󰨣 {specific_free:0.2f}"; + unit = "GB"; + }; }; services.xremap.config.modmap = [