25 lines
901 B
Bash
Executable File
25 lines
901 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# Get the active monitor (the one with the cursor)
|
|
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
|
|
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
|
|
CURRENT_SCALE=$(echo "$MONITOR_INFO" | jq -r '.scale')
|
|
WIDTH=$(echo "$MONITOR_INFO" | jq -r '.width')
|
|
HEIGHT=$(echo "$MONITOR_INFO" | jq -r '.height')
|
|
REFRESH_RATE=$(echo "$MONITOR_INFO" | jq -r '.refreshRate')
|
|
|
|
# Cycle through scales: 1 → 1.6 → 2 → 3 → 1
|
|
CURRENT_INT=$(awk -v s="$CURRENT_SCALE" 'BEGIN { printf "%.0f", s * 10 }')
|
|
|
|
case "$CURRENT_INT" in
|
|
10) NEW_SCALE=1.6 ;;
|
|
16) NEW_SCALE=2 ;;
|
|
20) NEW_SCALE=3 ;;
|
|
*) NEW_SCALE=1 ;;
|
|
esac
|
|
|
|
hyprctl keyword misc:disable_scale_notification true
|
|
hyprctl keyword monitor "$ACTIVE_MONITOR,${WIDTH}x${HEIGHT}@${REFRESH_RATE},auto,$NEW_SCALE"
|
|
hyprctl keyword misc:disable_scale_notification false
|
|
notify-send " Display scaling set to ${NEW_SCALE}x"
|