summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbin/menu3
-rwxr-xr-xbin/mnts28
2 files changed, 29 insertions, 2 deletions
diff --git a/bin/menu b/bin/menu
index 3b25776..9c8cec9 100755
--- a/bin/menu
+++ b/bin/menu
@@ -21,8 +21,7 @@ exec "${arg0}" \
    --monitor=all \
    --ignorecase \
    --list=10 \
-   --index \
-   --prompt "${prompt}" \
+   --prompt="${prompt}" \
    --fn 'Iosevka Sparkle 11' \
    --nb '#221E1D' --nf '#fffefe' \
    --tb "$main_color" --tf '#fffefe' \
diff --git a/bin/mnts b/bin/mnts
new file mode 100755
index 0000000..2673834
--- /dev/null
+++ b/bin/mnts
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+[ -n "$DEBUG" ] && set -x
+
+export MENU_PROMPT="mnts"
+
+filter='/(\/dev\/nvme0n1.*|\/dev\/mapper\/.*hibiki.*)/'
+
+{ lsblk -nrpo 'name,type,size,mountpoint' \
+	| awk "{d=\$1} d~${filter}{next} length(\$4){next} length(d)>19{d=substr(d,1,27)\"...\"} {printf \"%-30s (%6s)  %-5s\n\", d, \$3, \$4}"; \
+  mount \
+	| grep -v -E '(proc|tmpfs|devpts|sysfs|securityfs|debugfs|mqueue|configfs|fusectl|efivarfs|cgroup|binfmt_misc|nsfs|portal)' \
+	| awk "{d=\$1} d~${filter}{next} {\"df -h --output=size \"\$3\" 2>/dev/null | sed -n 2p\" | getline s} length(d)>19{d=substr(d,1,27)\"...\"} {printf \"%-30s (%6s)  %-5s\n\", d, s, \$3}"; \
+} \
+	| menu \
+	| xargs -i sh -c " \
+		mode=\$(echo '{}' |awk '{if(length(\$3)<1) print \"mount\";else print \"unmount\";}'); \
+		drv=\$(echo '{}' |cut -d' ' -f1); \
+		path=\$(echo '{}' |tr -d '[:blank:]' |cut -d\) -f2); \
+		case \$mode in \
+		mount) udisksctl \${mode} -b \${drv} ;; \
+		unmount) umount \${path} ;; \
+		esac; \
+		if [ \$? = 0 ]; then \
+		  notify-send mnts \"\${mode}ed \${drv}\"; \
+		else \
+		  notify-send mnts \"\${mode}ing \${drv} failed\\n\${err}\";  \
+		fi"