updated toolbelt to not create a new window for chscheme; it now resizes the same window and moves it so that the mouse is at the center of the window. If chscheme is closed, it reverts back to its original size and goes back to the previous menu
This commit is contained in:
77
modules/home/scripts/wm-controls/moveonscreen.nix
Normal file
77
modules/home/scripts/wm-controls/moveonscreen.nix
Normal file
@@ -0,0 +1,77 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.writeShellScriptBin "moveonscreen" ''
|
||||
center_window=false
|
||||
if [[ $1 == "--center" ]]; then
|
||||
center_window=true
|
||||
fi
|
||||
|
||||
cursor_pos=$(hyprctl cursorpos | sed 's/,//')
|
||||
cursor_x=$(echo "$cursor_pos" | awk '{print $1}')
|
||||
cursor_y=$(echo "$cursor_pos" | awk '{print $2}')
|
||||
|
||||
|
||||
window_info=$(hyprctl activewindow -j)
|
||||
window_width=$(echo "$window_info" | jq ".size[0]")
|
||||
window_height=$(echo "$window_info" | jq ".size[1]")
|
||||
|
||||
|
||||
if [ "$center_window" = true ]; then
|
||||
cursor_x=$((cursor_x - window_width / 2))
|
||||
cursor_y=$((cursor_y - window_height / 2))
|
||||
|
||||
if (( cursor_x < 10 )); then
|
||||
cursor_x=10
|
||||
fi
|
||||
if (( cursor_y < 54 )); then
|
||||
cursor_y=54
|
||||
fi
|
||||
fi
|
||||
|
||||
monitors=$(hyprctl monitors -j)
|
||||
|
||||
monitor_x_min=0
|
||||
monitor_x_max=0
|
||||
monitor_y_min=0
|
||||
monitor_y_max=0
|
||||
focused_monitor=-1
|
||||
|
||||
for ((i = 0; i < $(echo "$monitors" | jq 'length'); i++)); do
|
||||
mon_x=$(echo "$monitors" | jq ".[$i].x")
|
||||
mon_y=$(echo "$monitors" | jq ".[$i].y")
|
||||
mon_width=$(echo "$monitors" | jq ".[$i].width")
|
||||
mon_height=$(echo "$monitors" | jq ".[$i].height")
|
||||
is_focused=$(echo "$monitors" | jq ".[$i].focused")
|
||||
|
||||
if [ "$is_focused" = true ]; then
|
||||
monitor_x_min=$((mon_x + 10))
|
||||
monitor_x_max=$((mon_x + mon_width - 10))
|
||||
monitor_y_min=$((mon_y + 10))
|
||||
monitor_y_max=$((mon_y + mon_height - 10))
|
||||
focused_monitor=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$focused_monitor" -eq -1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if (( cursor_x < monitor_x_min )); then
|
||||
adjusted_x=$monitor_x_min
|
||||
elif (( cursor_x + window_width > monitor_x_max )); then
|
||||
adjusted_x=$((monitor_x_max - window_width))
|
||||
else
|
||||
adjusted_x=$cursor_x
|
||||
fi
|
||||
|
||||
if (( cursor_y < monitor_y_min )); then
|
||||
adjusted_y=$monitor_y_min
|
||||
elif (( cursor_y + window_height > monitor_y_max )); then
|
||||
adjusted_y=$((monitor_y_max - window_height))
|
||||
else
|
||||
adjusted_y=$cursor_y
|
||||
fi
|
||||
|
||||
hyprctl dispatch moveactive exact "$adjusted_x $adjusted_y"
|
||||
''
|
||||
Reference in New Issue
Block a user