|
|
- #!/bin/sh
-
- DMENU=${DMENU:-dmenu}
-
- DEV_LABEL="/dev/disk/by-label/"
- TMP="$XDG_RUNTIME_DIR/dmnt-udevil-$(date +%s)"
-
- trap "rm -f $TMP" EXIT
-
- opt_mount_type=0
- opt_ignore_filter=1
- opt_notify=1
- udevil_cmd="mount"
-
- usage() {
- cat <<-EOF
- usage: dmenu-udevil [-mudihn]
- -m Mount devices
- -u Unmount devices
- -d Select by device rather than by label
- -i Ignore filter and list all devices in /dev (with -d)
- -n Pass udevil output to notify-send
- -h Print help
- EOF
-
- }
-
- dmenu_mnt() {
- if [[ $opt_mount_type -eq 1 ]]; then
- prompt="$udevil_cmd by-device:"
- if [[ $opt_ignore_filter -eq 0 ]]; then
- res="$(find /dev -maxdepth 1 -not -type d -name "s[dr]*" -or -name "hd*" | cut -d'/' -f3 | ${DMENU} -p "$prompt")"
- else
- res="$(find /dev -maxdepth 1 -not -type d | cut -d'/' -f3 | ${DMENU} -p "$prompt")"
- fi
-
- path="/dev/$res"
-
- [[ -z $res ]] && echo "Cancelled." && exit
- else
- prompt="$udevil_cmd by-label:"
- res="$(find $DEV_LABEL* | cut -d'/' -f5 | ${DMENU} -p "$prompt")"
-
- path="$DEV_LABEL/$res"
-
- [[ -z $res ]] && echo "Cancelled." && exit
- fi
-
- if [ "$udevil_cmd" = "mount" ]; then
- udevil $udevil_cmd "$path" "/media/$(whoami)/$res"> "$TMP" 2>&1
- msg=$(cat $TMP)
- else
- udevil --verbose $udevil_cmd "$path" > "$TMP" 2>&1
- #msg=$(grep "umount: " "$TMP" | cut -c '9-')
- msg=""
- fi
-
- exitc=$?
-
- if [[ $opt_notify -eq 1 ]]; then
- case $exitc in
- 0) urgency="normal";;
- *) urgency="critical";;
- esac
- notify-send -u $urgency "$msg"
- else
- cat $TMP
- fi
- }
-
- while getopts ':mudhin' opt; do
- case "$opt" in
- m) ;;
- u) udevil_cmd="umount";;
- d) opt_mount_type=1;;
- i) opt_ignore_filter=1;;
- h) usage && exit;;
- n) opt_notify=1;;
- /?) echo "Unrecognized command: $OPTARG";;
- esac
- done
-
- dmenu_mnt && exit
|