| 
									
										
										
										
											2019-10-23 14:51:34 +02:00
										 |  |  | #!/usr/bin/env fish | 
					
						
							| 
									
										
										
										
											2019-10-23 12:00:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-03 12:37:14 +01:00
										 |  |  | set -g basemount /media | 
					
						
							| 
									
										
										
										
											2019-10-23 12:00:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 |