aboutsummaryrefslogtreecommitdiff
path: root/src/utils/mod.rs
diff options
context:
space:
mode:
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")?;