Nessuna delle risposte qui ha funzionato per me e le opzioni che volevo impostare non potevano essere specificate in xorg.conf
:
$ xsetwacom -x get 'Wacom Intuos PT S Pad pad' button 1
Button: Actions are not supported by xorg.conf. Try shell format (-s) instead.
Ho finito per dover avviare lo script con un servizio systemd attivato da una regola udev:
$ cat /etc/udev/rules.d/99-wacom.rules
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="056a", ENV{ID_MODEL_ID}=="0302", TAG+="systemd"
È possibile trovare id fornitore e modello in esecuzione lsusb
con il dispositivo collegato.
Per ricaricare le regole di udev:
$ udevadm control --reload-rules
$ udevadm trigger
Il TAG+="systemd"
permette altri servizi systemd (sistema o dell'utente) dipendere dal dispositivo (registra come un'unità periferica, vedere man systemd.device
). Per trovare il nome dell'unità del dispositivo, esegui udevadm monitor
e collega il tablet. ottengo
UDEV [2918.098423] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 (usb)
...
Per verificare che systemd lo stia raccogliendo, fallo
$ systemctl status /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/
● sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device - CTH-480 [Intuos Pen & Touch (S)]
Loaded: loaded
Active: active (plugged) since Mon 2016-06-20 11:14:20 UYT; 29min ago
Device: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
Quindi l'unità dispositivo è sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device
e può essere utilizzata nell'unità di servizio systemd
$ cat .config/systemd/user/wacom.service
[Service]
Type=forking
Restart=no
ExecStart=/path/to/wacom-pad-button-setup
[Install]
WantedBy=default.target
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.1.device
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.2.device
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device
Esiste un'unità dispositivo per porta USB.
Quindi abilitare e ricaricare l'unità con systemctl --user enable wacom.service
e systemctl --user daemon-reload
.
Lo script deve ancora dormire un po 'perché xsetwacom possa trovare il dispositivo e impostare $DISPLAY
e $XAUTHORITY
. Type=oneshot
funziona bene quando lo si collega, ma non lo esegue se il dispositivo era già collegato durante l'avvio del computer. Questo è il motivo per cui avevo bisogno di utilizzare un servizio utente anziché uno di sistema e perché anche l'unità ha WantedBy=default.target
. Il problema con oneshot è che stava bloccando startx. Type=forking
e Restart=no
dice a systemd di non aspettare che il processo biforcato dello script termini, quindi lo script può quindi dormire in background in attesa dell'avvio di Xorg.
$ cat bin/wacom-pad-button-setup
#!/bin/rc
{
sleep 2
if (~ $DISPLAY ()) {
DISPLAY=:0
XAUTHORITY=/home/spelufo/.Xauthority
}
xsetwacom set 'Wacom Intuos PT S Pad pad' button 9 'button +3 -3'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 8 'button +4 -4'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 3 'button +1 -1'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 1 'button +2 -2'
} &
55
? Uso sempre l'idea che "le voci innumerevoli vengono elaborate per ultime, quindi è meglio saltare i numeri per le voci personalizzate".