diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-27 14:54:24 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-27 14:54:24 +0400 |
| commit | cf87a185a90aeacf7c15d27ddba23bc493d9c2dd (patch) | |
| tree | e8625c61105821b8d552db86f70839b1282151b4 /src/utils/mod.rs | |
| parent | e276c906bf4bea27dc8173815ff373d04c20caaf (diff) | |
| download | niri-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.rs | 25 |
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")?; |
