#!/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} ($ID)"
;;
\-*)
notify-send --icon=device --expire-time=500 "Device disconnected" "${LABEL} ($ID)"
;;
esac
done
OLD="$NEW"
done