blob: 4d3fe4662a7cdb398d416f2fc8537833ec1b49f9 (
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
 | option=1
while [ -n "$option" ]; do
	option=$(printf 'Available\nSelected\nRefresh' | dmenu-unlinked -i -l 3 -p "$qube:")
	if [ "$option" = Available ]; then
		applications=1
		while [ -n "$applications" ]; do
			applications=$(qvm-appmenus --get-available --i-understand-format-is-unstable "$qube" | grep -v "$(qvm-appmenus --get-whitelist --i-understand-format-is-unstable "$qube")" | dmenu-unlinked -l 50 -p "$qube:" | cut -f1 -d\ )
			if [ -n "$applications" ]; then
				# Check validity of input to prevent whitelisted-appmenus.list
 				# from being filled with garbage.
				qvm-appmenus --get-available --i-understand-format-is-unstable "$qube" | cut -f1 -d\  | grep -q "^$applications$" &&
					printf "\n$applications" >> "$HOME"/.local/share/qubes-appmenus/"$qube"/whitelisted-appmenus.list
					applications_modified=1
			fi
		done
	elif [ "$option" = Selected ]; then
		applications=1
		while [ -n "$applications" ]; do
			applications=$(qvm-appmenus --get-available --i-understand-format-is-unstable "$qube" | grep "$(qvm-appmenus --get-whitelist --i-understand-format-is-unstable "$qube")" | dmenu-unlinked -l 50 -p "$qube:"  | cut -f1 -d\ )
			if [ -n "$applications" ]; then
				for application in $applications; do
					# Look up linenumber above $application in
					# whitelisted-appmenus.list to delete if it is garbage whitespace.
					whitespace=$(grep -n1 "^$application$" < "$HOME"/.local/share/qubes-appmenus/"$qube"/whitelisted-appmenus.list | sed '1q;d' | cut -d- -f1)
					sed -i "${whitespace}{/^$/d;}" "$HOME"/.local/share/qubes-appmenus/"$qube"/whitelisted-appmenus.list
					sed -i "/$application/d" "$HOME"/.local/share/qubes-appmenus/"$qube"/whitelisted-appmenus.list
					applications_modified=1
				done
			fi
		done
	elif [ "$option" = Refresh ]; then
		qvm-appmenus -q --force --update "$qube"
	fi
	# Only update qvm-appmenus down here, *after* the user
	# has quit the application selection to improve speed and reduce unnecessary updates.
	if [ -n "$applications_modified" ]; then
		qvm-appmenus -q --update "$qube"
		unset applications_modified
	fi
done
 |