aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cli.rs3
-rw-r--r--src/main.rs6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/cli.rs b/src/cli.rs
index 9b106485..a01bc109 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -2,6 +2,7 @@ use std::ffi::OsString;
use std::path::PathBuf;
use clap::{Parser, Subcommand};
+use clap_complete::Shell;
use niri_ipc::{Action, OutputAction};
use crate::utils::version;
@@ -54,6 +55,8 @@ pub enum Sub {
},
/// Cause a panic to check if the backtraces are good.
Panic,
+ /// Generate shell completions.
+ Completions { shell: Shell },
}
#[derive(Subcommand)]
diff --git a/src/main.rs b/src/main.rs
index e11cd112..fd34ae82 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,7 +9,7 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::{env, mem};
-use clap::Parser;
+use clap::{CommandFactory, Parser};
use directories::ProjectDirs;
use niri::cli::{Cli, Sub};
#[cfg(feature = "dbus")]
@@ -106,6 +106,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
return Ok(());
}
Sub::Panic => cause_panic(),
+ Sub::Completions { shell } => {
+ clap_complete::generate(shell, &mut Cli::command(), "niri", &mut io::stdout());
+ return Ok(());
+ }
}
}