From 4c414f8dc2b78c8b9b90456202316f20eed988f4 Mon Sep 17 00:00:00 2001 From: Darren Date: Thu, 20 Nov 2025 04:38:29 -0800 Subject: [PATCH] updated omarchy-hyprland-window-pop to have an optional parameters (#3456) * added optional argument for floating a window * added sample comment * Style * This file isn't meant to be changed so not a good place for commented out recommendations --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-hyprland-window-pop | 52 ++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/bin/omarchy-hyprland-window-pop b/bin/omarchy-hyprland-window-pop index ac700bf5..85b5b531 100755 --- a/bin/omarchy-hyprland-window-pop +++ b/bin/omarchy-hyprland-window-pop @@ -2,21 +2,45 @@ # Toggle to pop-out a tile to stay fixed on a display basis. -active=$(hyprctl activewindow -j) -pinned=$(echo "$active" | jq .pinned) -addr=$(echo "$active" | jq -r ".address") -[ -z "$addr" ] && { echo "No active window"; exit 0; } +# Usage: +# omarchy-hyprland-window-pop [width height [x y]] +# +# Arguments: +# width Optional. Width of the floating window. Default: 1300 +# height Optional. Height of the floating window. Default: 900 +# x Optional. X position of the window. Must provide both X and Y to take effect. +# y Optional. Y position of the window. Must provide both X and Y to take effect. +# +# Behavior: +# - If the window is already pinned, it will be unpinned and removed from the pop layer. +# - If the window is not pinned, it will be floated, resized, moved/centered, pinned, brought to top, and popped. -if [ "$pinned" = "true" ]; then +width=${1:-1300} +height=${2:-900} +x=${3:-} +y=${4:-} + +active=$(hyprctl activewindow -j) +pinned=$(echo "$active" | jq ".pinned") +addr=$(echo "$active" | jq -r ".address") + +if [[ $pinned == "true" ]]; then hyprctl -q --batch \ - "dispatch pin address:$addr;" \ - "dispatch togglefloating address:$addr;" \ - "dispatch tagwindow -pop address:$addr;" -else + dispatch pin address:$addr; \ + dispatch togglefloating address:$addr; \ + dispatch tagwindow -pop address:$addr; +elif [[ -n $addr ]]; then + hyprctl dispatch togglefloating address:$addr + hyprctl dispatch resizeactive exact $width $height address:$addr + + if [[ -n $x && -n $y ]]; then + hyprctl dispatch moveactive $x $y address:$addr + else + hyprctl dispatch centerwindow address:$addr + fi + hyprctl -q --batch \ - "dispatch togglefloating address:$addr;" \ - "dispatch centerwindow address:$addr;" \ - "dispatch pin address:$addr;" \ - "dispatch alterzorder top address:$addr;" \ - "dispatch tagwindow +pop address:$addr;" + dispatch pin address:$addr; \ + dispatch alterzorder top address:$addr; \ + dispatch tagwindow +pop address:$addr; fi