27 lines
767 B
Bash
27 lines
767 B
Bash
#!/usr/bin/env bash
|
|
|
|
trap "echo Exited!; exit;" SIGINT SIGTERM
|
|
|
|
OLD="$(lsusb)"
|
|
while true; do
|
|
watch --chgexit -n0.2 lsusb >& /dev/null
|
|
NEW="$(lsusb)"
|
|
|
|
diff <(cat <<<"$OLD") <(cat <<<"$NEW") --unified | grep '^[+-]' | grep -Ev '^(---|\+\+\+)' |
|
|
while read line; do
|
|
echo "$line"
|
|
ID="$( echo "$line" | cut -c2- | cut -d' ' -f-6 )"
|
|
LABEL="$(echo "$line" | cut -c2- | cut -d' ' -f7- )"
|
|
case "$line" in
|
|
\+*)
|
|
notify-send --icon=device --expire-time=500 "New device connected" "${LABEL} <i>($ID)</i>"
|
|
;;
|
|
\-*)
|
|
notify-send --icon=device --expire-time=500 "Device disconnected" "${LABEL} <i>($ID)</i>"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
OLD="$NEW"
|
|
done
|