From ef4a0a483d075ad9502b52f9b8bd0598b587225b Mon Sep 17 00:00:00 2001 From: The_miro Date: Tue, 19 May 2026 16:41:52 +0200 Subject: [PATCH] fix(scripts): port screen rotation to Lua config Replace hyprctl keyword with hyprctl eval + hl.monitor/hl.device Lua API, and switch monitor/device parsing from fragile grep to hyprctl -j + jq. Co-Authored-By: Claude Sonnet 4.6 --- desktopenvs/hyprlua/scripts/unified-rotate.sh | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/desktopenvs/hyprlua/scripts/unified-rotate.sh b/desktopenvs/hyprlua/scripts/unified-rotate.sh index f19266c..eefc17b 100755 --- a/desktopenvs/hyprlua/scripts/unified-rotate.sh +++ b/desktopenvs/hyprlua/scripts/unified-rotate.sh @@ -6,17 +6,13 @@ direction="$1" if [[ "$direction" != "cw" && "$direction" != "ccw" && "$direction" != "0" && "$direction" != "1" && "$direction" != "2" && "$direction" != "3" ]]; then echo "Usage: $0 [cw|ccw] OR $0 [0|1|2|3]" - exit 1 fi -# Get current monitor name -curmon=$(hyprctl monitors | grep -B12 "focused: yes" | head -n1 | awk '{print $2}') -# curmon=$(hyprctl monitors | awk '/focused: yes/{getline; print $2}') +monitors_json=$(hyprctl monitors -j) -# Get current transform value -# currot=$(hyprctl monitors | awk '/focused: yes/{for(i=0;i<15;i++){getline;if($1=="transform:"){print $2;break}}}') -currot=$(hyprctl monitors | grep -B1 "focused: yes" | head -n1 | awk '{print $2}') +curmon=$(echo "$monitors_json" | jq -r '.[] | select(.focused) | .name') +currot=$(echo "$monitors_json" | jq -r '.[] | select(.focused) | .transform') # Calculate new rotation if [[ "$direction" == "cw" ]]; then @@ -25,29 +21,27 @@ if [[ "$direction" == "cw" ]]; then else newrot=$((currot + 1)) fi -else # ccw +elif [[ "$direction" == "ccw" ]]; then if [[ "$currot" == "0" ]]; then newrot="3" else newrot=$((currot - 1)) fi -fi - -if [[ "$direction" == "0" || "$direction" == "1" || "$direction" == "2" || "$direction" == "3" ]]; then - newrot="$direction" +else + newrot="$direction" fi echo "Rotating monitor '$curmon' from $currot to $newrot ($direction)" -# Apply new rotation to monitor -hyprctl keyword monitor "$curmon,preferred,auto,1,transform,$newrot" +# Apply new rotation to monitor (hyprctl keyword doesn't work with Lua config) +hyprctl eval "hl.monitor({output='$curmon', transform=$newrot})" # Detect touchscreen device name -touchdev=$(hyprctl devices | awk '/Touch Device/{getline; print $1}') +touchdev=$(hyprctl devices -j | jq -r '.touch[0].name // empty') if [[ -n "$touchdev" ]]; then echo "Applying same rotation to touchscreen: $touchdev" - hyprctl keyword "device[$touchdev]:transform" "$newrot" + hyprctl eval "hl.device({name='$touchdev', transform=$newrot})" else echo "No touchscreen device detected." fi