2018-05-03 20:23:53 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
2019-01-10 10:13:42 +01:00
|
|
|
# Dependencies : jq ; udisks2
|
2018-05-03 20:23:53 +02:00
|
|
|
# Some updates by Quentin Duchemin on 18/03/07
|
|
|
|
# - Add label in lsblk selection
|
|
|
|
# - Add symbols from Material Google font
|
|
|
|
# - Remove term emulator opening and unused parts
|
|
|
|
# - Remove udiskctl power-off because we cannot mount again the removable device
|
|
|
|
# - Change printed name from vendor of the device to partition name (arbitrary choice)
|
2019-01-10 10:13:42 +01:00
|
|
|
# On 18/11/20
|
|
|
|
# - Change jq rm == '1' to rm == true
|
2018-05-03 20:23:53 +02:00
|
|
|
usb_print() {
|
|
|
|
devices=$(lsblk -Jplno NAME,TYPE,RM,SIZE,MOUNTPOINT,VENDOR,LABEL)
|
|
|
|
output=""
|
|
|
|
counter=0
|
|
|
|
|
2019-01-10 10:13:42 +01:00
|
|
|
for unmounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type ==
|
|
|
|
"part") | select(.rm == true) | select(.mountpoint == null) | .name'); do
|
2018-05-03 20:23:53 +02:00
|
|
|
unmounted=$(echo "$devices" | jq -r '.blockdevices[] | select(.name == "'"$unmounted"'") | .label')
|
|
|
|
unmounted=$(echo "$unmounted" | tr -d ' ')
|
|
|
|
|
|
|
|
if [ $counter -eq 0 ]; then
|
|
|
|
space=""
|
|
|
|
else
|
|
|
|
space=" "
|
|
|
|
fi
|
|
|
|
counter=$((counter + 1))
|
|
|
|
|
|
|
|
output="$output$space $unmounted"
|
|
|
|
done
|
|
|
|
|
2019-01-10 10:13:42 +01:00
|
|
|
for mounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type ==
|
|
|
|
"part") | select(.rm == true) | select(.mountpoint != null) | .size'); do
|
2018-05-03 20:23:53 +02:00
|
|
|
if [ $counter -eq 0 ]; then
|
|
|
|
space=""
|
|
|
|
else
|
|
|
|
space=" "
|
|
|
|
fi
|
|
|
|
counter=$((counter + 1))
|
|
|
|
|
|
|
|
output="$output$space $mounted"
|
|
|
|
done
|
|
|
|
|
|
|
|
echo "%{F#ddd}$output"
|
|
|
|
}
|
|
|
|
|
|
|
|
usb_update() {
|
|
|
|
pid=$(pgrep -xf "/bin/sh /home/user/.config/scripts/polybar/system-usb-udev.sh")
|
|
|
|
|
|
|
|
if [ "$pid" != "" ]; then
|
|
|
|
kill -10 "$pid"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
--update)
|
|
|
|
usb_update
|
|
|
|
;;
|
|
|
|
--mount)
|
|
|
|
devices=$(lsblk -Jplno NAME,TYPE,RM,MOUNTPOINT)
|
|
|
|
|
2019-01-10 10:13:42 +01:00
|
|
|
for mount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type ==
|
|
|
|
"part") | select(.rm == true) | select(.mountpoint == null) | .name'); do
|
2018-05-03 20:23:53 +02:00
|
|
|
mountpoint=$(udisksctl mount --no-user-interaction -b "$mount")
|
|
|
|
done
|
|
|
|
|
|
|
|
usb_update
|
|
|
|
;;
|
|
|
|
--unmount)
|
|
|
|
devices=$(lsblk -Jplno NAME,TYPE,RM,MOUNTPOINT)
|
|
|
|
|
2019-01-10 10:13:42 +01:00
|
|
|
for unmount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type ==
|
|
|
|
"part") | select(.rm == true) | select(.mountpoint != null) | .name'); do
|
2018-05-03 20:23:53 +02:00
|
|
|
udisksctl unmount --no-user-interaction -b "$unmount"
|
|
|
|
#power-off makes us unable to mount again...
|
|
|
|
#udisksctl power-off --no-user-interaction -b "$unmount"
|
|
|
|
done
|
|
|
|
|
|
|
|
usb_update
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
trap exit INT
|
|
|
|
trap "echo" USR1
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
usb_print
|
|
|
|
|
|
|
|
sleep 1 &
|
|
|
|
wait
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
esac
|