diff --git a/modules/common.nix b/modules/common.nix index 803a814..59fbb35 100644 --- a/modules/common.nix +++ b/modules/common.nix @@ -27,9 +27,10 @@ }; # User-specific Home Manager configurations users.schulze.imports = [ - ./home/hyprland.nix # Hyprland window manager user config ./home/home-manager.nix # Base user environment + ./home/hyprland.nix # Hyprland window manager user config ./home/hyprlock.nix # Hyprlock screen lock user config + ./home/hypridle.nix # Hypridle idle daemon user config ./home/rofi.nix # Rofi theme/config ./home/ghostty.nix # Ghostty config ./home/gtk.nix # GTK theme diff --git a/modules/desktops/hyprland-desktop.nix b/modules/desktops/hyprland-desktop.nix index 7b9a6c4..51a61ed 100644 --- a/modules/desktops/hyprland-desktop.nix +++ b/modules/desktops/hyprland-desktop.nix @@ -21,6 +21,9 @@ # Power management services for laptops and desktops upower.enable = true; # Battery and power device monitoring power-profiles-daemon.enable = true; # CPU frequency scaling + + # Hypridle, idle daemon + hypridle.enable = true; }; # ================================ diff --git a/modules/home/hypridle.nix b/modules/home/hypridle.nix new file mode 100644 index 0000000..906dc0c --- /dev/null +++ b/modules/home/hypridle.nix @@ -0,0 +1,34 @@ +{ + services.hypridle = { + enable = true; + settings = { + general = { + ignore_dbus_inhibit = false; + after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. + before_sleep_cmd = "loginctl lock-session"; # lock before suspend. + lock_cmd = "pidof hyprlock || hyprlock"; + }; + + listener = [ + { + timeout = 150; # 2.5min. + on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = "brightnessctl -r"; # monitor backlight restore. + } + { + timeout = 300; # 5min. + on-timeout = "loginctl lock-session"; # lock screen when timeout has passed + } + { + timeout = 600; # 10min. + on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed + on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on when activity is detected after timeout has fired. + } + #{ + # timeout = 1800; # 30min. + # on-timeout = "systemctl suspend"; # suspend pc + #} + ]; + }; + }; +} diff --git a/modules/home/hyprland.nix b/modules/home/hyprland.nix index 3695d8b..2444e01 100644 --- a/modules/home/hyprland.nix +++ b/modules/home/hyprland.nix @@ -7,6 +7,7 @@ in { settings = { exec-once = [ "hyprpaper" + "hypridle" ]; input = { kb_layout = "se";