27 lines
		
	
	
	
		
			863 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			27 lines
		
	
	
	
		
			863 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | #!/usr/bin/env bash | ||
|  | 
 | ||
|  | set -o errexit | ||
|  | set -o nounset | ||
|  | set -o pipefail | ||
|  | 
 | ||
|  | lsblk_output="$(lsblk -nrpo "name,type,size,mountpoint")" | ||
|  | mounted_drives="$(echo "$lsblk_output" | awk '($2=="part"||$2="crypt")&&$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')" | ||
|  | 
 | ||
|  | all_unmountable="$(echo "$mounted_drives" | sed "/^$/d;s/ *$//")" | ||
|  | test -n "$all_unmountable" | ||
|  | 
 | ||
|  | selected="$(echo "$all_unmountable" | dmenu -i -p "Unmount which drive?")" | ||
|  | selected="${selected%% *}" | ||
|  | test -n "$selected" | ||
|  | 
 | ||
|  | sudo -A umount -l "/${selected#*/}" | ||
|  | notify-send "Device unmounted" "$selected has been unmounted." | ||
|  | 
 | ||
|  | # Close the selected drive if decrypted. | ||
|  | cryptid="$(echo "$lsblk_output" | grep "/${selected#*/}$")" | ||
|  | cryptid="${cryptid%% *}" | ||
|  | test -b /dev/mapper/"${cryptid##*/}" | ||
|  | sudo -A cryptsetup close "$cryptid" | ||
|  | 
 | ||
|  | notify-send "Device dencryption closed" "Drive is now securely locked again." |