147 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			147 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/usr/bin/fish | ||
|  | 
 | ||
|  | begin | ||
|  | 
 | ||
|  | set -l LFS | ||
|  | 
 | ||
|  | set -l a (math (jmtpfs -l | wc -l) - 2) | ||
|  | test $a -ge 0 && jmtpfs -l 2> /dev/null | tail -n $a | read -zg anddrives | ||
|  | 
 | ||
|  | lsblk -rpo "name,type,size,mountpoint" | \ | ||
|  | awk '$2=="part"&&$4==""{printf "%s (%s)\n",$1,$3}' | \ | ||
|  | read -zg usbdrives | ||
|  | 
 | ||
|  | blkid /dev/sr0 | awk '{print $1}' | sed 's/://' | read -z cddrives | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | set -g TMPDRIVES /tmp/drives | ||
|  | rm -f $TMPDRIVES | ||
|  | touch $TMPDRIVES | ||
|  | 
 | ||
|  | test -n "$usbdrives" && echo "USB" >> $TMPDRIVES | ||
|  | test -n "$cddrives" && echo "CD" >> $TMPDRIVES | ||
|  | test -n "$anddrives" && echo "Android" >> $TMPDRIVES | ||
|  | 
 | ||
|  | set -g basemount /mnt | ||
|  | 
 | ||
|  | function getmount | ||
|  | 
 | ||
|  | set -g mp (for d in $basemount | ||
|  |     find $d -maxdepth 5 -type d | ||
|  | end | rofi -dmenu -i -p 'Type in mount point.') | ||
|  | 
 | ||
|  | if test -z $mp || test $mp = "" | ||
|  |     return 1 | ||
|  | end | ||
|  | 
 | ||
|  | if test ! -d $mp | ||
|  |     switch (printf "No\\nYes" | rofi -dmenu -i -p "$mp does not exist. Create it?") | ||
|  |         case 'Yes' | ||
|  |             mkdir -p $mp || sudo -A mkdir -p $mp | ||
|  |         case '*' | ||
|  |             return 1 | ||
|  |     end | ||
|  | end | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | function mountusb | ||
|  | 
 | ||
|  | set -g chosen (echo $usbdrives | \ | ||
|  | rofi -dmenu -i -p "Mount which drive?" | \ | ||
|  | awk '{print $1}') | ||
|  | 
 | ||
|  | test -z $chosen && return 1 | ||
|  | 
 | ||
|  | getmount | ||
|  | 
 | ||
|  | test -z $mp && return 1 | ||
|  | 
 | ||
|  | switch (lsblk -no "fstype" $chosen) | ||
|  | 
 | ||
|  | case "vfat" | ||
|  |     sudo -A mount -t vfat $chosen $mp -o rw,umask=0000 | ||
|  | 
 | ||
|  | case "ntfs" | ||
|  |     sudo -A mount -t ntfs $chosen $mp -o rw,umask=0000 | ||
|  | 
 | ||
|  | case '*' | ||
|  |     sudo -A mount $chosen $mp | ||
|  | 
 | ||
|  | sudo -A chown -R $USER:(id -g $USER) $mp | ||
|  | 
 | ||
|  | end && notify-send -a "dmount" "💻 USB mounting" "$chosen mounted to $mp." | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | function mountandroid -d "Mount an Android device" | ||
|  | 
 | ||
|  | set chosen (echo $anddrives | rofi -dmenu -i -p "Which Android device?" | awk '{print $1 $2}' | sed 's/,$//') | ||
|  | 
 | ||
|  | set bus (echo $chosen | sed 's/,.*//') | ||
|  | 
 | ||
|  | jmtpfs -device=$chosen $mp | ||
|  | 
 | ||
|  | echo "OK" | \ | ||
|  | rofi -dmenu -i -p "Press (Allow) on your phone screen, or set your USB settings to allow file transfert" | ||
|  | 
 | ||
|  | set newchosen (jmtpfs -l | grep $bus | awk '{print $1 $2}' | sed 's/,$//') | ||
|  | sudo -A umount $mp | ||
|  | 
 | ||
|  | jmtpfs -device=$newchosen $mp && \ | ||
|  | notify-send -a "dmount" "🤖 Android Mounting" "Android device mounted to $mp." | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | function mountcd | ||
|  | 
 | ||
|  | set chosen (echo $cddrives | rofi -dmenu -i -p "Which CD drive?") | ||
|  | 
 | ||
|  | getmount | ||
|  | 
 | ||
|  | sudo -A mount $chosen $mp && \ | ||
|  | notify-send -a "dmount" "💿 CD mounting" "$chosen mounted." | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | function asktype | ||
|  | 
 | ||
|  | switch (cat $TMPDRIVES | rofi -dmenu -i -p "Mount which drive?") | ||
|  | 
 | ||
|  | case "USB" | ||
|  |     mountusb | ||
|  | 
 | ||
|  | case "Android" | ||
|  |     mountandroid | ||
|  | 
 | ||
|  | case "CD" | ||
|  |     mountcd | ||
|  | 
 | ||
|  | end | ||
|  | end | ||
|  | 
 | ||
|  | switch (wc -l < $TMPDRIVES) | ||
|  | 
 | ||
|  | case 0 | ||
|  |     notify-send "No USB drive or Android device or CD detected" -a "dmount" | ||
|  | 
 | ||
|  | case 1 | ||
|  |     switch (cat $TMPDRIVES) | ||
|  | 
 | ||
|  | case "USB" | ||
|  |     mountusb | ||
|  | case "Android" | ||
|  |     mountandroid | ||
|  | case "CD" | ||
|  |     mountCD | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | case '*' | ||
|  |     asktype | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | rm -f $TMPDRIVES |