blob: 93538aba7416cc44fd1099298ccbffafb22a447e (
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
|
#!/bin/sh
state_dir="${XDG_STATE_HOME:-$HOME/.local/state}"
contexts_dir="$state_dir/contexts"
mkdir -p "$contexts_dir"
link() {
ln -nsf "${1:?}" "${2:?}"
}
new_context() {
echo new_context 1>&2
: "${1:?I require a context name}"
dir="${contexts_dir}/${1}"
if [ -d "${dir}" ]
then notify-send "ctx" "${dir} already exists!"
else mkdir -p "${dir}"
echo "$1" > "${dir}/name"
link "${dir}" "${state_dir}/context"
fi
}
set_context() {
echo set_context 1>&2
: "${1:?I require a context name}"
dir="${contexts_dir}/${1}"
if [ -d "${dir}" ]
then link "${dir}" "${state_dir}/context"
else notify-send "ctx" "${dir} does not exists!"
fi
}
{
if [ "$1" ]
then echo "$1"
else ls "$contexts_dir" | dmenu -p "switch to contex: " -l 20
fi
} |
while read -r context
do case "$context" in
+*) new_context "${context#+}" ;;
*[![:space:]]*) set_context "$context" ;;
esac
done
|