#!/bin/sh # Script for unmounting filesystems # Set askpass program for authentication #export SUDO_ASKPASS=/usr/bin/ssh-askpass # Get list of unmountable filesystems excluding critical ones (/, /home, /boot, etc...) exclude="\(/\|/boot\|/boot/efi\|/var\|/tmp\|/home\)$" parts="$(lsblk -lp | grep "\(part\|crypt\)\s*/" | grep -v "$exclude" | awk '{print $7,"-",$4}')" [ "$parts" = "" ] && exit 0 # Get filesystem to unmount from user crypt=0 select="$(echo "$parts" | dmenu -i -p "Select filesystem to unmount" | cut -d ' ' -f 1)" [ "$select" = "" ] && exit 0 dev="$(lsblk -lp | grep "$select" | awk '{print $1}')" [ "$(lsblk -no TYPE $dev)" = "crypt" ] && crypt=1 # Unmount the filesystem umount=0 sudo umount $select && pgrep -x dunst && \ notify-send "Unmounted $select ($dev)" && umount=1 \ || notify-send "Error: unable to unmount $select" "Are you in it?" [ $crypt -eq 1 -a $umount -eq 1 ] && sudo cryptsetup close $dev && pgrep -x dunst && \ notify-send "Unmapped $dev" && exit 14