mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Updated the `omarchy-cmd-screensaver` script to allow screensaver effects to run independently on each monitor in multi-display configurations. Previously, the effect loop waited for all animations on all monitors to finish before starting the next effect. With this change, each monitor handles its own effect cycle independently, improving smoothness and responsiveness in multi-monitor setups.
37 lines
1.1 KiB
Bash
Executable File
37 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
screensaver_in_focus() {
|
|
hyprctl activewindow -j | jq -e '.class == "org.omarchy.screensaver"' >/dev/null 2>&1
|
|
}
|
|
|
|
exit_screensaver() {
|
|
hyprctl keyword cursor:invisible false
|
|
pkill -x tte 2>/dev/null
|
|
pkill -f org.omarchy.screensaver 2>/dev/null
|
|
exit 0
|
|
}
|
|
|
|
# Exit the screensaver on signals and input from keyboard and mouse
|
|
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
|
|
printf '\e[?1000h\e[?1003h' # Enable mouse tracking (clicks: 1000, movement: 1003)
|
|
while read -rsn1 -t 0.1; do :; done # Flush any pending input
|
|
|
|
printf '\033]11;rgb:00/00/00\007' # Set background color to black
|
|
|
|
hyprctl keyword cursor:invisible true &>/dev/null
|
|
|
|
tty=$(tty 2>/dev/null)
|
|
|
|
while true; do
|
|
tte -i ~/.config/omarchy/branding/screensaver.txt \
|
|
--frame-rate 120 --canvas-width 0 --canvas-height 0 --reuse-canvas --anchor-canvas c --anchor-text c\
|
|
--random-effect --exclude-effects dev_worm \
|
|
--no-eol --no-restore-cursor &
|
|
|
|
while pgrep -t "${tty#/dev/}" -x tte >/dev/null; do
|
|
if read -rsn1 -t 1 || ! screensaver_in_focus; then
|
|
exit_screensaver
|
|
fi
|
|
done
|
|
done
|