1 // x11-rs: Rust bindings for X11 libraries 2 // The X11 libraries are available under the MIT license. 3 // These bindings are public domain. 4 5 use super::xlib::{ 6 Atom, Bool, Display, Drawable, Status, Time, Visual, Window, XEvent, XSetWindowAttributes, XID, 7 }; 8 use std::os::raw::{c_int, c_uint, c_ulong}; 9 10 // 11 // functions 12 // 13 14 x11_link! { Xss, xscrnsaver, ["libXss.so.2", "libXss.so"], 11, 15 pub fn XScreenSaverQueryExtension (_1: *mut Display, _2: *mut c_int, _3: *mut c_int) -> Bool, 16 pub fn XScreenSaverQueryVersion (_1: *mut Display, _2: *mut c_int, _3: *mut c_int) -> Status, 17 pub fn XScreenSaverAllocInfo () -> *mut XScreenSaverInfo, 18 pub fn XScreenSaverQueryInfo (_1: *mut Display, _2: Drawable, _3: *mut XScreenSaverInfo) -> Status, 19 pub fn XScreenSaverSelectInput (_1: *mut Display, _2: Drawable, _3: c_ulong) -> (), 20 pub fn XScreenSaverSetAttributes (_1: *mut Display, _2: Drawable, _3: c_int, _4: c_int, _5: c_uint, _6: c_uint, _7: c_uint, _8: c_int, _9: c_uint, _10: *mut Visual, _11: c_ulong, _12: *mut XSetWindowAttributes) -> (), 21 pub fn XScreenSaverUnsetAttributes (_1: *mut Display, _2: Drawable) -> (), 22 pub fn XScreenSaverRegister (_1: *mut Display, _2: c_int, _3: XID, _4: Atom) -> Status, 23 pub fn XScreenSaverUnregister (_1: *mut Display, _2: c_int) -> Status, 24 pub fn XScreenSaverGetRegistered (_1: *mut Display, _2: c_int, _3: *mut XID, _4: *mut Atom) -> Status, 25 pub fn XScreenSaverSuspend (_1: *mut Display, _2: Bool) -> (), 26 variadic: 27 globals: 28 } 29 30 // 31 // types 32 // 33 34 #[derive(Debug, Clone, Copy, PartialEq)] 35 #[repr(C)] 36 pub struct XScreenSaverInfo { 37 pub window: Window, 38 pub state: c_int, 39 pub kind: c_int, 40 pub til_or_since: c_ulong, 41 pub idle: c_ulong, 42 pub eventMask: c_ulong, 43 } 44 45 // 46 // event structures 47 // 48 49 #[derive(Debug, Clone, Copy, PartialEq)] 50 #[repr(C)] 51 pub struct XScreenSaverNotifyEvent { 52 pub type_: c_int, 53 pub serial: c_ulong, 54 pub send_event: Bool, 55 pub display: *mut Display, 56 pub window: Window, 57 pub root: Window, 58 pub state: c_int, 59 pub kind: c_int, 60 pub forced: Bool, 61 pub time: Time, 62 } 63 64 event_conversions_and_tests! { 65 xss_notify: XScreenSaverNotifyEvent, 66 } 67 68 // 69 // constants 70 // 71 72 pub const ScreenSaverName: &str = "MIT-SCREEN-SAVER"; 73 pub const ScreenSaverPropertyName: &str = "_MIT_SCREEN_SAVER_ID"; 74 75 pub const ScreenSaverNotifyMask: c_ulong = 0x00000001; 76 pub const ScreenSaverCycleMask: c_ulong = 0x00000002; 77 78 pub const ScreenSaverMajorVersion: c_int = 1; 79 pub const ScreenSaverMinorVersion: c_int = 1; 80 81 pub const ScreenSaverOff: c_int = 0; 82 pub const ScreenSaverOn: c_int = 1; 83 pub const ScreenSaverCycle: c_int = 2; 84 pub const ScreenSaverDisabled: c_int = 3; 85 86 pub const ScreenSaverBlanked: c_int = 0; 87 pub const ScreenSaverInternal: c_int = 1; 88 pub const ScreenSaverExternal: c_int = 2; 89 90 pub const ScreenSaverNotify: c_int = 0; 91 pub const ScreenSaverNumberEvents: c_int = 1; 92