Add bash completion for riverctl
This commit is contained in:
parent
27cac16ced
commit
eb1dd401f8
2 changed files with 82 additions and 0 deletions
13
build.zig
13
build.zig
|
@ -25,6 +25,12 @@ pub fn build(b: *zbs.Builder) !void {
|
||||||
break :scdoc_found true;
|
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 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.?});
|
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();
|
try scdoc_step.install();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bash_completion) {
|
||||||
|
b.installFile(
|
||||||
|
"completions/bash/riverctl",
|
||||||
|
"share/bash-completion/completions/riverctl",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (examples) {
|
if (examples) {
|
||||||
inline for (.{ "status", "options" }) |example_name| {
|
inline for (.{ "status", "options" }) |example_name| {
|
||||||
const example = b.addExecutable(example_name, "example/" ++ example_name ++ ".zig");
|
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 a new issue