aboutsummaryrefslogtreecommitdiff
path: root/src/utils/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-29 13:32:11 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-06-10 18:08:00 +0300
commite3406ac2556c7f68cd00f11b5856222dcce7f680 (patch)
tree06926e2b098d98b780345569bdfbf56a92c3c392 /src/utils/mod.rs
parent22a948cc759498923c1e9806580962cdd2d7b3e2 (diff)
downloadniri-e3406ac2556c7f68cd00f11b5856222dcce7f680.tar.gz
niri-e3406ac2556c7f68cd00f11b5856222dcce7f680.tar.bz2
niri-e3406ac2556c7f68cd00f11b5856222dcce7f680.zip
Signal fractional scale to clients
Doesn't do anything yet because we don't bind the fractional scale manager and don't allow fractional scales.
Diffstat (limited to 'src/utils/mod.rs')
-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")?;