92 lines
2.6 KiB
Fish
Executable File
92 lines
2.6 KiB
Fish
Executable File
#!/usr/bin/fish
|
|
#
|
|
# Inspired from:
|
|
# https://bitbucket.org/denilsonsa/small_scripts/src/default/xsetwacom_my_preferences.sh
|
|
#
|
|
#
|
|
|
|
# Configuration
|
|
|
|
function set_device
|
|
set -g DEVICE "Wacom USB Bamboo PAD Pen stylus"
|
|
set -g DEVICETOUCH "Wacom USB Bamboo PAD Finger touch"
|
|
set -g WACOMPROPTOUCHSPEED "Device Accel Velocity Scaling"
|
|
xsetwacom set "$DEVICE" ResetArea
|
|
set AREATOT (xsetwacom get "$DEVICE" Area)
|
|
set -g AREAX (echo $AREATOT | awk '{print $3}')
|
|
set -g AREAY (echo $AREATOT | awk '{print $4}')
|
|
end
|
|
|
|
function print_help
|
|
echo "This script configures a Wacom tablet to one specific monitor,"
|
|
echo "or to the entire desktop. In addition, it also redues the tablet"
|
|
echo "area in order to keep the same aspect ration as the monitor."
|
|
echo
|
|
echo "How to run this script? Run one of the following lines:"
|
|
set CONNECTED_DISPLAYS (xrandr -q --current | sed -n 's/^\([^ ]\+\) connected .*/\1/p')
|
|
set EXEC_NAME (basename (status -f))
|
|
for d in $CONNECTED_DISPLAYS
|
|
echo " $EXEC_NAME $d"
|
|
end
|
|
echo " $EXEC_NAME desktop"
|
|
exit
|
|
end
|
|
|
|
function set_screen
|
|
if count $argv > /dev/null
|
|
switch $argv[1]
|
|
case "--help"
|
|
print_help
|
|
case "-h"
|
|
print_help
|
|
case "-help"
|
|
print_help
|
|
case '*'
|
|
set -g SCREEN $argv[1]
|
|
end
|
|
else
|
|
if test (xrandr --listmonitors | grep "HDMI-1")
|
|
set -g SCREEN "HDMI-1"
|
|
else
|
|
print_help
|
|
end
|
|
end
|
|
if [ "$SCREEN" = "desktop" ]
|
|
set -g LINE (xrandr -q --current | sed -n 's/^Screen 0:.*, current \([0-9]\+\) x \([0-9]\+\),.*/\1 \2/p')
|
|
else
|
|
set -g LINE (xrandr -q --current | sed -n "s/^$SCREEN"' connected \([0-9]\+\)x\([0-9]\+\)+.*/\1 \2/p')
|
|
end
|
|
echo $LINE | read WIDTH HEIGHT
|
|
set -g WIDTH $WIDTH
|
|
set -g HEIGHT $HEIGHT
|
|
if test -z $WIDTH || test -z $HEIGHT
|
|
exit 1
|
|
end
|
|
end
|
|
|
|
function adjust_device
|
|
set RATIOAREAY (math ceil \($AREAX \* $HEIGHT \/ $WIDTH\))
|
|
set RATIOAREAX (math ceil \($AREAY \* $WIDTH \/ $HEIGHT\))
|
|
|
|
if test $AREAY -gt $RATIOAREAY
|
|
set -g NEWAREAX $AREAX
|
|
set -g NEWAREAY $RATIOAREAY
|
|
else
|
|
set -g NEWAREAX $RATIOAREAX
|
|
set -g NEWAREAY $AREAY
|
|
end
|
|
|
|
xsetwacom set "$DEVICE" Area 0 0 $NEWAREAX $NEWAREAY
|
|
xsetwacom set "$DEVICE" MapToOutput "$SCREEN"
|
|
|
|
# slow down touchpad
|
|
xinput set-float-prop $DEVICETOUCH $WACOMPROPTOUCHSPEED 0.5
|
|
|
|
# slow down scrolling speed
|
|
xsetwacom set $DEVICETOUCH "ScrollDistance" "90"
|
|
end
|
|
|
|
set_device
|
|
set_screen
|
|
adjust_device
|