diff options
Diffstat (limited to 'pkgs/by-name/au/aumo/aumo.sh')
| -rwxr-xr-x | pkgs/by-name/au/aumo/aumo.sh | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/pkgs/by-name/au/aumo/aumo.sh b/pkgs/by-name/au/aumo/aumo.sh index dba5ef63..824d817a 100755 --- a/pkgs/by-name/au/aumo/aumo.sh +++ b/pkgs/by-name/au/aumo/aumo.sh @@ -25,18 +25,24 @@ usage() { echo "Usage: $NAME mount|unmount" } +is_label_mounted() { + label="$1" + + findmnt --output label --json | jq --arg label "$label" '.filesystems | map(.label) | sort | unique | map(select(. != null)) | index($label) != null' +} + get_mounted_labels() { findmnt --output label --json | jq '.filesystems | map(.label) | sort | unique | map(select(. != null))' } get_unmounted_labels() { first=true - find /dev/disk/by-label -printf "%P\n" | while read -r label; do - if ! get_mounted_labels | jq 'join("\n")' --raw-output | grep "$label" --quiet; then + fd . /dev/disk/by-label --format "{/.}" | while read -r label; do + if ! [ "$(is_label_mounted "$label")" = true ]; then if [ "$first" = "true" ]; then first=false else - printf "|" + printf "\0" fi printf "%s" "$label" fi @@ -44,13 +50,13 @@ get_unmounted_labels() { } unmounting() { - disk_name="$(get_mounted_labels | jq 'join("|")' --join-output | rofi -sep "|" -dmenu -p "Select disk to unmount")" + disk_name="$(get_mounted_labels | jq 'join("\u0000")' --join-output | rofi -sep "\0" -dmenu -p "Select disk to unmount" | sed 's/ /\\x20/')" udisksctl unmount --block-device "/dev/disk/by-label/$disk_name" } mounting() { - disk_name="$(get_unmounted_labels | rofi -sep "|" -dmenu -p "Select disk to mount")" + disk_name="$(get_unmounted_labels | rofi -sep "\0" -dmenu -p "Select disk to mount")" udisksctl mount --block-device "/dev/disk/by-label/$disk_name" } |
