shell: Add bash completion file
Only completes the panel names for now.
This commit is contained in:
parent
d0dda2fa0d
commit
4ce6d0a7ab
3 changed files with 57 additions and 0 deletions
|
@ -78,6 +78,12 @@ sys_in_files = gnome-control-center.desktop.in
|
||||||
sys_DATA = $(sys_in_files:.desktop.in=.desktop)
|
sys_DATA = $(sys_in_files:.desktop.in=.desktop)
|
||||||
@INTLTOOL_DESKTOP_RULE@
|
@INTLTOOL_DESKTOP_RULE@
|
||||||
|
|
||||||
|
completiondir = $(datadir)/bash-completion/completions
|
||||||
|
completion_in_files = gnome_control_center_completion.bash.in
|
||||||
|
completion_DATA = $(completion_in_files:.bash.in=.bash)
|
||||||
|
gnome_control_center_completion.bash: gnome_control_center_completion.bash.in list-panel.sh
|
||||||
|
$(AM_V_GEN) cat $< | sed "s,@PANELS@,`$(srcdir)/list-panel.sh $(top_srcdir)`," > $@
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(ui_DATA) \
|
$(ui_DATA) \
|
||||||
gnome-control-center.desktop.in.in
|
gnome-control-center.desktop.in.in
|
||||||
|
|
43
shell/gnome_control_center_completion.bash.in
Normal file
43
shell/gnome_control_center_completion.bash.in
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# gnome-control-center tab completion for bash.
|
||||||
|
|
||||||
|
_gnome_control_center()
|
||||||
|
{
|
||||||
|
local cur prev command_list i v
|
||||||
|
|
||||||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
-o|--overview)
|
||||||
|
command_list=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ $prev = "gnome-control-center" ] ; then
|
||||||
|
command_list="--overview --verbose --version"
|
||||||
|
command_list="$command_list @PANELS@"
|
||||||
|
elif [ $prev = "--verbose" ]; then
|
||||||
|
command_list="@PANELS@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# FIXME
|
||||||
|
# Add the argvs for some of the panels that
|
||||||
|
# support it, such as network
|
||||||
|
for i in --overview --version @PANELS@; do
|
||||||
|
if [ $i = $prev ]; then
|
||||||
|
command_list=""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for i in $command_list; do
|
||||||
|
if [ -z "${i/$cur*}" ]; then
|
||||||
|
COMPREPLY=( ${COMPREPLY[@]} $i )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# load the completion
|
||||||
|
complete -F _gnome_control_center gnome-control-center
|
8
shell/list-panel.sh
Executable file
8
shell/list-panel.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LIST=""
|
||||||
|
for i in $1/panels/*/gnome-*panel.desktop.in.in ; do
|
||||||
|
basename=`basename $i`
|
||||||
|
LIST="$LIST `echo $basename | sed 's/gnome-//' | sed 's/-panel.desktop.in.in/ /'`"
|
||||||
|
done
|
||||||
|
echo -n $LIST
|
Loading…
Add table
Add a link
Reference in a new issue