dotfiles/scripts/wacom-setup

41 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
# Set Wacom tablet parameters
# for 1:1 drawing, X11 script
WACOM_ID="$1"
WACOM_SCREEN="$2"
# If first argument is 'menu', choose parameters with a graphical menu
if [ "$WACOM_ID" = "menu" ] ; then
WACOM_ID="$(xsetwacom list devices | menu "Device:" | grep -o 'id:.*:' | grep -o '[0-9]*')"
WACOM_SCREEN="$(xrandr | grep -o '[0-9]*x[0-9]*+[0-9]*+[0-9]*' | menu "Screen:")"
fi
# If required fields are empty, quit with help message
if [ "$WACOM_ID" = "" -o "$WACOM_SCREEN" = "" ] ; then
printf "Usage: wacom_pen_setup [ID] [SCREEN]\n"
printf "\033[1m\nDEVICES:\033[0m\n"
xsetwacom list devices
SCREENS="$(xrandr | grep -o '[0-9]*x[0-9]*+[0-9]*+[0-9]*' | tr '\n' ' ')"
printf "\033[1m\nSCREENS:\033[0m\n"
for SCREEN in $SCREENS ; do
printf "%s\n" "$SCREEN"
done
return 0
fi
# Define $SCREEN dimensions
SCREEN_W="${WACOM_SCREEN%%x*}"
SCREEN_H="${WACOM_SCREEN##*x}"
SCREEN_H="${SCREEN_H%%+*}"
# Define proper tablet dimensions with screen aspect ratio
WACOM_W="$(xsetwacom get $WACOM_ID area | cut -d ' ' -f 3)"
WACOM_H="$(printf %d\\n "$((${WACOM_W} * ${SCREEN_H}/${SCREEN_W}))")"
# Configure tablet, notify if there's an error
xsetwacom set "$WACOM_ID" MapToOutput "$WACOM_SCREEN" || notify-send "wacom_pen_setup" "Error occured while setting screen"
xsetwacom set "$WACOM_ID" Area 0 0 "$WACOM_W" "$WACOM_H" || notify-send "wacom_pen_setup" "Error occured while setting tablet dimensions"