XScreenSaverGetRegistered

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
XScreenSaver(3x)					     XScreenSaver(3x)



NAME
       XScreenSaver - X11 Screen Saver extension client library

SYNOPSIS
       #include <X11/extension/scrnsaver.h>

       typedef struct {
	   Window window;		 /∗ screen saver window */
	   int state;			 /∗ ScreenSaver{Off,On,Disabled} */
	   int kind;			 /∗ ScreenSaver{Blanked,Internal,External} */
	   unsigned long til_or_since;	 /∗ milliseconds */
	   unsigned long idle;		 /∗ milliseconds */
	   unsigned long event_mask;	 /∗ events */
       } XScreenSaverInfo;

       typedef struct {
	   int type;		   /∗ of event */
	   unsigned long serial;   /∗ # of last request processed by server */
	   Bool send_event;	   /∗ true if this came frome a SendEvent request */
	   Display *display;	   /∗ Display the event was read from */
	   Window window;	   /∗ screen saver window */
	   Window root;		   /∗ root window of event screen */
	   int state;		   /∗ ScreenSaver{Off,On,Cycle} */
	   int kind;		   /∗ ScreenSaver{Blanked,Internal,External} */
	   Bool forced;		   /∗ extents of new region */
	   Time time;		   /∗ event timestamp */
       } XScreenSaverNotifyEvent;

       Bool  XScreenSaverQueryExtension(Display	 *dpy,	int *event_basep, int
	      *error_basep);

       Status XScreenSaverQueryVersion(Display *dpy, int *major_versionp, int
	      *minor_versionp);

       XScreenSaverInfo *XScreenSaverAllocInfo(void);

       Status XScreenSaverQueryInfo(Display *dpy, Drawable drawable, XScreen-
	      SaverInfo *saver_info);

       void XScreenSaverSelectInput(Display *dpy, Drawable drawable, unsigned
	      long mask);

       void XScreenSaverSetAttributes(Display *dpy, Drawable drawable, int x,
	      int y, unsigned int width, unsigned int  height,	unsigned  int
	      border_width,  int  depth,  unsigned int class, Visual *visual,
	      unsigned long valuemask, XSetWindowAttributes *attributes);

       void XScreenSaverUnsetAttributes(Display *dpy, Drawable drawable);

       void XScreenSaverSaverRegister(Display *dpy, int screen, XID xid, Atom
	      type);

       Status XScreenSaverUnregister(Display *dpy, int screen);

       Status  XScreenSaverGetRegistered(Display  *dpy, int screen, XID *xid,
	      Atom *type);


