From d5ce93f871fcc304a259e18c333c5da748097f6d Mon Sep 17 00:00:00 2001 From: KoenDR06 Date: Fri, 18 Jul 2025 13:53:28 +0200 Subject: [PATCH] some more updates --- machines/terra/modules.nix | 1 + modules/wm/hyprland/options.nix | 142 +++++++++++++++++--------------- 2 files changed, 77 insertions(+), 66 deletions(-) diff --git a/machines/terra/modules.nix b/machines/terra/modules.nix index 9ae4f24..24a6acd 100644 --- a/machines/terra/modules.nix +++ b/machines/terra/modules.nix @@ -44,6 +44,7 @@ wallpaper = ../../misc/portrait.png; } ]; + bindWorkspaces = "interlaced"; }; }; }; diff --git a/modules/wm/hyprland/options.nix b/modules/wm/hyprland/options.nix index c0e3ba7..25dfb48 100644 --- a/modules/wm/hyprland/options.nix +++ b/modules/wm/hyprland/options.nix @@ -3,8 +3,8 @@ config, ... }: let - inherit (lib) mkOption mkIf types trivial strings replaceStrings; - inherit (builtins) concatStringsSep elem; + inherit (lib) mkOption mkIf types trivial strings; + inherit (builtins) concatStringsSep elem genList elemAt; cfg = config.horseman.wm.hyprland; homeCfg = config.horseman; keybinding = types.submodule { @@ -158,6 +158,10 @@ in { monitors = { defaultMonitor = mkOption {type = types.bool;}; + bindWorkspaces = mkOption { + type = types.enum ["no" "interlaced"]; + default = "no"; + }; displays = mkOption { type = types.listOf (types.submodule { @@ -225,8 +229,6 @@ in { }); }; }; - - }; }; @@ -269,7 +271,7 @@ in { ${concatStringsSep "\n" (map (kb: "bind${concatStringsSep "" kb.flags} = ${concatStringsSep " " kb.mods}, ${kb.key}, ${kb.dispatcher}${ if (elem "m" kb.flags) # Mouse binds take one argument less then "" - else ", ${replaceStrings ["%"] ["%%"] kb.params}" + else ", ${kb.params}" }") cfg.config.keybindings.binds)} @@ -280,7 +282,7 @@ in { ${concatStringsSep "\n" (map (kb: "bind${concatStringsSep "" kb.flags} = ${concatStringsSep " " kb.mods}, ${kb.key}, ${kb.dispatcher}${ if (elem "m" kb.flags) # Mouse binds take one argument less then "" - else ", ${replaceStrings ["%"] ["%%"] kb.params}" + else ", ${kb.params}" }") sm.binds)} @@ -330,7 +332,7 @@ in { ${concatStringsSep "\n " (map (bez: "bezier = ${bez.name}, ${strings.floatToString bez.startX}, ${strings.floatToString bez.startY}, ${strings.floatToString bez.endX}, ${strings.floatToString bez.endY}") cfg.config.animations.beziers)} - ${concatStringsSep "\n " (map (anim: "animation = ${anim.name}, ${toString anim.on}, ${strings.floatToString anim.speed}, ${anim.curve}, ${replaceStrings ["%"] ["%%"] anim.style}") cfg.config.animations.animations)} + ${concatStringsSep "\n " (map (anim: "animation = ${anim.name}, ${toString anim.on}, ${strings.floatToString anim.speed}, ${anim.curve}, ${anim.style}") cfg.config.animations.animations)} } dwindle { @@ -372,68 +374,76 @@ in { else "" } + ${concatStringsSep "\n" (map (wr: "windowrule = " + wr) cfg.config.windowrules)} + ${concatStringsSep "\n" (map (ws: "workspace = " + ws) cfg.config.workspaces)} - ${concatStringsSep "\n" (map (wr: "windowrule = " + replaceStrings ["%"] ["%%"] wr) cfg.config.windowrules)} + ${ + concatStringsSep "\n" ( + if cfg.config.monitors.bindWorkspaces == "interlaced" + then (map (x: "workspace = ${toString (x + 1)}, persistent:true, monitor:${(elemAt cfg.config.monitors.displays (x - (2 * (x / 2)))).output}") (genList (x: x) 10)) + else [] + ) + } + ''; + + xdg.configFile."hypr/hyprlock.conf".text = '' + $font = Monospace + + general { + hide_cursor = false + } + + animations { + enabled = true + bezier = linear, 1, 1, 0, 0 + animation = fadeIn, 1, 5, linear + animation = fadeOut, 1, 5, linear + animation = inputFieldDots, 1, 2, linear + } + + background { + monitor = + path = screenshot + blur_passes = 3 + } + + input-field { + monitor = + size = 20%, 5% + outline_thickness = 3 + inner_color = rgba(0, 0, 0, 0.0) # no fill + + outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg + check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg + fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg + + font_color = rgb(143, 143, 143) + fade_on_empty = false + rounding = 15 + + font_family = $font + placeholder_text = Input password... + fail_text = $PAMFAIL + + dots_spacing = 0.3 + + position = 0, -20 + halign = center + valign = center + } + + label { + monitor = + text = $TIME + font_size = 90 + font_family = $font + + position = 0, -50 + halign = center + valign = top + } ''; }; - - xdg.configFile."hypr/hyprlock.conf".text = '' - $font = Monospace - - general { - hide_cursor = false - } - - animations { - enabled = true - bezier = linear, 1, 1, 0, 0 - animation = fadeIn, 1, 5, linear - animation = fadeOut, 1, 5, linear - animation = inputFieldDots, 1, 2, linear - } - - background { - monitor = - path = screenshot - blur_passes = 3 - } - - input-field { - monitor = - size = 20%, 5% - outline_thickness = 3 - inner_color = rgba(0, 0, 0, 0.0) # no fill - - outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg - check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg - fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg - - font_color = rgb(143, 143, 143) - fade_on_empty = false - rounding = 15 - - font_family = $font - placeholder_text = Input password... - fail_text = $PAMFAIL - - dots_spacing = 0.3 - - position = 0, -20 - halign = center - valign = center - } - - label { - monitor = - text = $TIME - font_size = 90 - font_family = $font - - position = 0, -50 - halign = center - valign = top - } - ''; }; }