-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexo-open.in
53 lines (45 loc) · 1.1 KB
/
exo-open.in
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
#!/bin/sh
# exo-open - wrapper for lunch(1) that provides exo-open(1)-style usage
usage() {
[ -n "$1" ] && printf 'error: %s\n' "$1" >&1
cat >&2 <<EOF
usage:
${0##*/} [--working-directory DIRECTORY] FILE... | URL...
${0##*/} [--working-directory DIRECTORY] --launch CATEGORY [PARAMETERS...]
EOF
exit "${2:-64}" # EX_USAGE
}
set -e
[ $# -eq 0 ] && usage
category=
launch_cwd="${PWD}"
mode=open
while [ $# -ge 0 ]; do
case "${1}" in
--working-directory)
shift
launch_cwd="${1}"
;;
--launch)
mode=launch
shift
category="${1}"
;;
*)
usage
;;
esac
shift
done
cd "${launch_cwd}"
[ "${mode}" = open ] && exec lunch -- "$@"
case "${category}" in
FileManager) category="file_manager" ;;
MailReader) category="mail_client" ;;
TerminalEmulator) category="terminal" ;;
WebBrowser) category="browser" ;;
*)
usage "'${category}' is an invalid category" 22
;;
esac
exec lunch -o "${category}" "$@"