40 lines
1.4 KiB
Rust
40 lines
1.4 KiB
Rust
//! Tools for configuring Xwayland.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// Sets whether Xwayland is enabled
|
|
///
|
|
/// The default is `true`.
|
|
pub fn set_x_wayland_enabled(enabled: bool) {
|
|
get!().set_x_wayland_enabled(enabled)
|
|
}
|
|
|
|
/// The scaling mode of X windows.
|
|
#[derive(Serialize, Deserialize, Copy, Clone, Debug, Eq, PartialEq, Hash, Default)]
|
|
pub struct XScalingMode(pub u32);
|
|
|
|
impl XScalingMode {
|
|
/// The default mode.
|
|
///
|
|
/// Currently this means that windows are rendered at the lowest scale and then
|
|
/// upscaled if necessary.
|
|
pub const DEFAULT: Self = Self(0);
|
|
/// Windows are rendered at the highest integer scale and then downscaled.
|
|
///
|
|
/// This has significant performance implications unless the window is running on the
|
|
/// output with the highest scale and that scale is an integer scale.
|
|
///
|
|
/// For example, on a 3840x2160 output with a 1.5 scale, a fullscreen window will be
|
|
/// rendered at 3840x2160 * 2 / 1.5 = 5120x2880 pixels and then downscaled to
|
|
/// 3840x2160. This overhead gets worse the lower the scale of the output is.
|
|
///
|
|
/// Additionally, this mode requires the X window to scale its contents itself. In the
|
|
/// example above, you might achieve this by setting the environment variable
|
|
/// `GDK_SCALE=2`.
|
|
pub const DOWNSCALED: Self = Self(1);
|
|
}
|
|
|
|
/// Sets the scaling mode for X windows.
|
|
pub fn set_x_scaling_mode(mode: XScalingMode) {
|
|
get!().set_x_scaling_mode(mode)
|
|
}
|