aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/mod.rs17
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")?;