3 #==============================================================================
8 # Description : Mount drives using dmenu
9 # Depencency : simple-mtpfs, cryptsetup
11 # sudo dmsetup ls (low level logical volume managment)
12 # sudo cryptsetup status /dev/mapper/volume
13 # mount nas sudo mount -t nfs <IP Address>:/<DriveVolumeName>/<NameofShare> /mnt/<FolderyouCreated>
14 #==============================================================================
16 if [ $
(uname
) = "OpenBSD" ]; then
17 all_disks
=$
(sysctl
-n hw.disknames |
grep -o '[cwsf]d[0-9]')
18 mounted
=$
(df |
awk '{print $1}' |
grep -o '[cwsf]d[0-9]' |
uniq |\
19 tr '\n' '|'|
sed -E 's/\|$//g')
20 unmounted
=$
(echo "$all_disks" |
sed -E "s/($mounted)//g")
21 # tr '\n' '|' | grep -o '[cwsf]d[0-9]|' |\
22 # tr -d '\n' | sed -E 's/\|$//g'
24 # simple-mtpfs --device 1 /mnt/mtp -o uid=1000 -o gid=1000 -o allow_other
26 unmounted_description
=$
(
27 for disk
in $unmounted; do
28 dmesg |
grep "^$disk" |
uniq |\
30 sed -E "s/at.*<|$disk: / /g" |\
31 sed -E "s/MB.*/MB\\\n/g"
34 # unmounted_description=$(
35 # dmesg | egrep "($unmounted)" | uniq |\
37 # sed -E "s/ at.*:|($unmounted): //g" |\
38 # sed -E "s/MB.*/MB\\\n/g"
41 partition
=$
(echo -e "$unmounted_description" |\
42 dmenu
-l 10 |
awk '{print $1"i"}')
45 elif [ "$(uname)" = "Linux" ]; then
47 # mounted encrypted volume is still in mount options (crypto_LUKS)
48 # do not print android if mounted
49 # awk '$1~/[[:digit:]]/ && $3~/[[:alnum:]]/ && $4 == "";\
50 # lsblk --noheadings --raw -o NAME,SIZE,TYPE,MOUNTPOINT |\
51 # findmnt show mounted
53 doas lsblk
--noheadings --raw -o NAME
,SIZE
,TYPE
,FSTYPE
,MOUNTPOINT |\
54 awk '$3 == "part" && $5 == ""' |\
55 dmenu
-i -p "Mount volume" -l 10 )
58 # awk '$4 == "part" && $5 == "";\
59 # END {system("simple-mtpfs --list-devices")}'|\
62 partition
=$
(echo "$chosen" |
awk '{print $1}')
63 file_type
=$
(echo "$chosen" |
awk '{print $4}')
64 android_d
=$
(echo "$partition" |
awk '/^[0-9]/' |
head -c 1)
68 # mount android even locked screen
69 if [ "$android_d" ]; then
70 mount_point
=$
(find /mnt
/ -maxdepth 1 -type d
-empty -name "android*" |\
71 dmenu
-i -p "Select mount point")
72 simple-mtpfs
--device "$android_d" "$mount_point"\
73 && notify-send
"Mounted" "Android"\
74 || notify-send
-u critical
"Error Mounting Android" "Unlock screen"
78 # unlock encrypted partition
80 # mount luks non root mount_point
81 if [ "$file_type" = "crypto_LUKS" ]; then
85 if [ ! -b /dev
/mapper
/$partition ]; then
86 if dmenu
-P -p 'cryptsetup | sudo '|\
87 sudo
-S sh
-c "dmenu -P -p 'luks volume | password ' |\
88 cryptsetup luksOpen /dev/$partition $partition"; then
89 notify-send
"Unlocked" "$partition"
91 notify-send
-u critical
"Error Unlocking $partition"
96 else # file_type != crypto_LUKS
100 fi # end of OS detection
102 if [ "$file_type" = "vfat" ]; then
103 mount_option
="-o rw,umask=0000"
108 if [ "$partition" ]; then
109 mount_point
=$
(find /mnt
/ -maxdepth 1 -type d
-empty |
sort |\
110 dmenu
-i -p "Select mount point")
111 if [ "$mount_point" ]; then
112 dmenu
-P -p "Mount | sudo " |\
113 sudo
-S mount
/$dev/$partition $mount_point $mount_option\
114 && notify-send
"Mounted" "$partition"\
115 || notify-send
-u critical
"Error Mounting" "$partition"