diff options
Diffstat (limited to 'src/utils/mod.rs')
| -rw-r--r-- | src/utils/mod.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/utils/mod.rs b/src/utils/mod.rs index f523d960..7d41b923 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -12,10 +12,13 @@ use directories::UserDirs; use git_version::git_version; use niri_config::Config; use smithay::input::pointer::CursorIcon; -use smithay::output::Output; +use smithay::output::{self, Output}; use smithay::reexports::rustix::time::{clock_gettime, ClockId}; use smithay::reexports::wayland_protocols::xdg::shell::server::xdg_toplevel; +use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface; use smithay::utils::{Logical, Point, Rectangle, Size, Transform}; +use smithay::wayland::compositor::{send_surface_state, SurfaceData}; +use smithay::wayland::fractional_scale::with_fractional_scale; pub mod id; pub mod scale; @@ -133,6 +136,18 @@ pub fn ipc_transform_to_smithay(transform: niri_ipc::Transform) -> Transform { } } +pub fn send_scale_transform( + surface: &WlSurface, + data: &SurfaceData, + scale: output::Scale, + transform: Transform, +) { + send_surface_state(surface, data, scale.integer_scale(), transform); + with_fractional_scale(data, |fractional| { + fractional.set_preferred_scale(scale.fractional_scale()); + }); +} + 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")?; |
