dotfiles/.local/bin/xsetwacom-my-preferences
2019-09-26 20:49:23 +02:00

90 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
#
# From:
# https://bitbucket.org/denilsonsa/small_scripts/src/default/xsetwacom_my_preferences.sh
#
# CONFIGURATION
# Set this to your (stylus) device. Find it by running:
# xsetwacom --list devices
DEVICE='Wacom USB Bamboo PAD Pen stylus'
# These numbers are specific for each device. Get them by running:
# xsetwacom --set "Your device name here" ResetArea
# xsetwacom --get "Your device name here" Area
AREAX=10690
AREAY=6680
# END OF CONFIGURATION
SCREEN="$1"
if [ -z "$SCREEN" -o "$SCREEN" = "--help" -o "$SCREEN" = "-help" -o "$SCREEN" = "-h" ]; then
echo 'This script configures a Wacom tablet to one specific monitor, or to '
echo 'the entire desktop. In addition, it also reduces the tablet area in '
echo 'order to keep the same aspect ratio as the monitor.'
echo
echo 'How to run this script? Run one of the following lines:'
CONNECTED_DISPLAYS=`xrandr -q --current | sed -n 's/^\([^ ]\+\) connected .*/\1/p'`
for d in desktop $CONNECTED_DISPLAYS; do
echo " $0 $d"
done
exit
fi
if [ "$SCREEN" = "desktop" ]; then
# Sample xrandr line:
# Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 32767 x 32767
LINE=`xrandr -q --current | sed -n 's/^Screen 0:.*, current \([0-9]\+\) x \([0-9]\+\),.*/\1 \2/p'`
read WIDTH HEIGHT <<< "$LINE"
else
# Sample xrandr lines:
# LVDS1 connected 1366x768+0+312 (normal left inverted right x axis y axis) 309mm x 174mm
# VGA1 disconnected (normal left inverted right x axis y axis)
# HDMI1 connected 1920x1080+1366+0 (normal left inverted right x axis y axis) 509mm x 286mm
LINE=`xrandr -q --current | sed -n "s/^${SCREEN}"' connected \([0-9]\+\)x\([0-9]\+\)+.*/\1 \2/p'`
read WIDTH HEIGHT <<< "$LINE"
fi
if [ -z "$WIDTH" -o -z "$HEIGHT" ]; then
echo "Aborting."
exit 1
fi
# New values respecint aspect ratio:
RATIOAREAY=$(( AREAX * HEIGHT / WIDTH ))
RATIOAREAX=$(( AREAY * WIDTH / HEIGHT ))
if [ "$AREAY" -gt "$RATIOAREAY" ]; then
NEWAREAX="$AREAX"
NEWAREAY="$RATIOAREAY"
else
NEWAREAX="$RATIOAREAX"
NEWAREAY="$AREAY"
fi
xsetwacom --set "$DEVICE" Area 0 0 "$NEWAREAX" "$NEWAREAY"
xsetwacom --set "$DEVICE" MapToOutput "$SCREEN"
# $ xsetwacom --list devices
# Wacom Graphire4 6x8 stylus id: 9 type: STYLUS
# Wacom Graphire4 6x8 eraser id: 10 type: ERASER
# Wacom Graphire4 6x8 cursor id: 11 type: CURSOR
# Wacom Graphire4 6x8 pad id: 12 type: PAD
# Button mappings only apply to the "pad" device.
# The wheel on Graphire4 acts as mouse buttons 4 and 5 (as a mouse wheel)
# The buttons on Graphire4 act as mouse buttons 8 and 9
# Default Area: 0 0 16704 12064
# ResetArea
#
# Other potentially useful parameters:
# * Mode: absolute or relative
# * Rotate: none, cw, ccw, half
# * MapToOutput: "next" (but is buggy), "desktop", or a name from xrandr