#!/bin/sh # Prompts selection for mounted devices and unmounts the selected one # Requires: udevil, dmenu (or similar), notify-send or similar (optional) # Usage: dmenu-unmount [-m menu] [-w writer] # Example: dmenu-unmount -m slmenu -w echo menu=dmenu writeout=${NOTIFY:-"notify push"} usage() { echo "Usage: dmenu-unmount [-m MENU] [-w WRITER]" echo "Example: dmenu-unmount -m slmenu -w echo" } while getopts "m:w:" opt; do case "$opt" in m) menu="$OPTARG" ;; w) writeout="$OPTARG" ;; *) usage exit 1 ;; esac done shift $((OPTIND - 1)) listdev=$(grep "media" /proc/mounts | sed 's/\/media.*\///g' | \ awk '{print $1" ("$2")"}') if [ -z "$listdev" ]; then $writeout "Nothing to unmount" else seldev=$(echo "$listdev" | $menu | awk '{print $1}') if [ -n "$seldev" ]; then udevil unmount "$seldev" failed=$(udevil info "$seldev" | grep mounted | awk '{print $3}') if [ "$failed" -eq 1 ]; then $writeout "Unmount FAILED" "Device is still mounted!" else $writeout "Device unmounted" fi fi fi