aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-18 19:20:46 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-18 20:32:44 +0400
commit011c91c98a76880744d35afa763c20db074d9c90 (patch)
tree035410f1a48769b3dd7f78417d673adcc81eb8aa /src/niri.rs
parentedafa139f6296ec8b23906978f4798338877f28d (diff)
downloadniri-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.rs13
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);