Allora, soluzione quasi funzionante
EDIT 0) installare zenity
1) creare una macchina virtuale su virtualbox con un nome semplice, senza spazi. Io ad esempio l'ho chiamata prova. Confermare la sua esistenza e il nome tramite il comando da terminale 'VBoxManage list vms'
Codice:
VBoxManage list vms
"prova" {0d48dada-b8bd-4fec-8050-5b09de5e07e8}
Notare per prima cosa il nome, seguito da un id univoco.
2) con un editor di testo (tipo gedit), in una cartella inserire un file di testo di nome avvia-vm.sh. Io per comodità ho scelto la home utente, che nel mio caso è /home/davide. Il contenuto è il seguente
Codice:
#!/bin/bash
zenity --question --title="Ho trovato lo smarthwatch Garmin" --text="Avviare macchina virtuale?"
response=$? # last exit code
if [ $response -eq 0 ]; then
VBoxManage startvm prova
fi
Sostituire nella penultima riga il nome corretto della macchina virtuale; fare click destro sul file, scegliere proprietà e rendere eseguibile.
Nella stessa cartella creare un altro file di nome garmin-detected.sh. Il contenuto è il seguente
Codice:
#!/bin/bash
su - davide -c 'export DISPLAY=:0; bash -c /home/davide/avvia-vm.sh & exit'
Anche questo file deve essere eseguibile. Sostituire a "davide" il proprio nome utente e inserire il percorso corretto dello script avvia-vm.sh.
3) avviare un terminale
4) inserire nella porta USB il dispositivo
5) dare il comando lsusb
6) prendere nota di idVendor e idProduct, che sarebbero i codici alfanumerici di quattro caratteri prima della descrizione del dispositivo
esempio: io sto provando con la chiavetta usb inserita, e vedo idProduct 0165 (a destra dei due punti) e idVendor 1307 (a sinistra)
Codice:
Bus 003 Device 043: ID 1307:0165 Transcend Information, Inc. 2GB/4GB/8GB Flash Drive
7) sempre da terminale, digitare sudo nano /etc/udev/rules.d/99-garmin.rules
8) digitare la password utente, premere invio, si apre l'editor "nano"
9) fare copia incolla (scorciatoia: control shift v, oppure click destro) del seguente testo, avendo cura di sostituire idProduct e idVendor del prodotto garmin, oltre che il percorso corretto dello script
Codice:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idProduct}=="0165", ATTRS{idVendor}=="1307", RUN+="/home/davide/garmin-detected.sh"
10) premere control x, nano chiede la conferma di salvare le modifiche, dire di sì con il tasto s (se il sistema operativo è in italiano, o y se inglese), poi invio
11) scrivere
Codice:
sudo udevadm control --reload-rules
(digitare password e premere invio se richiesto)
12) inserire di nuovo il dispositivo e verificare che appaia una finestrella con la domanda
All'inizio ho scritto che funziona male perché, nel mio caso, lo script viene eseguito più volte, in quanto la regola di udev viene eseguita più volte. Se a te con il dispositivo garmin lo script viene eseguito una sola volta, siamo già a posto, altrimenti troviamo il modo di aggirare il problema.
Per scoprire quali eventi di udev vengono eseguiti, staccare il dispositivo, aprire un terminale e digitare 'sudo udevadm monitor' (digitare password e premere invio come al solito), poi inserire il dispositivo
'