gdk4_x11/auto/x11_screen.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::ffi;
use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::boxed::Box as Box_;
glib::wrapper! {
///
///
/// ## Signals
///
///
/// #### `window-manager-changed`
///
#[doc(alias = "GdkX11Screen")]
pub struct X11Screen(Object<ffi::GdkX11Screen, ffi::GdkX11ScreenClass>);
match fn {
type_ => || ffi::gdk_x11_screen_get_type(),
}
}
impl X11Screen {
/// Returns the current workspace for @self when running under a
/// window manager that supports multiple workspaces, as described
/// in the
/// [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec) specification.
///
/// # Returns
///
/// the current workspace, or 0 if workspaces are not supported
#[doc(alias = "gdk_x11_screen_get_current_desktop")]
#[doc(alias = "get_current_desktop")]
pub fn current_desktop(&self) -> u32 {
unsafe { ffi::gdk_x11_screen_get_current_desktop(self.to_glib_none().0) }
}
/// Returns the number of workspaces for @self when running under a
/// window manager that supports multiple workspaces, as described
/// in the
/// [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec) specification.
///
/// # Returns
///
/// the number of workspaces, or 0 if workspaces are not supported
#[doc(alias = "gdk_x11_screen_get_number_of_desktops")]
#[doc(alias = "get_number_of_desktops")]
pub fn number_of_desktops(&self) -> u32 {
unsafe { ffi::gdk_x11_screen_get_number_of_desktops(self.to_glib_none().0) }
}
/// Returns the index of a [`X11Screen`][crate::X11Screen].
///
/// # Returns
///
/// the position of @self among the screens
/// of its display
#[doc(alias = "gdk_x11_screen_get_screen_number")]
#[doc(alias = "get_screen_number")]
pub fn screen_number(&self) -> i32 {
unsafe { ffi::gdk_x11_screen_get_screen_number(self.to_glib_none().0) }
}
/// Returns the name of the window manager for @self.
///
/// # Returns
///
/// the name of the window manager screen @self, or
/// "unknown" if the window manager is unknown. The string is owned by GDK
/// and should not be freed.
#[doc(alias = "gdk_x11_screen_get_window_manager_name")]
#[doc(alias = "get_window_manager_name")]
pub fn window_manager_name(&self) -> glib::GString {
unsafe {
from_glib_none(ffi::gdk_x11_screen_get_window_manager_name(
self.to_glib_none().0,
))
}
}
/// This function is specific to the X11 backend of GDK, and indicates
/// whether the window manager supports a certain hint from the
/// [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec) specification.
///
/// When using this function, keep in mind that the window manager
/// can change over time; so you shouldn’t use this function in
/// a way that impacts persistent application state. A common bug
/// is that your application can start up before the window manager
/// does when the user logs in, and before the window manager starts
/// gdk_x11_screen_supports_net_wm_hint() will return [`false`] for every property.
/// You can monitor the window_manager_changed signal on [`X11Screen`][crate::X11Screen] to detect
/// a window manager change.
/// ## `property_name`
/// name of the WM property
///
/// # Returns
///
/// [`true`] if the window manager supports @property
#[doc(alias = "gdk_x11_screen_supports_net_wm_hint")]
pub fn supports_net_wm_hint(&self, property_name: &str) -> bool {
unsafe {
from_glib(ffi::gdk_x11_screen_supports_net_wm_hint(
self.to_glib_none().0,
property_name.to_glib_none().0,
))
}
}
#[doc(alias = "window-manager-changed")]
pub fn connect_window_manager_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn window_manager_changed_trampoline<F: Fn(&X11Screen) + 'static>(
this: *mut ffi::GdkX11Screen,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"window-manager-changed".as_ptr() as *const _,
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
window_manager_changed_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}