summaryrefslogtreecommitdiff
path: root/ar/.local/bin/unmounter
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.local/bin/unmounter')
-rwxr-xr-xar/.local/bin/unmounter41
1 files changed, 26 insertions, 15 deletions
diff --git a/ar/.local/bin/unmounter b/ar/.local/bin/unmounter
index 1e413bf..7d0efee 100755
--- a/ar/.local/bin/unmounter
+++ b/ar/.local/bin/unmounter
@@ -6,11 +6,13 @@
set -e
mounteddroids="$(grep simple-mtpfs /etc/mtab | awk '{print "📱" $2}')"
+mountedios="$(grep ifuse /etc/mtab | awk '{print "🍎" $2}')"
lsblkoutput="$(lsblk -nrpo "name,type,size,mountpoint")"
mounteddrives="$(echo "$lsblkoutput" | awk '($2=="part"||$2="crypt")&&$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "💾%s (%s)\n",$4,$3}')"
mountedcifs="$(grep cifs /etc/mtab | awk '{print "🪟" $2}')"
allunmountable="$(echo "$mounteddroids
+$mountedios
$mounteddrives
$mountedcifs" | sed "/^$/d;s/ *$//")"
test -n "$allunmountable"
@@ -19,23 +21,32 @@ chosen="$(echo "$allunmountable" | dmenu -i -p "Unmount which drive?")"
chosen="${chosen%% *}"
test -n "$chosen"
-if grep -q "/${chosen#*/}" /etc/mtab | grep -q "cifs" /etc/mtab; then
- sudo -A umount "/${chosen#*/}" && sudo -A rm -r "/${chosen#*/}"
- notify-send "⏏️ SMB Drive unmounted." "/${chosen#*/} has been unmounted."
- exit 0
+label=$(sudo lsblk -no "label" "$(df "/${chosen#*/}" | tail -n 1 | awk '{print $1}')")
+if [ -n "$label" ]; then
+ mountpath="$(sudo lsblk -no "mountpoints" "$(df "/${chosen#*/}" | tail -n 1 | awk '{print $1}')")"
+ sudo -A umount -l "/${chosen#*/}"
+ notify-send "⏏️ Device unmounted." "$chosen has been unmounted."
+ if [ "${chosen#*/}" = "${chosen}" ] &&
+ [ "${chosen##*/}" = "$label" ] &&
+ [ "/media/$USER/${chosen##*/}" = "$mountpath" ] &&
+ [ -e "/${chosen#*/}" ] &&
+ [ ! -s "/${chosen#*/}" ]; then
+ rm -rf "/${chosen#*/}" >/dev/null 2>&1 || sudo rm -rf "/${chosen#*/}"
+ notify-send "🚮 Mounted path removed." "$chosen has been removed."
+ fi
+else
+ if grep -q "/${chosen#*/}" /etc/mtab | grep -qE "cifs" /etc/mtab; then
+ sudo -A umount "/${chosen#*/}"
+ notify-send "⏏️ SMB Drive unmounted." "/${chosen#*/} has been unmounted."
+ elif grep -q "/${chosen#*/}" /etc/mtab | grep -q "ifus" /etc/mtab; then
+ sudo -A umount "/${chosen#*/}"
+ notify-send "⏏️ IOS Drive unmounted." "/${chosen#*/} has been unmounted."
+ fi
+ [ -e "/${chosen#*/}" ] && [ ! -s "/${chosen#*/}" ] &&
+ sudo -A rm -r "/${chosen#*/}" &&
+ notify-send "🚮 Mounted path removed." "$chosen has been removed."
fi
-[ "${chosen#*/}" = "${chosen}" ] && [ "${chosen##*/}" = "$(sudo lsblk -no "label" "$(df "/${chosen#*/}" | tail -n 1 | awk '{print $1}')")" ] && rmcheck=true || rmcheck=false
-mountpath="$(sudo lsblk -no "mountpoints" "$(df "/${chosen#*/}" | tail -n 1 | awk '{print $1}')")"
-sudo -A umount -l "/${chosen#*/}"
-[ "/media/$USER/${chosen##*/}" = "$mountpath" ] && [ "$rmcheck" ] && {
- [ -e "/${chosen#*/}" ] && [ -z "$(ls -A "/${chosen#*/}")" ] && (rm -rf "/${chosen#*/}" >/dev/null 2>&1 || sudo rm -rf "/${chosen#*/}") || {
- rmdiryn=$(printf "No\\nYes" | dmenu -i -p "Do you want to delete /${chosen#*/}?")
- [ "$rmdiryn" = "Yes" ] && (rm -rf "/${chosen#*/}" >/dev/null 2>&1 || sudo -A rm -r "/${chosen#*/}")
- }
-}
-notify-send "⏏️ Device unmounted." "$chosen has been unmounted."
-
# Close the chosen drive if decrypted.
cryptid="$(echo "$lsblkoutput" | grep "/${chosen#*/}$")"
cryptid="${cryptid%% *}"