aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-16 09:42:31 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-16 09:46:02 +0400
commit6ca3b6ddb564d34e50881faefec6e06e11b9fcb9 (patch)
tree77b1edfd11712baa8b8ccf278b3b601ca52e1e1c /src/niri.rs
parentfc5a080ca5ab1859ee2a57e00f1a365ef9a783a2 (diff)
downloadniri-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.rs16
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.