diff --git a/modules/home/wayland/apps/default.nix b/modules/home/wayland/apps/default.nix index b77240a..633ce9b 100644 --- a/modules/home/wayland/apps/default.nix +++ b/modules/home/wayland/apps/default.nix @@ -1 +1 @@ -{ ... }: { imports = [ ./dunst ./eww ./kanshi ./waylock ./wofi ]; } +{ ... }: { imports = [ ./dunst ./eww ./kanshi ./lockscreen ./wofi ]; } diff --git a/modules/home/wayland/apps/eww/bar/scripts/lock b/modules/home/wayland/apps/eww/bar/scripts/lock index a55f0b2..71561a4 100644 --- a/modules/home/wayland/apps/eww/bar/scripts/lock +++ b/modules/home/wayland/apps/eww/bar/scripts/lock @@ -1,3 +1,6 @@ #!/usr/bin/env bash eww close popup 2>/dev/null -swaylock +eww close powermenu 2>/dev/null +# swaylock #swaylock-effects +hyprlock +# gtklock \ No newline at end of file diff --git a/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck b/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck index be12694..a22706a 100644 --- a/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck +++ b/modules/home/wayland/apps/eww/bar/windows/powermenu.yuck @@ -16,9 +16,9 @@ (pm-btn :icon "󰜉" :label "Reboot" :onclick "systemctl reboot") (pm-btn :icon "󰍁" :label "Lock" - :onclick "sleep 0.1 && gtklock & eww close powermenu &") + :onclick "scripts/lock") (pm-btn :icon "󰤄" :label "Suspend" - :onclick "sleep 0.1 && gtklock & systemctl suspend & eww close powermenu &") + :onclick "scripts/lock & systemctl suspend") (pm-btn :icon "󰗼" :label "Sign out" :onclick "hyprctl eval \"hl.dispatch(hl.dsp.exit())\"") (pm-btn :icon "󰅖" :label "Cancel" diff --git a/modules/home/wayland/apps/eww/default.nix b/modules/home/wayland/apps/eww/default.nix index 6908464..4c83d10 100755 --- a/modules/home/wayland/apps/eww/default.nix +++ b/modules/home/wayland/apps/eww/default.nix @@ -29,7 +29,7 @@ let "scripts/radio" = mkScript "radio" ./bar/scripts/radio [ pkgs.eww pkgs.jq pkgs.curl pkgs.mpv pkgs.playerctl ]; "scripts/color-pick" = mkScript "color-pick" ./bar/scripts/color-pick [ pkgs.eww pkgs.hyprpicker ]; "scripts/media" = mkScript "media" ./bar/scripts/media [ pkgs.playerctl ]; - "scripts/lock" = mkScript "lock" ./bar/scripts/lock [ pkgs.eww pkgs.swaylock-effects ]; + "scripts/lock" = mkScript "lock" ./bar/scripts/lock [ pkgs.eww pkgs.hyprlock ]; "scripts/screenshot" = mkScript "screenshot" ./bar/scripts/screenshot [ pkgs.eww pkgs.hyprshot pkgs.satty pkgs.wl-clipboard ]; "scripts/sys/gpu" = mkScript "gpu" ./bar/scripts/sys/gpu [ pkgs.custom.amdgpu_top pkgs.jq ]; "scripts/sys/memory" = mkScript "memory" ./bar/scripts/sys/memory [ pkgs.ripgrep ]; diff --git a/modules/home/wayland/apps/kanshi/default.nix b/modules/home/wayland/apps/kanshi/default.nix index 1ef6b3b..24b8020 100644 --- a/modules/home/wayland/apps/kanshi/default.nix +++ b/modules/home/wayland/apps/kanshi/default.nix @@ -17,14 +17,14 @@ in { settings = [ {output = baseOutput//{ criteria = "LG Electronics LG ULTRAGEAR+ 511NTDVGC194"; - mode = "2560x1440@480.168"; - # mode = "2560x1440x240.083"; + # mode = "2560x1440@480.168"; + mode = "2560x1440@240.083"; # mode = "1920x1080x240.084"; };} {output = baseOutput//{ criteria = "AOC 24E1W1 GNSKCHA086899"; mode = "1920x1080@60.000"; - transform = "90"; + transform = "180"; };} {output = baseOutput//{ criteria = "AOC 24E1W1 GNSKBHA080346"; @@ -51,7 +51,6 @@ in { outputs = [ { criteria = "AOC 24E1W1 GNSKCHA086899"; - transform = "180"; position = "0,0"; } { @@ -101,7 +100,7 @@ in { } ]; exec = [ - "${pkgs.eww}/bin/eww open bar --screen 0" + "${pkgs.writeShellScript "kanshi-hyprland-init" '' #!/usr/bin/env bash ${pkgs.hyprland}/bin/hyprctl eval ' @@ -119,6 +118,7 @@ in { ''}" "${pkgs.awww}/bin/awww restore" + "${pkgs.eww}/bin/eww open bar --screen 0" ]; };} {profile = { diff --git a/modules/home/wayland/apps/lockscreen/default.nix b/modules/home/wayland/apps/lockscreen/default.nix new file mode 100755 index 0000000..665e906 --- /dev/null +++ b/modules/home/wayland/apps/lockscreen/default.nix @@ -0,0 +1,113 @@ +{ lib, pkgs, config, ... }: { + config = lib.mkIf (config.usercfg.wm == "Wayland") { + programs.hyprlock = { + enable = true; + settings = { + general = { + grace = 5; # grace=5 + no_fade_in = false; # fade-in=0.2 (handled dynamically) + ignore_empty_input = true; # ignore-empty-password + }; + + background = [ + # 1. OLED MONITOR (Pure Black) + { + monitor = "desc:LG Electronics LG ULTRAGEAR+ 511NTDVGC194"; + color = "rgba(0,0,0,1.0)"; # Pure black OLED protection + path = ""; # Explicitly no screenshot + zindex = 0; + } + # 2. ALL OTHER MONITORS (Pixelated Screenshot) + { + monitor = ""; + path = "screenshot"; # screenshots + blur_passes = 3; # effect-pixelate=5 approximation + blur_size = 8; + noise = 0.01; + zindex = -1; + } + ]; + + input-field = { + monitor = ""; + placeholder_text = ""; + fail_text = ""; + + size = "200, 200"; # Custom sizing matching indicator-radius + outline_thickness = 30; # indicator-thickness=30 + + dots_size = 0.33; + dots_spacing = 0.15; + dots_center = true; + fade_on_empty = true; + hide_input = true; + dots_text_format = "*"; + font_family = "IBM Plex Mono"; # font=IBM Plex Mono + + # --- Outer Rings / Outline Colors --- + # key-hl-color, bs-hl-color, caps-lock-key-hl-color + check_color = "rgb(${config.colorScheme.palette.base0C})"; # key-hl + fail_color = "rgb(${config.colorScheme.palette.base0F})"; # inside-wrong + capslock_color = "rgb(${config.colorScheme.palette.base09})"; # caps-lock-key-hl + + # --- Inner/Outer Core Colors --- + # Replicating your transparent rings with solid action states + outer_color = "rgba(${config.colorScheme.palette.base00}00)"; # ring-color (Transparent) + inner_color = "rgba(${config.colorScheme.palette.base0C}00)"; # inside-color (Transparent) + font_color = "rgba(${config.colorScheme.palette.base00}00)"; # text-color (Transparent) + + fail_transition = 300; + }; + }; + }; + xdg.configFile."swaylock/config".text = '' + screenshots + grace-no-mouse + grace-no-touch + grace=5 + effect-pixelate=5 + fade-in=0.2 + + ignore-empty-password + font=IBM Plex Mono + + color=${config.colorScheme.palette.base00}00 + + indicator-radius=100 + indicator-thickness=30 + + separator-color=${config.colorScheme.palette.base00}00 + + inside-color=${config.colorScheme.palette.base0C}00 + inside-clear-color=${config.colorScheme.palette.base08}FF + inside-caps-lock-color=${config.colorScheme.palette.base09}00 + inside-ver-color=${config.colorScheme.palette.base0C}FF + inside-wrong-color=${config.colorScheme.palette.base0F}FF + + + ring-color=${config.colorScheme.palette.base00}00 + ring-clear-color=${config.colorScheme.palette.base00}00 + ring-caps-lock-color=${config.colorScheme.palette.base00}00 + ring-ver-color=${config.colorScheme.palette.base00}00 + ring-wrong-color=${config.colorScheme.palette.base00}00 + + line-color=${config.colorScheme.palette.base00}00 + line-clear-color=${config.colorScheme.palette.base00}00 + line-caps-lock-color=${config.colorScheme.palette.base00}00 + line-ver-color=${config.colorScheme.palette.base00}00 + line-wrong-color=${config.colorScheme.palette.base00}00 + + text-color=${config.colorScheme.palette.base00}00 + text-clear-color=${config.colorScheme.palette.base00}00 + text-caps-lock-color=${config.colorScheme.palette.base00}00 + text-ver-color=${config.colorScheme.palette.base00}00 + text-wrong-color=${config.colorScheme.palette.base00}00 + + + key-hl-color=${config.colorScheme.palette.base0C}FF + bs-hl-color=${config.colorScheme.palette.base08}FF + caps-lock-key-hl-color=${config.colorScheme.palette.base09}FF + caps-lock-bs-hl-color=${config.colorScheme.palette.base09}FF + ''; + }; +} diff --git a/modules/home/wayland/apps/waylock/default.nix b/modules/home/wayland/apps/waylock/default.nix deleted file mode 100755 index 987204c..0000000 --- a/modules/home/wayland/apps/waylock/default.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ lib, pkgs, config, ... }: { - config = lib.mkIf (config.usercfg.wm == "Wayland") { - - xdg.configFile."swaylock/config".text = '' - screenshots - grace-no-mouse - grace-no-touch - grace=5 - effect-pixelate=5 - fade-in=0.2 - - ignore-empty-password - font=IBM Plex Mono - - color=${config.colorScheme.palette.base00}00 - - indicator-radius=100 - indicator-thickness=30 - - separator-color=${config.colorScheme.palette.base00}00 - - inside-color=${config.colorScheme.palette.base0C}00 - inside-clear-color=${config.colorScheme.palette.base08}FF - inside-caps-lock-color=${config.colorScheme.palette.base09}00 - inside-ver-color=${config.colorScheme.palette.base0C}FF - inside-wrong-color=${config.colorScheme.palette.base0F}FF - - - ring-color=${config.colorScheme.palette.base00}00 - ring-clear-color=${config.colorScheme.palette.base00}00 - ring-caps-lock-color=${config.colorScheme.palette.base00}00 - ring-ver-color=${config.colorScheme.palette.base00}00 - ring-wrong-color=${config.colorScheme.palette.base00}00 - - line-color=${config.colorScheme.palette.base00}00 - line-clear-color=${config.colorScheme.palette.base00}00 - line-caps-lock-color=${config.colorScheme.palette.base00}00 - line-ver-color=${config.colorScheme.palette.base00}00 - line-wrong-color=${config.colorScheme.palette.base00}00 - - text-color=${config.colorScheme.palette.base00}00 - text-clear-color=${config.colorScheme.palette.base00}00 - text-caps-lock-color=${config.colorScheme.palette.base00}00 - text-ver-color=${config.colorScheme.palette.base00}00 - text-wrong-color=${config.colorScheme.palette.base00}00 - - - key-hl-color=${config.colorScheme.palette.base0C}FF - bs-hl-color=${config.colorScheme.palette.base08}FF - caps-lock-key-hl-color=${config.colorScheme.palette.base09}FF - caps-lock-bs-hl-color=${config.colorScheme.palette.base09}FF - ''; - }; -} diff --git a/modules/home/wayland/hyprland/config.nix b/modules/home/wayland/hyprland/config.nix index 5408616..8185be7 100644 --- a/modules/home/wayland/hyprland/config.nix +++ b/modules/home/wayland/hyprland/config.nix @@ -24,7 +24,6 @@ startupScript = pkgs.writeShellScriptBin "hyprland-start" '' - ${pkgs.eww}/bin/eww open bar & ${pkgs.awww}/bin/awww-daemon & ${pkgs.awww}/bin/awww restore & @@ -55,7 +54,7 @@ in { hl.exec_cmd("${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1") hl.exec_cmd("${pkgs.wl-clipboard}/bin/wl-paste --type text --watch ${lib.getExe pkgs.cliphist} store") hl.exec_cmd("${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${lib.getExe pkgs.cliphist} store") - hl.exec_cmd("${lib.getExe pkgs.swayidle} -w timeout 600 '${pkgs.swaylock-effects}/bin/swaylock' before-sleep '${pkgs.swaylock-effects}/bin/swaylock'") + hl.exec_cmd("${lib.getExe pkgs.swayidle} -w timeout 600 '${pkgs.hyprlock}/bin/hyprlock' before-sleep '${pkgs.hyprlock}/bin/hyprlock'") hl.exec_cmd("${lib.getExe startupScript}") hl.exec_cmd("[workspace special:magic silent] kitty --title flying_kitty") end'') @@ -68,13 +67,12 @@ in { position = "auto"; scale = "auto"; bitdepth = 10; - cm = "auto"; #dcip3 - sdrbrightness = 1.4; - # sdrsaturation = 1.0; - # sdr_max_luminance = 220; - # sdr_min_luminance = 0.005; + cm = "dcip3"; #auto"; #hdr";# + sdrbrightness = 0.85; + sdrsaturation = 1.0; + sdr_max_luminance = 600; + sdr_min_luminance = 0.0005; }]; - #Fullscreen HDR is possible without the hdr cm setting if "render:cm_auto_hdr" is enabled. config = { input = { @@ -276,7 +274,7 @@ in { (bind "SUPER + SHIFT + D" (dsp.exec "~/.config/hypr/themes/apatheia/eww/launch_bar")) (bind "SUPER + V" (dsp.exec "${lib.getExe pkgs.cliphist} list | ${lib.getExe pkgs.wofi} -dmenu | ${lib.getExe pkgs.cliphist} decode | ${pkgs.wl-clipboard}/bin/wl-copy")) (bind "PRINT" (dsp.exec "${lib.getExe pkgs.hyprshot} -m region --raw | ${lib.getExe pkgs.satty} --filename - --early-exit --action-on-enter save-to-clipboard --copy-command '${pkgs.wl-clipboard}/bin/wl-copy'")) - (bind "SUPER + L" (dsp.exec "${pkgs.swaylock-effects}/bin/swaylock")) + (bind "SUPER + L" (dsp.exec "${pkgs.hyprlock}/bin/hyprlock")) (bind "SUPER + left" (dsp.focus "left")) (bind "SUPER + right" (dsp.focus "right")) (bind "SUPER + up" (dsp.focus "up")) diff --git a/modules/nixos/system/security/polkit/default.nix b/modules/nixos/system/security/polkit/default.nix index 704437a..041da63 100644 --- a/modules/nixos/system/security/polkit/default.nix +++ b/modules/nixos/system/security/polkit/default.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { security.polkit.enable = true; - security.pam.services.swaylock = { + security.pam.services.hyprlock = { #swaylock text = '' auth include login '';