90 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Fish
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Fish
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env fish
 | |
| 
 | |
| set -g drives (lsblk -nrpo "name,type,size,mountpoint" | \
 | |
| awk '$2=="part"&&$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
 | |
| 
 | |
| set -g androids (awk '/jmtpfs/ {print $2}' /etc/mtab)
 | |
| 
 | |
| set -g cds (awk '/sr0/ {print $2}' /etc/mtab)
 | |
| 
 | |
| set -g undrivefile /tmp/undrives
 | |
| 
 | |
| rm -f $undrivefile
 | |
| touch $undrivefile
 | |
| 
 | |
| test -n "$drives" && echo "USB" >> $undrivefile
 | |
| test -n "$cds" && echo "CD" >> $undrivefile
 | |
| test -n "$androids" && echo "Android" >> $undrivefile
 | |
| 
 | |
| function unmountusb
 | |
| 
 | |
| set chosen (echo $drives | \
 | |
| rofi -dmenu -i -p "Unmount which drive?" | \
 | |
| awk '{print $1}')
 | |
| 
 | |
| test -z "$chosen" && exit 0
 | |
| 
 | |
| sudo -A umount $chosen && \
 | |
| notify-send "💻 USB unmounting" "$chosen unmounted." -a "dumount"
 | |
| 
 | |
| end
 | |
| 
 | |
| function unmountandroid
 | |
| 
 | |
| set chosen (echo $androids | rofi -dmenu -i -p "Unmount which device?")
 | |
| 
 | |
| test -z "$chosen" && exit 0
 | |
| 
 | |
| sudo -A umount -l $chosen && \
 | |
| notify-send "🤖 Android unmounting" "$chosen unmounted." -a "dumount"
 | |
| 
 | |
| end
 | |
| 
 | |
| function unmountcd
 | |
| 
 | |
| set chosen (echo "$cds" | rofi -dmenu -i -p "Unmount which CD?")
 | |
| 
 | |
| test -z "$chosen" && exit 0
 | |
| 
 | |
| sudo -A umount -l $chosen && \
 | |
| notify-send "💿 CD unmounting" "$chosen unmounted." -a "dumount"
 | |
| 
 | |
| end
 | |
| 
 | |
| function asktype
 | |
| 
 | |
| switch (cat $undrivefile | rofi -dmenu -i -p "Unmount which type of device?")
 | |
| 
 | |
| case 'USB'
 | |
|     unmountusb
 | |
| case 'CD'
 | |
|     unmountcd
 | |
| case 'Android'
 | |
|     unmountandroid
 | |
| 
 | |
| end
 | |
| 
 | |
| end
 | |
| 
 | |
| switch (wc -l < $undrivefile)
 | |
| 
 | |
| case 0
 | |
|     notify-send "No USB drive or Android device or CD to unmount" -a "dumount"
 | |
| 
 | |
| case 1
 | |
|     switch (cat $undrivefile)
 | |
|         case 'USB'
 | |
|             unmountusb
 | |
|         case 'CD'
 | |
|             unmountcd
 | |
|         case 'Android'
 | |
|             unmountandroid
 | |
|     end
 | |
| 
 | |
| case '*'
 | |
|      asktype
 | |
| 
 | |
| end
 | |
| 
 | |
| rm -f $undrivefile
 |