aboutsummaryrefslogtreecommitdiff
path: root/dmenuUmount.sh
blob: 3464591d7cf13ccb6668d7969811836c95a2433e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
#          _
#       __| |_ __ ___   ___ _ __  _   _
#      / _` | '_ ` _ \ / _ \ '_ \| | | |
#     | (_| | | | | | |  __/ | | | |_| |
#      \__,_|_| |_| |_|\___|_| |_|\__,_|
#                                    _
#  _   _ _ __ ___   ___  _   _ _ __ | |_ ___
# | | | | '_ ` _ \ / _ \| | | | '_ \| __/ __|
# | |_| | | | | | | (_) | |_| | | | | |_\__ \
#  \__,_|_| |_| |_|\___/ \__,_|_| |_|\__|___/
#
# Gives a dmenu prompt to unmount mounted drives.
# Shows mounted partitions; select one to unmount.

exclusionregex="\(/boot/efi\|/home\|/\)$"
list="$(lsblk -lp | grep "part /" | grep -v "$exclusionregex")"
[ "$list" = "" ] && notify-send -t 2000 "No devices found to unmount." && exit 0
drives=""
i=0
while read -r line
do
	i=$((i+1))
	name="$(echo "$line" | awk '{print $1}')"
	size="$(echo "$line" | awk '{print $4}')"
	mountpoint="$(echo "$line" | awk '{print $7}')"
	label="$(lsblk -lpo "name,label" | grep "$name" | awk '{print $2}')"
	fstype="$(lsblk -lpo "name,fstype" | grep "$name" | awk '{print $2}')"
	drives="$drives$i. $name ($size) \"$label\" [$fstype] on $mountpoint"$'\n'
done <<< "$list"
[ "$drives" = "" ] && exit
lines=$(echo "$drives" | wc -l)
chosen=$(echo "$drives" | dmenu -l "$lines" -p "Unmount which drive?" | awk '{print $2}')
[ "$chosen" = "" ] && exit
sudo umount "$chosen" && pgrep -x dunst && notify-send "$chosen unmounted."