diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index 0aab645a..0d3d4779 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -1,31 +1,22 @@ #!/bin/bash screensaver_in_focus() { - hyprctl activewindow -j | jq -e '.class == "com.omarchy.screensaver"' >/dev/null 2>&1 + hyprctl activewindow -j | jq -e '.class == "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 df20a521..f81b4cde 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 screensaver is already running -pgrep -f "omarchy-cmd-screensaver" && exit 0 +# 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 @@ -18,9 +18,11 @@ 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 -- \ - xdg-terminal-exec --app-id=com.omarchy.screensaver \ - omarchy-cmd-screensaver + alacritty --class Screensaver \ + --config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \ + -e omarchy-cmd-screensaver done hyprctl dispatch focusmonitor $focused diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 7bb0ae51..82300521 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:com.omarchy.screensaver +windowrule = fullscreen, class: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)$