aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--niri-config/src/lib.rs15
-rw-r--r--resources/default-config.kdl6
-rw-r--r--src/hotkey_overlay.rs3
-rw-r--r--src/niri.rs7
4 files changed, 28 insertions, 3 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs
index f05b78b9..03b39390 100644
--- a/niri-config/src/lib.rs
+++ b/niri-config/src/lib.rs
@@ -34,6 +34,8 @@ pub struct Config {
]
pub screenshot_path: Option<String>,
#[knuffel(child, default)]
+ pub hotkey_overlay: HotkeyOverlay,
+ #[knuffel(child, default)]
pub binds: Binds,
#[knuffel(child, default)]
pub debug: DebugConfig,
@@ -336,6 +338,12 @@ pub struct Struts {
pub bottom: u16,
}
+#[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq, Eq)]
+pub struct HotkeyOverlay {
+ #[knuffel(child)]
+ pub skip_at_startup: bool,
+}
+
#[derive(knuffel::Decode, Debug, Default, PartialEq)]
pub struct Binds(#[knuffel(children)] pub Vec<Bind>);
@@ -766,6 +774,10 @@ mod tests {
screenshot-path "~/Screenshots/screenshot.png"
+ hotkey-overlay {
+ skip-at-startup
+ }
+
binds {
Mod+T { spawn "alacritty"; }
Mod+Q { close-window; }
@@ -881,6 +893,9 @@ mod tests {
xcursor_size: 16,
},
screenshot_path: Some(String::from("~/Screenshots/screenshot.png")),
+ hotkey_overlay: HotkeyOverlay {
+ skip_at_startup: true,
+ },
binds: Binds(vec![
Bind {
key: Key {
diff --git a/resources/default-config.kdl b/resources/default-config.kdl
index 1a7d6f94..fde607f4 100644
--- a/resources/default-config.kdl
+++ b/resources/default-config.kdl
@@ -179,6 +179,12 @@ screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
// You can also set this to null to disable saving screenshots to disk.
// screenshot-path null
+// Settings for the "Important Hotkeys" overlay.
+hotkey-overlay {
+ // Uncomment this line if you don't want to see the hotkey help at niri startup.
+ // skip-at-startup
+}
+
binds {
// Keys consist of modifiers separated by + signs, followed by an XKB key name
// in the end. To find an XKB name for a particular key, you may use a program
diff --git a/src/hotkey_overlay.rs b/src/hotkey_overlay.rs
index 44aa4f92..84601277 100644
--- a/src/hotkey_overlay.rs
+++ b/src/hotkey_overlay.rs
@@ -45,8 +45,7 @@ pub type HotkeyOverlayRenderElement<R> = RelocateRenderElement<MemoryRenderBuffe
impl HotkeyOverlay {
pub fn new(config: Rc<RefCell<Config>>, comp_mod: CompositorMod) -> Self {
Self {
- // Start the compositor with the overlay open.
- is_open: true,
+ is_open: false,
config,
comp_mod,
buffers: RefCell::new(HashMap::new()),
diff --git a/src/niri.rs b/src/niri.rs
index dc1efd87..d4e39831 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -868,7 +868,12 @@ impl Niri {
let screenshot_ui = ScreenshotUi::new();
let config_error_notification = ConfigErrorNotification::new();
- let hotkey_overlay = HotkeyOverlay::new(config.clone(), backend.mod_key());
+
+ let mut hotkey_overlay = HotkeyOverlay::new(config.clone(), backend.mod_key());
+ if !config_.hotkey_overlay.skip_at_startup {
+ hotkey_overlay.show();
+ }
+
let exit_confirm_dialog = match ExitConfirmDialog::new() {
Ok(x) => Some(x),
Err(err) => {