DESCRIPTION
       The X Window System provides support for changing the image on a	 dis-
       play  screen after a user-settable period of inactivity to avoid burn-
       ing the cathode	ray  tube  phosphors.	However,  no  interfaces  are
       provided for the user to control the image that is drawn.  This exten-
       sion allows an external ‘‘screen saver’’ client	to  detect  when  the
       alternate image is to be displayed and to provide the graphics.

       Current	X  server implementations typically provide at least one form
       of ‘‘screen saver’’ image.  Historically, this has been a copy of  the
       X logo drawn against the root background pattern.  However, many users
       have asked for the mechanism to allow them to write screen saver	 pro-
       grams  that  provide  capabilities  similar to those provided by other
       window systems.	In particular, such users often wish to	 be  able  to
       display corporate logos, instructions on how to reactivate the screen,
       and automatic screen-locking utilities.	 This  extension  provides  a
       means for writing such clients.

   Assumptions
       This  extension	exports	 the  notion of a special screen saver window
       that is mapped above all other windows on a display.  This window  has
       the  override-redirect  attribute  set  so  that	 it is not subject to
       manipulation by the window manager.  Furthermore, the X identifier for
       the window is never returned by QueryTree requests on the root window,
       so it is typically not visible to other clients.

       XScreenSaverQueryExtension returns True if the XScreenSaver  extension
       is  available  on the given display.  A client must call XScreenSaver-
       QueryExtension before calling any other XScreenSaver function in order
       to  negotiate a compatible protocol version; otherwise the client will
       get undefined behavior (XScreenSaver may or may not work).

       If the extension is supported, the event number for  ScreenSaverNotify
       events  is  returned  in the value pointed to by event_base.  Since no
       additional errors are  defined  by  this	 extension,  the  results  of
       error_base are not defined.

       XScreenSaverQueryVersion	 returns  True	if the request succeeded; the
       values of the major and	minor  protocol	 versions  supported  by  the
       server are returned in major_versionp and minor_versionp .

       XScreenSaverAllocInfo allocates and returns an XScreenSaverInfo struc-
       ture for use in calls to XScreenSaverQueryInfo.	 All  fields  in  the
       structure  are  initialized to zero.  If insufficient memory is avail-
       able, NULL is returned.	The results of this routine can	 be  released
       using XFree.

       XScreenSaverQueryInfo  returns  information about the current state of
       the screen server in saver_info and a non-zero value is returned.   If
       the  extension  is  not	supported, saver_info is not changed and 0 is
       returned.
       The state field specifies whether or not the screen saver is currently
       active and how the til-or-since value should be interpreted:

       Off The	screen	is  not currently being saved; til-or-since specifies
	   the number of milliseconds until the screen saver is	 expected  to
	   activate.

       On  The	screen	is  currently being saved; til-or-since specifies the
	   number of milliseconds since the screen saver activated.

       Disabled
	   The screen saver is currently disabled; til-or-since is zero.
	   The kind field specifies the mechanism that	either	is  currently
	   being used or would have been were the screen being saved:

       Blanked
	   The video signal to the display monitor was disabled.

       Internal
	   A  server-dependent,	 built-in  screen  saver image was displayed;
	   either no client had set the screen saver window attributes	or  a
	   different  client  had  the	server	grabbed when the screen saver
	   activated.

       External
	   The screen saver window was mapped with attributes set by a client
	   using the ScreenSaverSetAttributes request.

       The  idle  field	 specifies  the number of milliseconds since the last
       input was received from the user on any of the input devices.
       The event-mask field specifies which, if any, screen saver events this
       client has requested using ScreenSaverSelectInput.

       XScreenSaverSelectInput	asks  that events related to the screen saver
       be generated for this client.  If no bits are set in event-mask,	 then
       no  events  will be generated.  Otherwise, any combination of the fol-
       lowing bits may be set:

       ScreenSaverNotify
	       If this bit is set,  ScreenSaverNotify  events  are  generated
	       whenever the screen saver is activated or deactivated.

       ScreenSaverCycle
	       If  this	 bit  is  set, ScreenSaverNotify events are generated
	       whenever the screen saver cycle interval passes.

       XScreenSaverSetAttributes sets the attributes to be used the next time
       the  external  screen saver is activated.  If another client currently
       has the attributes set, a BadAccess error is generated and the request
       is ignored.
       Otherwise, the specified window attributes are checked as if they were
       used in a core CreateWindow request whose parent	 is  the  root.	  The
       override-redirect  field	 is  ignored as it is implicitly set to True.
       If the window attributes result in an error according to the rules for
       CreateWindow, the request is ignored.
       Otherwise,  the attributes are stored and will take effect on the next
       activation that occurs when the	server	is  not	 grabbed  by  another
       client.	 Any  resources specified for the background-pixmap or cursor
       attributes may be freed immediately.  The server is free to  copy  the
       background-pixmap  or cursor resources or to use them in place; there-
       fore, the effect of changing the contents of those resources is	unde-
       fined.	If  the	 specified  colormap no longer exists when the screen
       saver activates, the parent’s colormap is used instead.	If no  errors
       are  generated  by  this	 request,  any	previous  screen saver window
       attributes set by this client are released.
       When the screen saver next activates and the server is not grabbed  by
       another	client, the screen saver window is created, if necessary, and
       set to the specified attributes and events  are	generated  as  usual.
       The  colormap  associated  with	the screen saver window is installed.
       Finally, the screen saver window is mapped.
       The window remains mapped and at the top of the stacking	 order	until
       the  screen saver is deactivated in response to activity on any of the
       user input devices, a ForceScreenSaver request with a value of  Reset,
       or any request that would cause the window to be unmapped.
       If  the	screen saver activates while the server is grabbed by another
       client, the internal saver mechanism is	used.	The  ForceScreenSaver
       request	may be used with a value of Active to deactivate the internal
       saver and activate the external saver.
       If the screen saver client’s connection to the server is broken	while
       the screen saver is activated and the client’s close down mode has not
       been RetainPermanent or RetainTemporary, the current screen  saver  is
       deactivated and the internal screen saver is immediately activated.
       When  the screen saver deactivates, the screen saver window’s colormap
       is uninstalled and the window is unmapped (except as described below).
       The  screen  saver XID is disassociated with the window and the server
       may, but is not required to, destroy the window along with  any	chil-
       dren.
       When  the screen saver is being deactivated and then immediately reac-
       tivated (such as when switching screen savers), the server  may	leave
       the  screen  saver  window mapped (typically to avoid generating expo-
       sures).

       XScreenSaverUnsetAttributes instructs the server to discard any previ-
       ous screen saver window attributes set by this client.

       XScreenSaverRegister  stores  the  given	 XID  in the _SCREEN_SAVER_ID
       property (of the given type) on	the  root  window  of  the  specified
       screen.	 It  returns zero if an error is encountered and the property
       is not changed, otherwise it returns non-zero.

       XScreenSaverUnregister removes any _SCREEN_SAVER_ID from the root win-
       dow  of	the specified screen.  It returns zero if an error is encoun-
       tered and the property is changed, otherwise it returns non-zero.

       XScreenSaverGetRegistered returns the  XID  and	type  stored  in  the
       _SCREEN_SAVER_ID	 property on the root window of the specified screen.
       It returns zero if an error is encountered or if the property does not
       exist  or is not of the correct format; otherwise it returns non-zero.

ERRORS
       XScreenSaverSelectInput,	  XScreenSaverQueryInfo,   XScreenSaverSetAt-
       tributes	 and  XScreenSaverUnsetAttributes will generate a BadDrawable
       error if drawable is not a valid drawable identifier.   If  any	unde-
       fined  bits  are	 set  in event-mask, a BadValue error is generated by
       XScreenSaverSelectInput .


SEE ALSO
       X(7x)

AUTHORS
       Jim Fulton and Keith Packard.

STABILITY
       This API is considered as experimental.	The Xss library	 major	revi-
       sion  may be incremented whenever incompatible changes are done to the
       API without notice.  Use with care.



X.Org				Version 6.8.2		     XScreenSaver(3x)