diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-18 19:20:46 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-18 20:32:44 +0400 |
| commit | 011c91c98a76880744d35afa763c20db074d9c90 (patch) | |
| tree | 035410f1a48769b3dd7f78417d673adcc81eb8aa /src/niri.rs | |
| parent | edafa139f6296ec8b23906978f4798338877f28d (diff) | |
| download | niri-011c91c98a76880744d35afa763c20db074d9c90.tar.gz niri-011c91c98a76880744d35afa763c20db074d9c90.tar.bz2 niri-011c91c98a76880744d35afa763c20db074d9c90.zip | |
Add an important hotkeys overlay
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/niri.rs b/src/niri.rs index 8109f2eb..16e0f2d6 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -100,6 +100,7 @@ use crate::dbus::gnome_shell_screenshot::{NiriToScreenshot, ScreenshotToNiri}; use crate::dbus::mutter_screen_cast::{self, ScreenCastToNiri}; use crate::frame_clock::FrameClock; use crate::handlers::configure_lock_surface; +use crate::hotkey_overlay::HotkeyOverlay; use crate::input::{apply_libinput_settings, TabletData}; use crate::ipc::server::IpcServer; use crate::layout::{Layout, MonitorRenderElement}; @@ -189,6 +190,7 @@ pub struct Niri { pub screenshot_ui: ScreenshotUi, pub config_error_notification: ConfigErrorNotification, + pub hotkey_overlay: HotkeyOverlay, #[cfg(feature = "dbus")] pub dbus: Option<crate::dbus::DBusServers>, @@ -594,6 +596,10 @@ impl State { output_config_changed = true; } + if config.binds != old_config.binds { + self.niri.hotkey_overlay.on_hotkey_config_updated(); + } + *old_config = config; // Release the borrow. @@ -859,6 +865,7 @@ impl Niri { let screenshot_ui = ScreenshotUi::new(); let config_error_notification = ConfigErrorNotification::new(); + let hotkey_overlay = HotkeyOverlay::new(config.clone(), backend.mod_key()); let socket_source = ListeningSocketSource::new_auto().unwrap(); let socket_name = socket_source.socket_name().to_os_string(); @@ -964,6 +971,7 @@ impl Niri { screenshot_ui, config_error_notification, + hotkey_overlay, #[cfg(feature = "dbus")] dbus: None, @@ -1858,6 +1866,11 @@ impl Niri { return elements; } + // Draw the hotkey overlay on top. + if let Some(element) = self.hotkey_overlay.render(renderer, output) { + elements.push(element.into()); + } + // Get monitor elements. let mon = self.layout.monitor_for_output(output).unwrap(); let monitor_elements = mon.render_elements(renderer); |
