Xubuntu Startup Delay vs. xsetwacom

Over the years, various xsetwacom incantations have confined the tablet stylus to the left-hand landscape monitor on my desk. Updating to Xubuntu 18.04 once again changed the monitors names (from HEAD-0 back to DP-1), but xsetwacom stopped working.

My startup.sh script runs from Xubuntu’s “Application Autostart” list, so X is already running and xsetwacom should do the right thing. Alas, even with $XAUTHORITY and $DISPLAY set correctly (automagically by X), xsetwacom still didn’t corral the cursor.

Some rummaging around the Intertubes suggested a delay would allow X to get up to speed and, indeed, sleeping for two seconds solved the problem:

logger "startup.sh - copying Xauthority values"
whoami > /tmp/who
cp /home/ed/.Xauthority /tmp/Xauthority.txt
echo $XAUTHORITY > /tmp/XAUTHORITY.txt
cp $XAUTHORITY /tmp/xauth.cp
echo $DISPLAY > /tmp/DISPLAY.txt
# xsetwacom needs an additional delay after $XAUTHORITY and $DISPLAY become correct
logger "startup.sh - waiting aimlessly"
sleep 2s
logger "startup.sh - doing wacom setup"
xsetwacom --verbose set "Wacom Graphire3 6x8 Pen stylus" MapToOutput "DP-1"
xsetwacom --verbose set "Wacom Graphire3 6x8 Pen eraser" MapToOutput "DP-1"

Sheesh & similar remarks.

The complete Bash script as a GitHub Gist:

logger "startup.sh - starting"
logger "startup.sh - setting configurations"
#setxkbmap -option terminate:ctrl_alt_bksp
#pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
amixer -D pulse sset Master 41%
amixer -D pulse sset Master 1%-
gsettings set org.gnome.Evince page-cache-size 500
# enable Kinesis volume and calculator keys
#/home/ed/bin/Kinesis/kfreestyle2d /dev/hidraw6 &
logger "startup.sh - starting applications"
/usr/bin/thunar &
/usr/bin/gimp &
/usr/bin/chromium-browser &
/usr/bin/digikam &
/usr/bin/firefox &
/usr/bin/thunderbird &
/usr/bin/xfce4-terminal &
logger "startup.sh - copying Xauthority values"
# similar lines in .xprofile happen before X grabs the display
whoami > /tmp/who
cp /home/ed/.Xauthority /tmp/Xauthority.txt
echo $XAUTHORITY > /tmp/XAUTHORITY.txt
cp $XAUTHORITY /tmp/xauth.cp
echo $DISPLAY > /tmp/DISPLAY.txt
# xsetwacom needs an additional delay after $XAUTHORITY and $DISPLAY become correct
logger "startup.sh - waiting aimlessly"
sleep 2s
logger "startup.sh - doing wacom setup"
xsetwacom --verbose set "Wacom Graphire3 6x8 Pen stylus" MapToOutput "DP-1"
#xsetwacom --verbose set "Wacom Graphire3 6x8 Pen stylus" MapToOutput "HEAD-0"
xsetwacom --verbose set "Wacom Graphire3 6x8 Pen eraser" MapToOutput "DP-1"
#xsetwacom --verbose set "Wacom Graphire3 6x8 Pen eraser" MapToOutput "HEAD-0"
logger "startup.sh -- done"
view raw startup.sh hosted with ❤ by GitHub

The cruft in there reminds me of previous fixes / workarounds / haxx, so it’s not entirely wasted space.