aboutsummaryrefslogtreecommitdiff
path: root/src/handlers/mod.rs
diff options
context:
space:
mode:
authortet <gmorer@pm.me>2024-05-21 22:43:42 +0000
committerIvan Molodetskikh <yalterz@gmail.com>2024-07-05 07:35:01 +0300
commit43df7fad46033692abc6a2b223e6d98f8b7a5aed (patch)
treeaa7bf3fee968b97650a84b626615f8edb6fa44d4 /src/handlers/mod.rs
parentd2087a2cd9f30e40778861666370df56b532af63 (diff)
downloadniri-43df7fad46033692abc6a2b223e6d98f8b7a5aed.tar.gz
niri-43df7fad46033692abc6a2b223e6d98f8b7a5aed.tar.bz2
niri-43df7fad46033692abc6a2b223e6d98f8b7a5aed.zip
Implement wlr-output-management protocol
fix: wlr_output_management use WeakOutput
Diffstat (limited to 'src/handlers/mod.rs')
-rw-r--r--src/handlers/mod.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs
index 845faf08..f288e24f 100644
--- a/src/handlers/mod.rs
+++ b/src/handlers/mod.rs
@@ -68,9 +68,13 @@ use crate::protocols::foreign_toplevel::{
self, ForeignToplevelHandler, ForeignToplevelManagerState,
};
use crate::protocols::gamma_control::{GammaControlHandler, GammaControlManagerState};
+use crate::protocols::output_management::{OutputManagementHandler, OutputManagementManagerState};
use crate::protocols::screencopy::{Screencopy, ScreencopyHandler};
use crate::utils::{output_size, send_scale_transform};
-use crate::{delegate_foreign_toplevel, delegate_gamma_control, delegate_screencopy};
+use crate::{
+ delegate_foreign_toplevel, delegate_gamma_control, delegate_output_management,
+ delegate_screencopy,
+};
impl SeatHandler for State {
type KeyboardFocus = WlSurface;
@@ -545,3 +549,15 @@ delegate_xdg_activation!(State);
impl FractionalScaleHandler for State {}
delegate_fractional_scale!(State);
+
+impl OutputManagementHandler for State {
+ fn output_management_state(&mut self) -> &mut OutputManagementManagerState {
+ &mut self.niri.output_management_state
+ }
+
+ fn apply_output_config(&mut self, config: Vec<niri_config::Output>) {
+ self.niri.config.borrow_mut().outputs = config;
+ self.reload_output_config();
+ }
+}
+delegate_output_management!(State);