From dc47de178f1d3910bc193973192586e8b118e475 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 20 Jan 2024 08:31:05 +0400 Subject: Add an option to skip the hotkey overlay at startup --- niri-config/src/lib.rs | 15 +++++++++++++++ resources/default-config.kdl | 6 ++++++ src/hotkey_overlay.rs | 3 +-- src/niri.rs | 7 ++++++- 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, #[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); @@ -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 = RelocateRenderElement>, 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) => { -- cgit