From 8654da046cca946977e7e8c7233662bf97d51ac0 Mon Sep 17 00:00:00 2001 From: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Mon, 17 Aug 2026 22:24:34 +0200 Subject: [PATCH] change hyprlock config Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com> --- home/system/hyprlock/default.nix | 166 +++++++++++++++++++++++-------- 1 file changed, 124 insertions(+), 42 deletions(-) diff --git a/home/system/hyprlock/default.nix b/home/system/hyprlock/default.nix index d6dbbc81..aa8c5182 100644 --- a/home/system/hyprlock/default.nix +++ b/home/system/hyprlock/default.nix @@ -1,5 +1,65 @@ -{config, ...}: let +{ + config, + lib, + pkgs, + ... +}: let c = config.lib.stylix.colors; + font = config.stylix.fonts.monospace.name; + + fontSize = 16; + em = fontSize * 4.0 / 3.0; + charW = em * 0.6; + lineH = em * 1.32; + + round = x: builtins.floor (x + 0.5); + px = x: toString (round x); + + paint = color: t: ''${t}''; + fromFile = name: text: ''cmd[update:0] cat ${pkgs.writeText name text}''; + + inner = 42; + width = inner + 2; + valueCol = 13; + + spaces = n: lib.concatStrings (lib.genList (_: " ") n); + + border = paint c.base0D; + hbar = lib.concatStrings (lib.genList (_: "─") inner); + + row = content: border "│" + content + border "│"; + + blank = row (spaces inner); + + entry = name: value: let + prompt = " ${name}:"; + gap = spaces (valueCol - builtins.stringLength prompt); + tail = spaces (inner - valueCol - builtins.stringLength value); + in + row (border prompt + gap + paint c.base05 value + tail); + + lines = [ + (border "┌${hbar}┐") + blank + (entry "Session" "Hyprland") + (entry "Username" config.home.username) + (entry "Password" "") + blank + (border "└${hbar}┘") + ]; + + rowY = i: -((i + 0.5) - (builtins.length lines) / 2.0) * lineH; + colX = i: (i - width / 2.0) * charW; + + frameHalfH = (builtins.length lines) * lineH / 2.0; + outsideY = frameHalfH + 1.5 * lineH; + + inputH = fontSize / 0.8; + inputW = 27 * charW; + dotPad = (inputH - lineH) / 2.0; + inputX = colX (valueCol + 1) - dotPad; + passwordRow = 4; + hidden = " "; in { stylix.targets.hyprlock.enable = false; @@ -16,65 +76,87 @@ in { label = [ { monitor = ""; - text = ''cmd[update:0] echo "[$USER@$(hostname) ~]"''; - color = "rgb(${c.base0D})"; - font_size = 13; - font_family = config.stylix.fonts.monospace.name; - position = "48, -48"; - halign = "left"; - valign = "top"; - } - { - monitor = ""; - text = ''cmd[update:1000] echo "$(date +'%H:%M:%S')"''; + text = ''cmd[update:1000] date +"%H:%M %A %d %B"''; color = "rgb(${c.base05})"; - font_size = 13; - font_family = config.stylix.fonts.monospace.name; - position = "48, -70"; - halign = "left"; + font_size = fontSize; + font_family = font; + position = "0, -64"; + halign = "center"; valign = "top"; } { monitor = ""; - text = ''cmd[update:60000] echo "$(date +'%A %d %B %Y')"''; + text = "Welcome"; + color = "rgb(${c.base05})"; + font_size = fontSize; + font_family = font; + position = "0, ${px outsideY}"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = fromFile "hyprlock-frame" (lib.concatStringsSep "\n" lines); + color = "rgb(${c.base05})"; + font_size = fontSize; + font_family = font; + text_align = "left"; + position = "0, 0"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = " $FAIL "; + color = "rgb(${c.base08})"; + font_size = fontSize; + font_family = font; + position = "0, ${px (-outsideY)}"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = + fromFile "hyprlock-hints" + "${paint c.base0D "Enter"} ${paint c.base04 "unlock"} ${paint c.base0D "Esc"} ${paint c.base04 "clear"}"; color = "rgb(${c.base04})"; - font_size = 13; - font_family = config.stylix.fonts.monospace.name; - position = "48, -92"; - halign = "left"; - valign = "top"; - } - { - monitor = ""; - text = "passwd:"; - color = "rgb(${c.base0D})"; - font_size = 13; - font_family = config.stylix.fonts.monospace.name; - position = "48, -141"; - halign = "left"; - valign = "top"; + font_size = fontSize; + font_family = font; + position = "0, 40"; + halign = "center"; + valign = "bottom"; } ]; "input-field" = [ { monitor = ""; - size = "200, 20"; + size = "${px inputW}, ${px inputH}"; + position = "${px (inputX + inputW / 2.0)}, ${px (rowY passwordRow)}"; + halign = "center"; + valign = "center"; + outline_thickness = 0; outer_color = "rgba(00000000)"; inner_color = "rgba(00000000)"; - font_color = "rgb(${c.base05})"; - fade_on_empty = false; - placeholder_text = ""; - hide_input = true; rounding = 0; - check_color = "rgb(${c.base0B})"; + fade_on_empty = false; + + font_family = font; + font_color = "rgb(${c.base05})"; + + dots_text_format = "*"; + dots_size = 0.8; + dots_spacing = 0.0; + dots_center = false; + + swap_font_color = true; + placeholder_text = hidden; + fail_text = hidden; + check_color = "rgb(${c.base0C})"; fail_color = "rgb(${c.base08})"; - fail_text = ''auth failed''; capslock_color = "rgb(${c.base0A})"; - position = "116, -138"; - halign = "left"; - valign = "top"; } ]; };