Files
AstroVim_Config/.config/hypr/scripts/windowtoright.sh
2024-11-04 13:33:15 +07:00

61 lines
1.7 KiB
Bash

#!/bin/bash
# Lấy thông tin của cửa sổ hiện tại chỉ một lần
window_info=$(hyprctl activewindow)
# Trích xuất giá trị cần thiết từ window_info
# 1892
window_x_position=$(echo "$window_info" | grep -oP '(?<=at: )\d+')
window_at_monitor=$(echo "$window_info" | grep 'monitor' | awk '{print $2}')
window_at_workspace=$(echo "$window_info" | grep 'workspace' | awk '{print $2}')
window_state=$(echo "$window_info" | grep 'fullscreen:' | awk '{print $2}')
current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}')
window_width=$(echo "$window_info" | grep 'size:' | awk '{print $2}' | cut -d',' -f1)
hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển
move(){
# hyprctl dispatch movetoworkspace $((window_at_workspace+1)) \
# && hyprctl dispatch focusmonitor 1 \
# && hyprctl dispatch workspace $((current_workspace+2)) \
# && hyprctl dispatch focusmonitor 0
hyprctl --batch "
dispatch movetoworkspace $((window_at_workspace+1)) ;
dispatch focusmonitor 1 ;
dispatch workspace $((current_workspace+2)) ;
dispatch focusmonitor 0
"
exit 0
}
# NOTE: Di chuyển cửa sổ nếu vị trí X vượt qua ngưỡng
if [ $window_x_position -eq 1934 ] && [ $window_state -eq 1 ]; then
if [ $current_workspace -eq 8 ]; then
exit 1
fi
move
fi
if [ $window_x_position -eq 1934 ] && [ $window_width -eq 1892 ]; then
if [ $current_workspace -eq 8 ]; then
exit 1
fi
move
fi
if [ $window_x_position -eq 2990 ]; then
if [ $current_workspace -eq 8 ]; then
exit 1
fi
move
fi
# Nếu không thoả điều kiện di chuyển, di chuyển cửa sổ sang phải
hyprctl dispatch movewindow r
exit 0