#!/usr/bin/env 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 /media 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