From fc8e4c04007a921e2b8e8980a7722aa0a0db08df Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 3 Nov 2025 21:33:57 -0500 Subject: [PATCH] Make screensaver work with xdg-terminal-exec --- bin/omarchy-cmd-screensaver | 13 +++++++++++-- bin/omarchy-launch-screensaver | 10 ++++------ default/hypr/apps/system.conf | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index 0d3d4779..0aab645a 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -1,22 +1,31 @@ #!/bin/bash screensaver_in_focus() { - hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1 + hyprctl activewindow -j | jq -e '.class == "com.omarchy.screensaver"' >/dev/null 2>&1 } exit_screensaver() { + # Clear and reset terminal + printf '\033[2J\033[H\033[0m' hyprctl keyword cursor:invisible false pkill -x tte 2>/dev/null - pkill -f "alacritty --class Screensaver" 2>/dev/null exit 0 } trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT +# Set background and cursor colors using OSC escape sequences +printf '\033]11;rgb:00/00/00\007' # Background color to black +printf '\033]12;rgb:00/00/00\007' # Cursor color to black + +# Clear screen and fill with black background +printf '\033[48;2;0;0;0m\033[2J\033[H' + hyprctl keyword cursor:invisible true &>/dev/null while true; do effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1) + tte -i ~/.config/omarchy/branding/screensaver.txt \ --frame-rate 240 --canvas-width 0 --canvas-height 0 --anchor-canvas c --anchor-text c --no-eol \ "$effect" & diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index f81b4cde..df20a521 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -5,8 +5,8 @@ if ! command -v tte &>/dev/null; then exit 1 fi -# Exit early if screensave is already running -pgrep -f "alacritty --class Screensaver" && exit 0 +# Exit early if screensaver is already running +pgrep -f "omarchy-cmd-screensaver" && exit 0 # Allow screensaver to be turned off but also force started if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then @@ -18,11 +18,9 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do hyprctl dispatch focusmonitor $m - # FIXME: Find a way to make this generic where we it can work for kitty + ghostty hyprctl dispatch exec -- \ - alacritty --class Screensaver \ - --config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \ - -e omarchy-cmd-screensaver + xdg-terminal-exec --app-id=com.omarchy.screensaver \ + omarchy-cmd-screensaver done hyprctl dispatch focusmonitor $focused diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 82300521..7bb0ae51 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -8,7 +8,7 @@ windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|De windowrule = float, class:org.gnome.Calculator # Fullscreen screensaver -windowrule = fullscreen, class:Screensaver +windowrule = fullscreen, class:com.omarchy.screensaver # No transparency on media windows windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$