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