diff --git a/home/programs/graphical/wms/hyprland/config/keybinds.nix b/home/programs/graphical/wms/hyprland/config/keybinds.nix index 5ae8a89..f7301da 100644 --- a/home/programs/graphical/wms/hyprland/config/keybinds.nix +++ b/home/programs/graphical/wms/hyprland/config/keybinds.nix @@ -36,6 +36,7 @@ # TODO: Requires programs "SUPER_SHIFT, L, exec, wlogout -p layer-shell" "SUPER_CTRL, L, exec, loginctl lock-session" + "SUPER_SHIFT, T, exec, toggle-idle" # # Screenshots diff --git a/home/programs/graphical/wms/hyprland/default.nix b/home/programs/graphical/wms/hyprland/default.nix index 6c31cf0..c9026cf 100644 --- a/home/programs/graphical/wms/hyprland/default.nix +++ b/home/programs/graphical/wms/hyprland/default.nix @@ -21,6 +21,7 @@ in { hyprPkgs.quick-record hyprPkgs.toggle-fake-fullscreen hyprPkgs.toggle-notifications + hyprPkgs.toggle-idle hyprPkgs.brightness pkgs.brightnessctl pkgs.hyprpicker diff --git a/home/programs/graphical/wms/hyprland/packages/default.nix b/home/programs/graphical/wms/hyprland/packages/default.nix index 2f15f04..715d5f4 100644 --- a/home/programs/graphical/wms/hyprland/packages/default.nix +++ b/home/programs/graphical/wms/hyprland/packages/default.nix @@ -9,6 +9,7 @@ quick-record = pkgs.callPackage ./quick-record {}; toggle-fake-fullscreen = pkgs.callPackage ./toggle-fake-fullscreen {}; toggle-notifications = pkgs.callPackage ./toggle-notifications {}; + toggle-idle = pkgs.callPackage ./toggle-idle {}; }; in packages diff --git a/home/programs/graphical/wms/hyprland/packages/toggle-idle/default.nix b/home/programs/graphical/wms/hyprland/packages/toggle-idle/default.nix new file mode 100644 index 0000000..9d2e187 --- /dev/null +++ b/home/programs/graphical/wms/hyprland/packages/toggle-idle/default.nix @@ -0,0 +1,14 @@ +{pkgs, ...}: +pkgs.writeShellApplication { + name = "toggle-idle"; + runtimeInputs = with pkgs; [ + coreutils + gnugrep + procps + libnotify + hypridle + ]; + text = '' + ${builtins.readFile ./toggle-idle.sh} + ''; +} diff --git a/home/programs/graphical/wms/hyprland/packages/toggle-idle/toggle-idle.sh b/home/programs/graphical/wms/hyprland/packages/toggle-idle/toggle-idle.sh new file mode 100644 index 0000000..4edf63c --- /dev/null +++ b/home/programs/graphical/wms/hyprland/packages/toggle-idle/toggle-idle.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euo pipefail + +idleprog="hypridle" # or swayidle + +pid="$(pidof "$idleprog" || true)" +if [ -n "$pid" ]; then + # is process suspended? + if ps -o stat= -p "$pid" | grep T >/dev/null; then + kill -CONT "$pid" + notify-send "Idle-Toggle" "Idle timeouts enabled" + else + kill -STOP "$pid" + notify-send "Idle-Toggle" "Idle timeouts disabled" + fi +else + notify-send "Idle-Toggle" "$idleprog not running!" +fi