Commit 4ce6d0a7 authored by Bastien Nocera's avatar Bastien Nocera
Browse files

shell: Add bash completion file

Only completes the panel names for now.
parent d0dda2fa
......@@ -78,6 +78,12 @@ sys_in_files = gnome-control-center.desktop.in
sys_DATA = $(sys_in_files:.desktop.in=.desktop)
@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 = \
$(ui_DATA) \
gnome-control-center.desktop.in.in
......
#!/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
#!/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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment