diff options
| author | Robert Günzler <r@gnzler.io> | 2026-02-10 12:32:48 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2026-02-10 12:41:25 +0100 |
| commit | 63feeb9f369fc6176e85c1c2d8fcc863caad1946 (patch) | |
| tree | 41cd5d2d1ec36e74e464caab722cc9b460153f04 /bin/mnts | |
| parent | 5bd0a4aca65ecb9818ef1285982d160b6b6ff665 (diff) | |
start new
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'bin/mnts')
| -rwxr-xr-x | bin/mnts | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/bin/mnts b/bin/mnts deleted file mode 100755 index fe940c1..0000000 --- a/bin/mnts +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# -# DESCRIPTION: -# dmenu-based mount/unmount helper -# - -[ -n "$DEBUG" ] && set -x - -export MENU_PROMPT=" mnts" - -# check requirements -for app in awk jq lsblk notify-send; do - if ! command -v "$app" >/dev/null; then - printf "%s: %s not installed but required\n" "$(basename "$0")" "$app" >&2 - exit 1 - fi -done - -exec= -while getopts hx: o; do - case "$o" in - x) exec="$OPTARG" ;; - h | ?) exit 2 ;; - esac -done -shift $((OPTIND - 1)) - -# mount <1:mode> <2:device> <3:label> <4:path> -mount() { - local ok=0 - local logfile=$(mktemp --tmpdir -t "mnts-${3}-XXXXX") - local icon=/usr/share/icons/mdi/scalable/harddisk.svg - trap '{ rm -f "$logfile"; }' EXIT - - case "$1" in - mount) - local path - - icon=/usr/share/icons/mdi/scalable/harddisk-plus.svg - path="/media/$(tr '[:upper:]' '[:lower:]' <<<"$3")" - [ ! -d "$path" ] && mkdir -p "$path" - doas -n mount -v -o "uid=$(id -u),gid=$(id -g)" "$2" "$path" >"$logfile" 2>&1 - if [ -n "${exec}" ]; then - sh -c "$exec $path" & - disown - fi - ;; - unmount) - icon=/usr/share/icons/mdi/scalable/harddisk-remove.svg - doas -n umount -v "$2" >"$logfile" 2>&1 - ;; - esac - - if [ "$ok" -eq 0 ]; then - notify-send -i "${icon}" -a mnts mnts "$(cat "${logfile}")" - else - notify-send -i "${icon}" -a mnts -u critical -t 30000 mnts "${1}ing ${3} [${2}] failed:\n<i>$(cat "${logfile}")</i>" - fi -} - -handle() { - while read -r line; do - dev=$(awk '{print $1}' <<<"$line") - label=$(awk '{print $2}' <<<"$line") - path=$(awk '{print $3}' <<<"$line") - mode=$(awk '{if(length($3)<1) print "mount";else print "unmount";}' <<<"$line") - [ -n "${DEBUG}" ] && printf 'DEBUG: mode:%s, dev:%s, path:%s\n' "${mode}" "${dev}" "${path}" - mount "${mode}" "${dev}" "${label}" "${path}" & - done -} - -doas -n lsblk -flJ | - jq -r '.blockdevices[] | select(.uuid?!="" and .name?) | select((.name | test("hibiki|luks|nvme|loop[0-9]+") | not)) | [("/dev/"+.name), .label, (.mountpoints[0] // "")] | @tsv' | - column -s $'\t' -t | - menu --list=8 | - handle |