diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-16 09:42:31 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-16 09:46:02 +0400 |
| commit | 6ca3b6ddb564d34e50881faefec6e06e11b9fcb9 (patch) | |
| tree | 77b1edfd11712baa8b8ccf278b3b601ca52e1e1c /src/niri.rs | |
| parent | fc5a080ca5ab1859ee2a57e00f1a365ef9a783a2 (diff) | |
| download | niri-6ca3b6ddb564d34e50881faefec6e06e11b9fcb9.tar.gz niri-6ca3b6ddb564d34e50881faefec6e06e11b9fcb9.tar.bz2 niri-6ca3b6ddb564d34e50881faefec6e06e11b9fcb9.zip | |
Move output scale setting into niri
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/niri.rs b/src/niri.rs index 69578804..f5a74b93 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -1043,6 +1043,20 @@ impl Niri { pub fn add_output(&mut self, output: Output, refresh_interval: Option<Duration>) { let global = output.create_global::<State>(&self.display_handle); + let name = output.name(); + let scale = self + .config + .borrow() + .outputs + .iter() + .find(|o| o.name == name) + .map(|c| c.scale) + .unwrap_or(1.); + let scale = scale.clamp(1., 10.).ceil() as i32; + + // Set scale before adding to the layout since that will read the output size. + output.change_current_state(None, None, Some(output::Scale::Integer(scale)), None); + self.layout.add_output(output.clone()); let lock_render_state = if self.is_locked() { @@ -1066,7 +1080,7 @@ impl Niri { }; let rv = self.output_state.insert(output.clone(), state); assert!(rv.is_none(), "output was already tracked"); - let rv = self.output_by_name.insert(output.name(), output.clone()); + let rv = self.output_by_name.insert(name, output.clone()); assert!(rv.is_none(), "output was already tracked"); // Must be last since it will call queue_redraw(output) which needs things to be filled-in. |
