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
5use super::xlib::{
6 Atom, Bool, Display, Drawable, Status, Time, Visual, Window, XEvent, XSetWindowAttributes, XID,
7};
8use std::os::raw::{c_int, c_uint, c_ulong};
9
10//
11// functions
12//
13
14x11_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) -> (),
26variadic:
27globals:
28}
29
30//
31// types
32//
33
34#[derive(Debug, Clone, Copy, PartialEq)]
35#[repr(C)]
36pub 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)]
51pub 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
64event_conversions_and_tests! {
65 xss_notify: XScreenSaverNotifyEvent,
66}
67
68//
69// constants
70//
71
72pub const ScreenSaverName: &str = "MIT-SCREEN-SAVER";
73pub const ScreenSaverPropertyName: &str = "_MIT_SCREEN_SAVER_ID";
74
75pub const ScreenSaverNotifyMask: c_ulong = 0x00000001;
76pub const ScreenSaverCycleMask: c_ulong = 0x00000002;
77
78pub const ScreenSaverMajorVersion: c_int = 1;
79pub const ScreenSaverMinorVersion: c_int = 1;
80
81pub const ScreenSaverOff: c_int = 0;
82pub const ScreenSaverOn: c_int = 1;
83pub const ScreenSaverCycle: c_int = 2;
84pub const ScreenSaverDisabled: c_int = 3;
85
86pub const ScreenSaverBlanked: c_int = 0;
87pub const ScreenSaverInternal: c_int = 1;
88pub const ScreenSaverExternal: c_int = 2;
89
90pub const ScreenSaverNotify: c_int = 0;
91pub const ScreenSaverNumberEvents: c_int = 1;
92