pmaports/main/postmarketos-base-ui-cage/cage-ui-autorotate.sh
Vitaliy Ognev 2db5ff27fc
main/postmarketos-base-ui-cage: automatically rotate panel (MR 5121)
[ci:skip-build]: already built successfully in CI
2024-05-16 10:40:19 +02:00

45 lines
1.2 KiB
Bash

#!/bin/sh
set -ueo pipefail
CONNECTORS=$(drm_info -j 2>/dev/null | jq -rc '[.[].connectors | .[] | select( .status == 1 )]')
while read -r CONNECTOR ; do
CONNECTOR_ID=$(echo "$CONNECTOR" | jq -rc '.id')
[ "null" == "$CONNECTOR_ID" ] && continue
ROTATION=$(echo "$CONNECTOR" | jq -rc '.properties."panel orientation"')
[ "null" == "$ROTATION" ] && continue
ROTATION_VALUE=$(echo "$ROTATION" | jq -rc '.value')
[ "null" == "$ROTATION_VALUE" ] && continue
ROTATION_LABEL=$(echo "$ROTATION" | jq -rc '.spec | .[] | select( .value == '$ROTATION_VALUE' ) | .name')
[ "null" == "$ROTATION_LABEL" ] && continue
OUTPUT_NAME=none
for CONN_ID in /sys/class/drm/*/connector_id; do
if [ "$CONNECTOR_ID" == $(cat $CONN_ID) ]; then
OUTPUT_NAME=$(dirname "$CONN_ID")
OUTPUT_NAME=${OUTPUT_NAME#*/card?-}
fi
done
[ "none" == "$OUTPUT_NAME" ] && continue
case "$ROTATION_LABEL" in
"Normal")
;;
"Upside Down")
wlr-randr --output "$OUTPUT_NAME" --transform 180
;;
"Left Side Up")
wlr-randr --output "$OUTPUT_NAME" --transform 90
;;
"Right Side Up")
wlr-randr --output "$OUTPUT_NAME" --transform 270
;;
*)
echo "Connector $CONNECTOR_ID: Unsupported rotation: $ROTATION_LABEL"
;;
esac
done < <(echo "$CONNECTORS" | jq -rc .[])