Add bash completion for riverctl
This commit is contained in:
parent
27cac16ced
commit
eb1dd401f8
13
build.zig
13
build.zig
@ -25,6 +25,12 @@ pub fn build(b: *zbs.Builder) !void {
|
||||
break :scdoc_found true;
|
||||
};
|
||||
|
||||
const bash_completion = b.option(
|
||||
bool,
|
||||
"bash-completion",
|
||||
"Set to true to install bash completion for riverctl. Defaults to true.",
|
||||
) orelse true;
|
||||
|
||||
const examples = b.option(bool, "examples", "Set to true to build examples") orelse false;
|
||||
|
||||
const resolved_prefix = try std.fs.path.resolve(b.allocator, &[_][]const u8{b.install_prefix.?});
|
||||
@ -88,6 +94,13 @@ pub fn build(b: *zbs.Builder) !void {
|
||||
try scdoc_step.install();
|
||||
}
|
||||
|
||||
if (bash_completion) {
|
||||
b.installFile(
|
||||
"completions/bash/riverctl",
|
||||
"share/bash-completion/completions/riverctl",
|
||||
);
|
||||
}
|
||||
|
||||
if (examples) {
|
||||
inline for (.{ "status", "options" }) |example_name| {
|
||||
const example = b.addExecutable(example_name, "example/" ++ example_name ++ ".zig");
|
||||
|
69
completions/bash/riverctl
Normal file
69
completions/bash/riverctl
Normal file
@ -0,0 +1,69 @@
|
||||
function __riverctl_completion ()
|
||||
{
|
||||
if [ "${COMP_CWORD}" -eq 1 ]
|
||||
then
|
||||
OPTS=" \
|
||||
csd-filter-add \
|
||||
exit \
|
||||
float-filter-add \
|
||||
focus-output \
|
||||
focus-view \
|
||||
layout \
|
||||
mod-main-count \
|
||||
mod-main-factor \
|
||||
move \
|
||||
resize \
|
||||
snap \
|
||||
send-to-output \
|
||||
spawn \
|
||||
swap \
|
||||
toggle-float \
|
||||
toggle-fullscreen \
|
||||
zoom \
|
||||
set-focused-tags \
|
||||
set-view-tags \
|
||||
toggle-focused-tags \
|
||||
toggle-view-tags \
|
||||
spawn-tagmask \
|
||||
declare-mode \
|
||||
enter-mode \
|
||||
map \
|
||||
map-pointer \
|
||||
unmap \
|
||||
unmap-pointer \
|
||||
attach-mode \
|
||||
background-color \
|
||||
border-color-focused \
|
||||
border-color-unfocused \
|
||||
border-width \
|
||||
focus-follow-cursor \
|
||||
opacity \
|
||||
outer-padding \
|
||||
set-repeat \
|
||||
view-padding \
|
||||
xcursor-theme \
|
||||
declare-option \
|
||||
get-option \
|
||||
set-option \
|
||||
mod-option"
|
||||
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[1]}"))
|
||||
elif [ "${COMP_CWORD}" -eq 2 ]
|
||||
then
|
||||
case "${COMP_WORDS[1]}" in
|
||||
"focus-output"|"focus-view"|"send-to-output"|"swap") OPTS="next previous" ;;
|
||||
"move"|"snap") OPTS="up down left right" ;;
|
||||
"resize") OPTS="horizontal vertical" ;;
|
||||
"map"|"unmap") OPTS="-release" ;;
|
||||
"attach-mode") OPTS="top bottom" ;;
|
||||
"focus-follows-cursor") OPTS="disabled normal strict" ;;
|
||||
"declare-option"|"get-option"|"set-option"|"mod-option") OPTS="-output -focused-output" ;;
|
||||
*) return ;;
|
||||
esac
|
||||
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[2]}"))
|
||||
else
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
complete -F __riverctl_completion riverctl
|
||||
|
Loading…
Reference in New Issue
Block a user