summaryrefslogtreecommitdiff
path: root/qmenu/qmenu_vm/fqvm_device
blob: a66d6df3e362a2a80990dc03688923726384925c (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
if ! qvm-check -q --running "$qube"; then

	echo Go back... | dmenu-unlinked -p "$qube needs to be running, in order to attach $(echo "$chosefrom" | cut -f1 -d\ | awk '{print tolower($0)}') devices to it." > /dev/null 2>&1
else
	case $chosefrom in

		Audio*) device_type='device mic';;

		Block*) device_type=block;;

		USB*) device_type=usb
	esac

	devices_list=$(qvm-$device_type)

	device=1

	while [ -n "$device" ]; do

		device=$(echo "$devices_list" | dmenu-unlinked -l 16 -p "$qube:")

		if [ -n "$device" ] && [ "$(echo "$device" | wc -l)" -eq 1 ]; then

			device_id=$(echo "$device" | cut -f1 -d\ )

			if [ "$device_type" = block ]; then

				device_name=$(echo "$device" | awk '{print $2,$3}')
				holds_qube=$(echo "$device" | awk '{print $4}')
			else
				device_name=$(echo "$device" | awk '{print $2}')
				holds_qube=$(echo "$device" | awk '{print $3}')
			fi

			if [ -z "$holds_qube" ]; then

				if nyprompt "Attach '$device_name' to $qube?"; then

					unset device

					qvm-$device_type attach -q "$qube" "$device_id" ||

						echo Go back... | dmenu-unlinked -p "Error: Failed to attach device!" > /dev/null 2>&1
				fi

			elif [ "$holds_qube" = "$qube" ]; then

				if nyprompt "Detach '$device_name' from $qube?"; then

					unset device

					qvm-$device_type detach -q "$holds_qube" "$device_id" ||

						echo Go back... | dmenu-unlinked -p "Error: Failed to detach device!" > /dev/null 2>&1
				fi
			else
				if nyprompt "Detach '$device_name' from $holds_qube and attach it to $qube?"; then

					unset device

					qvm-$device_type detach -q "$holds_qube" "$device_id" &&

						qvm-$device_type attach -q "$qube" "$device_id" ||

							echo Go back... | dmenu-unlinked -p "Error: Failed to handle device!" > /dev/null 2>&1
				fi
			fi
		fi
	done
fi