pinwheel: Replace swaylock with hyprlock
Fixes black internal screen after unlocking with external monitor disconnected, and occasional Hyprland crashes on lock.
This commit is contained in:
@@ -14,7 +14,7 @@ in
|
|||||||
nix-index.enable = false;
|
nix-index.enable = false;
|
||||||
greetd.enable = true;
|
greetd.enable = true;
|
||||||
hyprland.enable = true;
|
hyprland.enable = true;
|
||||||
swaylock.enable = true;
|
hyprlock.enable = true;
|
||||||
physlock.enable = false;
|
physlock.enable = false;
|
||||||
|
|
||||||
power.enable = true;
|
power.enable = true;
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
enabled = config.mod.swaylock.enable;
|
enabled = config.mod.hyprlock.enable;
|
||||||
hyprlandEnabled = config.mod.hyprland.enable;
|
hyprlandEnabled = config.mod.hyprland.enable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
mod.swaylock = {
|
mod.hyprlock = {
|
||||||
enable = lib.mkEnableOption "enable swaylock module";
|
enable = lib.mkEnableOption "enable hyprlock module";
|
||||||
|
|
||||||
dpmsTimeout = lib.mkOption {
|
dpmsTimeout = lib.mkOption {
|
||||||
description = "timeout in seconds before DPMS is turned on";
|
description = "timeout in seconds before DPMS is turned on";
|
||||||
@@ -23,13 +23,32 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf enabled {
|
config = lib.mkIf enabled {
|
||||||
home-manager.users.alex = {
|
home-manager.users.alex = {
|
||||||
programs.swaylock = {
|
programs.hyprlock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
color = "000000";
|
general = {
|
||||||
indicator-idle-visible = false;
|
hide_cursor = true;
|
||||||
show-failed-attempts = true;
|
};
|
||||||
|
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
color = "rgb(000000)";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
size = "250, 50";
|
||||||
|
position = "0, 0";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_center = true;
|
||||||
|
fade_on_empty = true;
|
||||||
|
placeholder_text = "";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -39,18 +58,18 @@ in
|
|||||||
let
|
let
|
||||||
pause-music = "${pkgs.playerctl}/bin/playerctl -p spotify pause";
|
pause-music = "${pkgs.playerctl}/bin/playerctl -p spotify pause";
|
||||||
|
|
||||||
dpmsTimeout = config.mod.swaylock.dpmsTimeout;
|
dpmsTimeout = config.mod.hyprlock.dpmsTimeout;
|
||||||
dpms-lock = pkgs.writeShellScript "dpms-lock" ''
|
dpms-lock = pkgs.writeShellScript "dpms-lock" ''
|
||||||
${pkgs.swayidle}/bin/swayidle \
|
${pkgs.swayidle}/bin/swayidle \
|
||||||
timeout ${dpmsTimeout} "${pkgs.hyprland}/bin/hyprctl dispatch dpms off" \
|
timeout ${dpmsTimeout} "${pkgs.hyprland}/bin/hyprctl dispatch dpms off" \
|
||||||
resume "${pkgs.hyprland}/bin/hyprctl dispatch dpms on" &
|
resume "${pkgs.hyprland}/bin/hyprctl dispatch dpms on" &
|
||||||
|
|
||||||
${pkgs.swaylock}/bin/swaylock && ${pkgs.procps}/bin/pkill swayidle
|
${pkgs.hyprlock}/bin/hyprlock && ${pkgs.procps}/bin/pkill swayidle
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
[
|
[
|
||||||
"$mod, x, exec, ${pause-music}; ${dpms-lock}"
|
"$mod, x, exec, ${pause-music}; ${dpms-lock}"
|
||||||
"$mod SHIFT, x, exec, ${pause-music}; ${pkgs.swaylock}/bin/swaylock -f; systemctl suspend"
|
"$mod SHIFT, x, exec, ${pause-music}; ${pkgs.hyprlock}/bin/hyprlock & sleep 0.5; systemctl suspend"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -59,11 +78,7 @@ in
|
|||||||
security = {
|
security = {
|
||||||
polkit.enable = true;
|
polkit.enable = true;
|
||||||
|
|
||||||
pam.services.swaylock.text = ''
|
pam.services.hyprlock = {};
|
||||||
# PAM configuration file for the swaylock screen locker. By default, it includes
|
|
||||||
# the 'login' configuration file (see /etc/pam.d/login)
|
|
||||||
auth include login
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ in
|
|||||||
path = [
|
path = [
|
||||||
pkgs.coreutils # For `cat`
|
pkgs.coreutils # For `cat`
|
||||||
pkgs.libnotify
|
pkgs.libnotify
|
||||||
pkgs.swaylock
|
pkgs.hyprlock
|
||||||
];
|
];
|
||||||
|
|
||||||
script =
|
script =
|
||||||
@@ -103,7 +103,7 @@ in
|
|||||||
|
|
||||||
BATTERY_STATUS=$(cat /sys/class/power_supply/${lowbat.battery}/status)
|
BATTERY_STATUS=$(cat /sys/class/power_supply/${lowbat.battery}/status)
|
||||||
if [[ $BATTERY_STATUS = "Discharging" ]]; then
|
if [[ $BATTERY_STATUS = "Discharging" ]]; then
|
||||||
${pause-music}; ${pkgs.swaylock}/bin/swaylock -f; systemctl suspend
|
${pause-music}; ${pkgs.hyprlock}/bin/hyprlock & sleep 0.5; systemctl suspend
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|||||||
Reference in New Issue
Block a user