Skip to content

Commit 80e838f

Browse files
committed
Add bash shell completion for wivrnctl
1 parent 12bb615 commit 80e838f

2 files changed

Lines changed: 108 additions & 0 deletions

File tree

tools/wivrnctl/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ target_link_libraries(wivrnctl PRIVATE CLI11::CLI11 PkgConfig::SYSTEMD)
44

55
install(TARGETS wivrnctl)
66

7+
install(FILES dist/wivrnctl.bash
8+
RENAME wivrnctl
9+
DESTINATION share/bash-completion/completions)
10+
711
install(FILES dist/_wivrnctl.zsh
812
RENAME _wivrnctl
913
DESTINATION share/zsh/site-functions)

tools/wivrnctl/dist/wivrnctl.bash

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# bash completion for wivrnctl
2+
3+
_wivrnctl_headsets() {
4+
wivrnctl list-paired 2>/dev/null \
5+
| tail -n +2 \
6+
| awk '{print $1}'
7+
}
8+
9+
_wivrnctl_tabs() {
10+
cat <<EOF
11+
hidden
12+
overlay_only
13+
compact
14+
stats
15+
settings
16+
foveation_settings
17+
applications
18+
application_launcher
19+
EOF
20+
}
21+
22+
_wivrnctl()
23+
{
24+
local cur prev cmd
25+
COMPREPLY=()
26+
27+
cur="${COMP_WORDS[COMP_CWORD]}"
28+
prev="${COMP_WORDS[COMP_CWORD-1]}"
29+
30+
# Global options
31+
if [[ $COMP_CWORD -eq 1 ]]; then
32+
COMPREPLY=( $(compgen -W \
33+
"--help pair unpair rename list-paired stop-server disconnect tab" \
34+
-- "$cur") )
35+
return
36+
fi
37+
38+
cmd="${COMP_WORDS[1]}"
39+
40+
case "$cmd" in
41+
pair)
42+
case "$prev" in
43+
-d|--duration)
44+
COMPREPLY=( $(compgen -W \
45+
"unlimited $(seq 1 10)" \
46+
-- "$cur") )
47+
return
48+
;;
49+
esac
50+
51+
COMPREPLY=( $(compgen -W \
52+
"-h --help -d --duration" \
53+
-- "$cur") )
54+
;;
55+
56+
unpair)
57+
case "$prev" in
58+
unpair|-h|--help)
59+
COMPREPLY=( $(compgen -W "$(_wivrnctl_headsets)" -- "$cur") )
60+
return
61+
;;
62+
esac
63+
64+
if [[ "$cur" == -* ]]; then
65+
COMPREPLY=( $(compgen -W "-h --help" -- "$cur") )
66+
else
67+
COMPREPLY=( $(compgen -W "$(_wivrnctl_headsets)" -- "$cur") )
68+
fi
69+
;;
70+
71+
rename)
72+
if [[ $COMP_CWORD -eq 2 ]]; then
73+
COMPREPLY=( $(compgen -W "$(_wivrnctl_headsets)" -- "$cur") )
74+
elif [[ "$cur" == -* ]]; then
75+
COMPREPLY=( $(compgen -W "-h --help" -- "$cur") )
76+
fi
77+
;;
78+
79+
list-paired)
80+
COMPREPLY=( $(compgen -W \
81+
"-h --help -k --keys" \
82+
-- "$cur") )
83+
;;
84+
85+
stop-server|disconnect)
86+
COMPREPLY=( $(compgen -W \
87+
"-h --help" \
88+
-- "$cur") )
89+
;;
90+
91+
tab)
92+
if [[ "$cur" == -* ]]; then
93+
COMPREPLY=( $(compgen -W "-h --help" -- "$cur") )
94+
else
95+
COMPREPLY=( $(compgen -W "$(_wivrnctl_tabs)" -- "$cur") )
96+
fi
97+
;;
98+
99+
*)
100+
;;
101+
esac
102+
}
103+
104+
complete -F _wivrnctl wivrnctl

0 commit comments

Comments
 (0)