custom-hypr - fix - drop fps when inactivity 10s
This commit is contained in:
@@ -1,60 +1,38 @@
|
||||
#!/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)
|
||||
# Tắt globbing để tăng tốc
|
||||
set -f
|
||||
|
||||
# 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}')
|
||||
# Lấy thông tin cửa sổ và workspace bằng JSON
|
||||
window_info=$(hyprctl activewindow -j)
|
||||
current_workspace=$(hyprctl activeworkspace -j | jq -r '.id')
|
||||
|
||||
current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}')
|
||||
window_width=$(echo "$window_info" | grep 'size:' | awk '{print $2}' | cut -d',' -f1)
|
||||
# Trích xuất thông tin cần thiết
|
||||
window_x_position=$(echo "$window_info" | jq -r '.at[0]')
|
||||
window_state=$(echo "$window_info" | jq -r '.fullscreen')
|
||||
window_width=$(echo "$window_info" | jq -r '.size[0]')
|
||||
window_at_workspace=$(echo "$window_info" | jq -r '.workspace.id')
|
||||
|
||||
hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển
|
||||
|
||||
move(){
|
||||
# hyprctl dispatch movetoworkspace $((window_at_workspace-1)) \
|
||||
# && hyprctl dispatch focusmonitor 0 \
|
||||
# && hyprctl dispatch workspace $((current_workspace-2)) \
|
||||
# && hyprctl dispatch focusmonitor 1
|
||||
|
||||
hyprctl --batch "
|
||||
dispatch movetoworkspace $((window_at_workspace-1)) ;
|
||||
dispatch workspace $((current_workspace-2)) ;
|
||||
dispatch focusmonitor 1
|
||||
"
|
||||
exit 0
|
||||
# Hàm di chuyển được sửa lại
|
||||
move() {
|
||||
# Đảm bảo thứ tự lệnh đúng: di chuyển window trước, rồi chuyển workspace
|
||||
hyprctl dispatch movetoworkspace "$((window_at_workspace-1))"
|
||||
hyprctl dispatch workspace "$((current_workspace-2))"
|
||||
hyprctl dispatch focusmonitor 1
|
||||
exit 0
|
||||
}
|
||||
|
||||
# NOTE: Di chuyển cửa sổ nếu vị trí X vượt qua ngưỡng
|
||||
if [ $window_x_position -eq 14 ] && [ $window_state -eq 1 ]; then
|
||||
|
||||
if [ $current_workspace -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
move
|
||||
# Tắt fullscreen nếu đang bật
|
||||
[ "$window_state" -eq 1 ] && hyprctl dispatch fullscreenstate 0
|
||||
|
||||
# Logic di chuyển
|
||||
if [ "$window_x_position" -eq 14 ] && [ "$current_workspace" -ne 1 ]; then
|
||||
# Kiểm tra các điều kiện để di chuyển
|
||||
if [ "$window_state" -eq 1 ] || [ "$window_width" -eq 1892 ] || true; then
|
||||
move
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $window_x_position -eq 14 ] && [ $window_width -eq 1892 ]; then
|
||||
|
||||
if [ $current_workspace -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
move
|
||||
fi
|
||||
|
||||
|
||||
if [ $window_x_position -eq 14 ]; then
|
||||
|
||||
if [ $current_workspace -eq 1 ]; 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
|
||||
# Default action
|
||||
hyprctl dispatch movewindow l
|
||||
exit 0
|
||||
|
||||
@@ -1,55 +1,38 @@
|
||||
#!/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}')
|
||||
# Tắt globbing để tăng tốc
|
||||
set -f
|
||||
|
||||
current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}')
|
||||
window_width=$(echo "$window_info" | grep 'size:' | awk '{print $2}' | cut -d',' -f1)
|
||||
# Lấy thông tin cửa sổ và workspace bằng JSON
|
||||
window_info=$(hyprctl activewindow -j)
|
||||
current_workspace=$(hyprctl activeworkspace -j | jq -r '.id')
|
||||
|
||||
hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển
|
||||
# Trích xuất thông tin cần thiết
|
||||
window_x_position=$(echo "$window_info" | jq -r '.at[0]')
|
||||
window_state=$(echo "$window_info" | jq -r '.fullscreen')
|
||||
window_width=$(echo "$window_info" | jq -r '.size[0]')
|
||||
window_at_workspace=$(echo "$window_info" | jq -r '.workspace.id')
|
||||
|
||||
move(){
|
||||
# Tắt fullscreen nếu cần trước khi di chuyển
|
||||
[ "$window_state" -eq 1 ] && hyprctl dispatch fullscreenstate 0
|
||||
|
||||
hyprctl --batch "
|
||||
dispatch movetoworkspace $((window_at_workspace+1)) ;
|
||||
dispatch workspace $((current_workspace+2)) ;
|
||||
dispatch focusmonitor 0
|
||||
"
|
||||
exit 0
|
||||
# Hàm di chuyển được tối ưu
|
||||
move() {
|
||||
hyprctl dispatch movetoworkspace "$((window_at_workspace+1))"
|
||||
hyprctl dispatch workspace "$((current_workspace+2))"
|
||||
hyprctl 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
|
||||
# Logic di chuyển được đơn giản hóa
|
||||
if [ "$current_workspace" -ne 8 ]; then
|
||||
if [ "$window_x_position" -eq 1934 ] && { [ "$window_state" -eq 1 ] || [ "$window_width" -eq 1892 ]; }; then
|
||||
move
|
||||
elif [ "$window_x_position" -eq 2990 ]; then
|
||||
move
|
||||
fi
|
||||
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
|
||||
# Default action
|
||||
hyprctl dispatch movewindow r
|
||||
exit 0
|
||||
|
||||
@@ -1,25 +1,23 @@
|
||||
#!/bin/bash
|
||||
# Extract workspace ID from the output of hyprctl activewindow
|
||||
current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}')
|
||||
|
||||
# Determine the second workspace based on whether the current workspace is even or odd
|
||||
if [ $((current_workspace % 2)) -eq 0 ]; then
|
||||
second_workspace=$((current_workspace - 1))
|
||||
else
|
||||
second_workspace=$((current_workspace + 1))
|
||||
fi
|
||||
# Tắt globbing để tăng tốc
|
||||
set -f
|
||||
|
||||
# Lấy current_workspace trực tiếp từ JSON
|
||||
current_workspace=$(hyprctl activeworkspace -j | jq -r '.id')
|
||||
|
||||
# Tính toán second_workspace dựa trên chẵn/lẻ
|
||||
second_workspace=$((current_workspace % 2 == 0 ? current_workspace - 1 : current_workspace + 1))
|
||||
|
||||
# Tính toán workspace cho các monitor
|
||||
primary_monitor_workspace=$((current_workspace - 2))
|
||||
secondary_monitor_workspace=$((second_workspace - 2))
|
||||
|
||||
# Check if primary_monitor_workspace is less than or equal to 0
|
||||
# or if secondary_monitor_workspace is greater than or equal to 11
|
||||
if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -ge 9 ]; then
|
||||
exit 1
|
||||
fi
|
||||
# Kiểm tra giới hạn workspace
|
||||
[ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -ge 9 ] && exit 1
|
||||
|
||||
# Thực thi chuyển đổi workspace với tối ưu animation
|
||||
hyprctl dispatch workspace "$primary_monitor_workspace"
|
||||
hyprctl dispatch workspace "$secondary_monitor_workspace"
|
||||
|
||||
hyprctl --batch "
|
||||
dispatch workspace $secondary_monitor_workspace ;
|
||||
dispatch workspace $primary_monitor_workspace ;
|
||||
"
|
||||
exit 0
|
||||
|
||||
@@ -1,31 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Extract workspace ID from the output of hyprctl activewindow
|
||||
current_monitor=$(hyprctl activeworkspace | grep 'monitorID' | awk '{print $2}')
|
||||
current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}')
|
||||
# Tắt globbing để tăng tốc
|
||||
set -f
|
||||
|
||||
# Determine the second workspace based on whether the current workspace is even or odd
|
||||
echo $current_workspace
|
||||
echo $current_monitor
|
||||
# Lấy thông tin từ JSON output
|
||||
workspace_info=$(hyprctl activeworkspace -j)
|
||||
current_monitor=$(echo "$workspace_info" | jq -r '.monitorID')
|
||||
current_workspace=$(echo "$workspace_info" | jq -r '.id')
|
||||
|
||||
if [ $((current_workspace % 2)) -eq 0 ]; then
|
||||
second_workspace=$((current_workspace - 1))
|
||||
else
|
||||
second_workspace=$((current_workspace + 1))
|
||||
fi
|
||||
# Tính toán second_workspace
|
||||
second_workspace=$((current_workspace % 2 == 0 ? current_workspace - 1 : current_workspace + 1))
|
||||
|
||||
primary_monitor_workspace=$((current_workspace + 2)) # 1 + 2 =3
|
||||
secondary_monitor_workspace=$((second_workspace + 2)) # 2 + 2 =4
|
||||
# Tính toán workspace cho các monitor
|
||||
primary_monitor_workspace=$((current_workspace + 2))
|
||||
secondary_monitor_workspace=$((second_workspace + 2))
|
||||
|
||||
# Check if primary_monitor_workspace is less than or equal to 0
|
||||
# or if secondary_monitor_workspace is greater than or equal to 11
|
||||
if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -ge 9 ]; then
|
||||
exit 1
|
||||
fi
|
||||
# Kiểm tra giới hạn workspace
|
||||
[ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -ge 9 ] && exit 1
|
||||
|
||||
# Thực thi chuyển đổi workspace với tối ưu animation
|
||||
hyprctl dispatch workspace "$primary_monitor_workspace"
|
||||
hyprctl dispatch workspace "$secondary_monitor_workspace"
|
||||
|
||||
|
||||
hyprctl --batch "
|
||||
dispatch workspace $secondary_monitor_workspace ;
|
||||
dispatch workspace $primary_monitor_workspace ;
|
||||
"
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user