29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # Unmount USB drives or Android phones. Replaces the older `dmenuumount`. Fewer
 | |
| # prompt and also de-decrypts LUKS drives that are unmounted.
 | |
| 
 | |
| set -e
 | |
| 
 | |
| mounteddroids="$(grep simple-mtpfs /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}')"
 | |
| 
 | |
| allunmountable="$(echo "$mounteddroids
 | |
| $mounteddrives" | sed "/^$/d;s/ *$//")"
 | |
| test -n "$allunmountable"
 | |
| 
 | |
| chosen="$(echo "$allunmountable" | dmenu -i -p "Unmount which drive?")"
 | |
| chosen="${chosen%% *}"
 | |
| test -n "$chosen"
 | |
| 
 | |
| sudo -A umount -l "/${chosen#*/}"
 | |
| notify-send "Device unmounted." "$chosen has been unmounted."
 | |
| 
 | |
| # Close the chosen drive if decrypted.
 | |
| cryptid="$(echo "$lsblkoutput" | grep "/${chosen#*/}$")"
 | |
| cryptid="${cryptid%% *}"
 | |
| test -b /dev/mapper/"${cryptid##*/}"
 | |
| sudo -A cryptsetup close "$cryptid"
 | |
| notify-send "🔒Device dencryption closed." "Drive is now securely locked again."
 | 
