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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
// 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::X11Visual;
use glib::object::ObjectType as ObjectType_;
use glib::signal::connect_raw;
use glib::signal::SignalHandlerId;
use glib::translate::*;
use std::boxed::Box as Box_;
use std::fmt;
use std::mem::transmute;
use x11::xlib;
glib::wrapper! {
///
///
/// # Implements
///
/// [`trait@gdk::prelude::ScreenExt`]
#[doc(alias = "GdkX11Screen")]
pub struct X11Screen(Object<ffi::GdkX11Screen, ffi::GdkX11ScreenClass>) @extends gdk::Screen;
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) }
}
/// Gets the XID of the specified output/monitor.
/// If the X server does not support version 1.2 of the RANDR
/// extension, 0 is returned.
/// ## `monitor_num`
/// number of the monitor, between 0 and gdk_screen_get_n_monitors (screen)
///
/// # Returns
///
/// the XID of the monitor
#[doc(alias = "gdk_x11_screen_get_monitor_output")]
#[doc(alias = "get_monitor_output")]
pub fn monitor_output(&self, monitor_num: i32) -> xlib::XID {
unsafe { ffi::gdk_x11_screen_get_monitor_output(self.to_glib_none().0, monitor_num) }
}
/// 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 [`gdk::Screen`][crate::gdk::Screen].
///
/// # 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) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::gdk_x11_screen_get_window_manager_name(
self.to_glib_none().0,
))
}
}
/// Looks up the [`gdk::Visual`][crate::gdk::Visual] for a particular screen and X Visual ID.
/// ## `xvisualid`
/// an X Visual ID.
///
/// # Returns
///
/// the [`gdk::Visual`][crate::gdk::Visual] (owned by the screen
/// object), or [`None`] if the visual ID wasn’t found.
#[doc(alias = "gdk_x11_screen_lookup_visual")]
pub fn lookup_visual(&self, xvisualid: xlib::VisualID) -> Option<X11Visual> {
unsafe {
from_glib_none(ffi::gdk_x11_screen_lookup_visual(
self.to_glib_none().0,
xvisualid,
))
}
}
/// 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
/// [`supports_net_wm_hint()`][Self::supports_net_wm_hint()] will return [`false`] for every property.
/// You can monitor the window_manager_changed signal on [`gdk::Screen`][crate::gdk::Screen] to detect
/// a window manager change.
/// ## `property`
/// a property atom.
///
/// # 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: &gdk::Atom) -> bool {
unsafe {
from_glib(ffi::gdk_x11_screen_supports_net_wm_hint(
self.to_glib_none().0,
property.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 _,
b"window-manager-changed\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
window_manager_changed_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}
impl fmt::Display for X11Screen {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("X11Screen")
}
}