Files
sxmo-utils/scripts/core/sxmo_rotate.sh
Tzafrir Cohen c113099ea5 dash: Avoid empty shift
Dash gives an error if you try to shift with no positional parameters.

$ bash -c 'shift; echo b'
b
$ dash -c 'shift; echo b'
dash: 1: shift: can't shift that many

Signed-off-by: Tzafrir Cohen <tzafrir@debian.org>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2022-12-05 11:46:44 -08:00

138 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. "$(dirname "$0")/sxmo_common.sh"
applyptrmatrix() {
[ -n "$SXMO_TOUCHSCREEN_ID" ] && xinput set-prop "$SXMO_TOUCHSCREEN_ID" --type=float --type=float "Coordinate Transformation Matrix" "$@"
[ -n "$SXMO_STYLUS_ID" ] && xinput set-prop "$SXMO_STYLUS_ID" --type=float --type=float "Coordinate Transformation Matrix" "$@"
}
swayfocusedtransform() {
swaymsg -t get_outputs | jq -r '.[] | select(.focused == true) | .transform'
}
swayfocusedname() {
swaymsg -t get_outputs | jq -r '.[] | select(.focused == true) | .name'
}
xorgisrotated() {
rotation="$(
xrandr | grep primary | cut -d' ' -f 5 | sed s/\(//
)"
if [ "$rotation" = "normal" ]; then
return 1;
fi
printf %s "$rotation"
return 0;
}
swayisrotated() {
rotation="$(
swayfocusedtransform | sed -e s/90/right/ -e s/270/left/ -e s/180/reverse/
)"
if [ "$rotation" = "normal" ]; then
return 1;
fi
printf %s "$rotation"
return 0;
}
xorgrotinvert() {
sxmo_keyboard.sh close
xrandr -o inverted
applyptrmatrix -1 0 1 0 -1 1 0 0 1
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh invert
exit 0
}
swayrotinvert() {
swaymsg -- output "-" transform 180
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh invert
exit 0
}
xorgrotnormal() {
sxmo_keyboard.sh close
xrandr -o normal
applyptrmatrix 0 0 0 0 0 0 0 0 0
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh normal
exit 0
}
swayrotnormal() {
swaymsg -- output "-" transform 0
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh normal
exit 0
}
xorgrotright() {
sxmo_keyboard.sh close
xrandr -o right
applyptrmatrix 0 1 0 -1 0 1 0 0 1
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh right
exit 0
}
swayrotright() {
swaymsg -- output "-" transform 90
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh right
exit 0
}
xorgrotleft() {
sxmo_keyboard.sh close
xrandr -o left
applyptrmatrix 0 -1 1 1 0 0 0 0 1
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh left
exit 0
}
swayrotleft() {
swaymsg -- output "-" transform 270
superctl restart sxmo_hook_lisgd
sxmo_hook_rotate.sh left
exit 0
}
isrotated() {
case "$SXMO_WM" in
sway)
"swayisrotated"
;;
dwm)
"xorgisrotated"
;;
esac
}
if [ -z "$1" ] || [ "rotate" = "$1" ]; then
if [ $# -ne 0 ]; then
shift
fi
if isrotated; then
set -- rotnormal "$@"
else
set -- rotright "$@"
fi
fi
case "$SXMO_WM" in
sway)
"sway$1" "$@"
;;
dwm)
"xorg$1" "$@"
;;
esac