diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 7e2d4de0..2ad91f0b 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -3,6 +3,11 @@ # Exit early if screensave is already running pgrep -f "alacritty --class Screensaver" && exit 0 +# Allow screensaver to be turned off but also force started +if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then + exit 1 +fi + focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do diff --git a/bin/omarchy-menu b/bin/omarchy-menu index d8fb1075..07c0a6d2 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -117,7 +117,7 @@ show_screenrecord_menu() { show_toggle_menu() { case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in - *Screensaver*) omarchy-launch-screensaver ;; + *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; *Bar*) pkill -SIGUSR1 waybar ;; @@ -327,8 +327,9 @@ show_update_config_menu() { } show_system_menu() { - case $(menu "System" " Lock\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in + case $(menu "System" " Lock\n󱄄 Screensaver\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in *Lock*) omarchy-lock-screen ;; + *Screensaver*) omarchy-launch-screensaver force ;; *Suspend*) systemctl suspend ;; *Relaunch*) uwsm stop ;; *Restart*) systemctl reboot ;; diff --git a/bin/omarchy-toggle-screensaver b/bin/omarchy-toggle-screensaver new file mode 100755 index 00000000..2edd4010 --- /dev/null +++ b/bin/omarchy-toggle-screensaver @@ -0,0 +1,12 @@ +#!/bin/bash + +STATE_FILE=~/.local/state/omarchy/toggles/screensaver-off + +if [[ -f $STATE_FILE ]]; then + rm -f $STATE_FILE + notify-send "󱄄 Screensaver enabled" +else + mkdir -p "$(dirname $STATE_FILE)" + touch $STATE_FILE + notify-send "󱄄 Screensaver disabled" +fi