aboutsummaryrefslogtreecommitdiff
path: root/src/utils/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-27 14:54:24 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-27 14:54:24 +0400
commitcf87a185a90aeacf7c15d27ddba23bc493d9c2dd (patch)
treee8625c61105821b8d552db86f70839b1282151b4 /src/utils/mod.rs
parente276c906bf4bea27dc8173815ff373d04c20caaf (diff)
downloadniri-cf87a185a90aeacf7c15d27ddba23bc493d9c2dd.tar.gz
niri-cf87a185a90aeacf7c15d27ddba23bc493d9c2dd.tar.bz2
niri-cf87a185a90aeacf7c15d27ddba23bc493d9c2dd.zip
Add logical output info and preferred modes to IPC
Diffstat (limited to 'src/utils/mod.rs')
-rw-r--r--src/utils/mod.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index acd37b20..aef9a8aa 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -12,7 +12,7 @@ use git_version::git_version;
use niri_config::Config;
use smithay::output::Output;
use smithay::reexports::rustix::time::{clock_gettime, ClockId};
-use smithay::utils::{Logical, Point, Rectangle, Size};
+use smithay::utils::{Logical, Point, Rectangle, Size, Transform};
pub mod id;
pub mod spawning;
@@ -51,6 +51,29 @@ pub fn output_size(output: &Output) -> Size<i32, Logical> {
.to_logical(output_scale)
}
+pub fn logical_output(output: &Output) -> niri_ipc::LogicalOutput {
+ let loc = output.current_location();
+ let size = output_size(output);
+ let transform = match output.current_transform() {
+ Transform::Normal => niri_ipc::Transform::Normal,
+ Transform::_90 => niri_ipc::Transform::_90,
+ Transform::_180 => niri_ipc::Transform::_180,
+ Transform::_270 => niri_ipc::Transform::_270,
+ Transform::Flipped => niri_ipc::Transform::Flipped,
+ Transform::Flipped90 => niri_ipc::Transform::Flipped90,
+ Transform::Flipped180 => niri_ipc::Transform::Flipped180,
+ Transform::Flipped270 => niri_ipc::Transform::Flipped270,
+ };
+ niri_ipc::LogicalOutput {
+ x: loc.x,
+ y: loc.y,
+ width: size.w as u32,
+ height: size.h as u32,
+ scale: output.current_scale().fractional_scale(),
+ transform,
+ }
+}
+
pub fn expand_home(path: &Path) -> anyhow::Result<Option<PathBuf>> {
if let Ok(rest) = path.strip_prefix("~") {
let dirs = UserDirs::new().context("error retrieving home directory")?;