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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
# shellcheck shell=bash
_copyq_commands=(
show hide toggle menu exit disable enable clipboard selection paste copy
count select next previous add insert remove edit separator read write
action popup tab removetab renametab exporttab importtab config eval session
help
)
_copyq_list_sessions() {
ss -l -x | sed -nE 's#.*/\.copyq-?(\S*)_s .*#\1#p'
}
_copyq_complete_words() {
while read -r item; do
COMPREPLY+=("$item")
done < <(compgen -W "$1" -- "${COMP_WORDS[$COMP_CWORD]}")
}
_copyq_complete_lines() {
while read -r item; do
COMPREPLY+=("$item")
done < <(IFS=$'\n' compgen -W "$1" -- "${COMP_WORDS[$COMP_CWORD]}")
}
_copyq_complete_files() {
while read -r item; do
COMPREPLY+=("$item")
done < <(compgen -f -- "${COMP_WORDS[$COMP_CWORD]}")
}
_copyq_completions() {
case "$COMP_CWORD" in
1)
case "${COMP_WORDS[$COMP_CWORD]}" in
--*)
_copyq_complete_words '--session --help'
;;
-*)
_copyq_complete_words '-e -s -h'
;;
*)
_copyq_complete_words "${_copyq_commands[*]}"
;;
esac
;;
2)
case "${COMP_WORDS[$COMP_CWORD-1]}" in
show)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq tab)"
;;
clipboard)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq clipboard -- ?)"
;;
selection)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq selection -- ?)"
;;
copy)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq clipboardFormatsToSave)"
;;
read)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq read -- ?)"
;;
write)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq clipboardFormatsToSave)"
;;
tab)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq tab)"
;;
removetab)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq tab)"
;;
renametab)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq tab)"
;;
exporttab)
_copyq_complete_files
;;
importtab)
_copyq_complete_files
;;
config)
pidof copyq &>/dev/null || return
_copyq_complete_lines "$(copyq config | grep '^[^ ]')"
;;
session|-s|--session)
_copyq_complete_lines "$(_copyq_list_sessions)"
;;
help|-h|--help)
_copyq_complete_words "${_copyq_commands[*]}"
;;
esac
;;
esac
}
complete -o filenames -F _copyq_completions copyq
|