Blame man/Xss.man

Packit 0bec48
.\"
Packit 0bec48
.\" Copyright (C) 2003 The XFree86 Project, Inc.  All Rights Reserved.
Packit 0bec48
.\"
Packit 0bec48
.\" Permission is hereby granted, free of charge, to any person obtaining
Packit 0bec48
.\" a copy of this software and associated documentation files (the
Packit 0bec48
.\" "Software"), to deal in the Software without restriction, including
Packit 0bec48
.\" without limitation the rights to use, copy, modify, merge, publish,
Packit 0bec48
.\" distribute, sublicense, and/or sell copies of the Software, and to
Packit 0bec48
.\" permit persons to whom the Software is furnished to do so, subject to
Packit 0bec48
.\" the following conditions:
Packit 0bec48
.\"
Packit 0bec48
.\" The above copyright notice and this permission notice shall be
Packit 0bec48
.\" included in all copies or substantial portions of the Software.
Packit 0bec48
.\"
Packit 0bec48
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit 0bec48
.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit 0bec48
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
Packit 0bec48
.\" IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES
Packit 0bec48
.\" OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
Packit 0bec48
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
Packit 0bec48
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit 0bec48
.\"
Packit 0bec48
.\" Except as contained in this notice, the name of the XFree86 Project
Packit 0bec48
.\" shall not be used in advertising or otherwise to promote the sale, use
Packit 0bec48
.\" or other dealings in this Software without prior written authorization
Packit 0bec48
.\" from the XFree86 Project.
Packit 0bec48
.\"
Packit 0bec48
.TH XScreenSaver __libmansuffix__ __vendorversion__
Packit 0bec48
.SH NAME
Packit 0bec48
XScreenSaver \- X11 Screen Saver extension client library
Packit 0bec48
.SH SYNOPSIS
Packit 0bec48
.B #include <X11/extensions/scrnsaver.h>
Packit 0bec48
.PP
Packit 0bec48
.nf
Packit 0bec48
.ta .5i 2i
Packit 0bec48
typedef struct {
Packit 0bec48
    Window window;                /\(** screen saver window */
Packit 0bec48
    int state;                    /\(** ScreenSaver{Off,On,Disabled} */
Packit 0bec48
    int kind;                     /\(** ScreenSaver{Blanked,Internal,External} */
Packit 0bec48
    unsigned long til_or_since;   /\(** milliseconds */
Packit 0bec48
    unsigned long idle;           /\(** milliseconds */
Packit 0bec48
    unsigned long eventMask;      /\(** events */
Packit 0bec48
.br
Packit 0bec48
} XScreenSaverInfo;
Packit 0bec48
Packit 0bec48
typedef struct {
Packit 0bec48
    int type;               /\(** of event */
Packit 0bec48
    unsigned long serial;   /\(** # of last request processed by server */
Packit 0bec48
    Bool send_event;        /\(** true if this came frome a SendEvent request */
Packit 0bec48
    Display *display;       /\(** Display the event was read from */
Packit 0bec48
    Window window;          /\(** screen saver window */
Packit 0bec48
    Window root;            /\(** root window of event screen */
Packit 0bec48
    int state;              /\(** ScreenSaver{Off,On,Cycle} */
Packit 0bec48
    int kind;               /\(** ScreenSaver{Blanked,Internal,External} */
Packit 0bec48
    Bool forced;            /\(** extents of new region */
Packit 0bec48
    Time time;              /\(** event timestamp */
Packit 0bec48
.br
Packit 0bec48
} XScreenSaverNotifyEvent;
Packit 0bec48
.fi
Packit 0bec48
.HP
Packit 0bec48
Bool XScreenSaverQueryExtension(Display *\fIdpy\fP,
Packit 0bec48
int *\fIevent_base_return\fP, int *\fIerror_base_return\fP\^);
Packit 0bec48
.HP
Packit 0bec48
Status XScreenSaverQueryVersion(Display *\fIdpy\fP,
Packit 0bec48
int *\fImajor_version_return\fP, int *\fIminor_version_return\fP\^);
Packit 0bec48
.HP
Packit 0bec48
XScreenSaverInfo *XScreenSaverAllocInfo(\^void\^);
Packit 0bec48
.HP
Packit 0bec48
Status XScreenSaverQueryInfo(\^Display *\fIdpy\fP, Drawable \fIdrawable\fP,
Packit 0bec48
XScreenSaverInfo *\fIsaver_info\fP\^);
Packit 0bec48
.HP
Packit 0bec48
void XScreenSaverSelectInput(Display *\fIdpy\fP, Drawable \fIdrawable\fP,
Packit 0bec48
unsigned long \fImask\fp\^);
Packit 0bec48
.HP
Packit 0bec48
void XScreenSaverSetAttributes(Display *\fIdpy\fP, Drawable \fIdrawable\fP,
Packit 0bec48
int \fIx\fP,
Packit 0bec48
int \fIy\fP,
Packit 0bec48
unsigned int \fIwidth\fP,
Packit 0bec48
unsigned int \fIheight\fP,
Packit 0bec48
unsigned int \fIborder_width\fP,
Packit 0bec48
int \fIdepth\fP,
Packit 0bec48
unsigned int \fIclass\fP,
Packit 0bec48
Visual *\fIvisual\fP,
Packit 0bec48
unsigned long \fIvaluemask\fP,
Packit 0bec48
XSetWindowAttributes *\fIattributes\fP\^);
Packit 0bec48
.HP
Packit 0bec48
void XScreenSaverUnsetAttributes(Display *\fIdpy\fP,
Packit 0bec48
Drawable \fIdrawable\fP\^);
Packit 0bec48
.HP
Packit 0bec48
void XScreenSaverRegister(Display *\fIdpy\fP, int \fIscreen\fP,
Packit 0bec48
XID \fIxid\fP, Atom \fItype\fP\^);
Packit 0bec48
.HP
Packit 0bec48
Status XScreenSaverUnregister(Display *\fIdpy\fP, int \fIscreen\fP\^);
Packit 0bec48
.HP
Packit 0bec48
Status XScreenSaverGetRegistered(Display *\fIdpy\fP, int \fIscreen\fP,
Packit 0bec48
XID *\fIxid\fP, Atom *\fItype\fP\^);
Packit 0bec48
.HP
Packit 0bec48
void XScreenSaverSuspend(Display *\fIdpy\fP, Bool \fIsuspend\fP\^);
Packit 0bec48
.PP
Packit 0bec48
.SH DESCRIPTION
Packit 0bec48
The X Window System provides support for changing the image on a
Packit 0bec48
display screen after a user-settable period of inactivity to avoid
Packit 0bec48
burning the cathode ray tube phosphors.
Packit 0bec48
However, no interfaces are provided for the user to control the image
Packit 0bec48
that is drawn.
Packit 0bec48
This extension allows an external ``screen saver'' client to detect
Packit 0bec48
when the alternate image is to be displayed and to provide the
Packit 0bec48
graphics.
Packit 0bec48
.PP
Packit 0bec48
Current X server implementations typically provide at least one form of
Packit 0bec48
``screen saver'' image.
Packit 0bec48
Historically, this has been a copy of the X logo drawn against the
Packit 0bec48
root background pattern.
Packit 0bec48
However, many users have asked for the mechanism to allow them to
Packit 0bec48
write screen saver programs that provide capabilities similar to those
Packit 0bec48
provided by other window systems.
Packit 0bec48
In particular, such users often wish to be able to display corporate
Packit 0bec48
logos, instructions on how to reactivate the screen, and automatic
Packit 0bec48
screen-locking utilities.
Packit 0bec48
This extension provides a means for writing such clients.
Packit 0bec48
.SS Assumptions
Packit 0bec48
This extension exports the notion of a special screen saver window that is
Packit 0bec48
mapped above all other windows on a display.
Packit 0bec48
This window has the \fIoverride-redirect\fP attribute set so that it
Packit 0bec48
is not subject to manipulation by the window manager.
Packit 0bec48
Furthermore, the X identifier for the window is never returned by
Packit 0bec48
\fBQueryTree\fP requests on the root window, so it is typically not
Packit 0bec48
visible to other clients.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverQueryExtension
Packit 0bec48
returns
Packit 0bec48
.B True
Packit 0bec48
if the
Packit 0bec48
.I XScreenSaver
Packit 0bec48
extension is available on the given display.
Packit 0bec48
A client must call
Packit 0bec48
.B XScreenSaverQueryExtension
Packit 0bec48
before calling any other XScreenSaver function in order
Packit 0bec48
to negotiate a compatible protocol version; otherwise the client will
Packit 0bec48
get undefined behavior (XScreenSaver may or may not work).
Packit 0bec48
.PP
Packit 0bec48
If the extension is supported, the event number for
Packit 0bec48
.I ScreenSaverNotify
Packit 0bec48
events is returned in the value pointed to by \fIevent_base\fP.
Packit 0bec48
Since no additional errors are defined by this extension, the results
Packit 0bec48
of \fIerror_base\fP are not defined.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverQueryVersion
Packit 0bec48
returns
Packit 0bec48
.B True
Packit 0bec48
if the request succeeded; the values of the major and minor protocol
Packit 0bec48
versions supported by the server are returned in
Packit 0bec48
.I major_version_return
Packit 0bec48
and
Packit 0bec48
.I minor_version_return .
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverAllocInfo
Packit 0bec48
allocates and returns an \fBXScreenSaverInfo\fP structure
Packit 0bec48
for use in calls to \fBXScreenSaverQueryInfo\fP.
Packit 0bec48
All fields in the structure are initialized to zero.
Packit 0bec48
If insufficient memory is available, NULL is returned.
Packit 0bec48
The results of this routine can be released using \fIXFree\fP.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverQueryInfo
Packit 0bec48
returns information about the current state of the
Packit 0bec48
screen server in \fIsaver_info\fP and a non-zero value is
Packit 0bec48
returned.
Packit 0bec48
If the extension is not supported, \fIsaver_info\fP is not changed and 0
Packit 0bec48
is returned.
Packit 0bec48
.PP
Packit 0bec48
The \fIstate\fP field specifies whether or not the screen saver is currently
Packit 0bec48
active and how the \fItil-or-since\fP value should be interpreted:
Packit 0bec48
.TP 4
Packit 0bec48
.I Off
Packit 0bec48
The screen is not currently being saved; \fItil-or-since\fP
Packit 0bec48
specifies the number of milliseconds until the screen saver is expected to
Packit 0bec48
activate.
Packit 0bec48
.TP 4
Packit 0bec48
.I On
Packit 0bec48
The screen is currently being saved; \fItil-or-since\fP specifies
Packit 0bec48
the number of milliseconds since the screen saver activated.
Packit 0bec48
.TP 4
Packit 0bec48
.I Disabled
Packit 0bec48
The screen saver is currently disabled; \fItil-or-since\fP is zero.
Packit 0bec48
.PP
Packit 0bec48
The \fIkind\fP field specifies the mechanism that either is currently being
Packit 0bec48
used or would have been were the screen being saved:
Packit 0bec48
.TP 4
Packit 0bec48
.I Blanked
Packit 0bec48
The video signal to the display monitor was disabled.
Packit 0bec48
.TP 4
Packit 0bec48
.I Internal
Packit 0bec48
A server-dependent, built-in screen saver image was displayed; either no
Packit 0bec48
client had set the screen saver window attributes or a different client
Packit 0bec48
had the server grabbed when the screen saver activated.
Packit 0bec48
.TP 4
Packit 0bec48
.I External
Packit 0bec48
The screen saver window was mapped with attributes set by a
Packit 0bec48
client using the \fBScreenSaverSetAttributes\fP request.
Packit 0bec48
.PP
Packit 0bec48
The \fIidle\fP field specifies the number of milliseconds since the last
Packit 0bec48
input was received from the user on any of the input devices.
Packit 0bec48
.br
Packit 0bec48
The \fIevent-mask\fP field specifies which, if any, screen saver
Packit 0bec48
events this client has requested using \fBScreenSaverSelectInput\fP.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverSelectInput
Packit 0bec48
asks that events related to
Packit 0bec48
the screen saver be generated for this client.
Packit 0bec48
If
Packit 0bec48
no bits are set in \fIevent-mask\fP, then no events will be generated.
Packit 0bec48
Otherwise, any combination of the following bits may be set:
Packit 0bec48
.TP 8
Packit 0bec48
.B ScreenSaverNotify
Packit 0bec48
If this bit is set, \fBScreenSaverNotify\fP events are generated whenever
Packit 0bec48
the screen saver is activated or deactivated.
Packit 0bec48
.TP 8
Packit 0bec48
.B ScreenSaverCycle
Packit 0bec48
If this bit is set, \fBScreenSaverNotify\fP events are generated whenever
Packit 0bec48
the screen saver cycle interval passes.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverSetAttributes
Packit 0bec48
sets the attributes to be used
Packit 0bec48
the next time the external screen saver is activated.
Packit 0bec48
If another client currently has the attributes set,
Packit 0bec48
a BadAccess error is generated and the request is ignored.
Packit 0bec48
.br
Packit 0bec48
Otherwise, the specified window attributes are checked as if
Packit 0bec48
they were used in a core \fBCreateWindow\fP request whose
Packit 0bec48
parent is the root.
Packit 0bec48
The \fIoverride-redirect\fP field is ignored as it is implicitly set
Packit 0bec48
to True.
Packit 0bec48
If the window attributes result in an error according to the rules for
Packit 0bec48
\fBCreateWindow\fP, the request is ignored.
Packit 0bec48
.br
Packit 0bec48
Otherwise, the attributes are stored and will take effect on the next
Packit 0bec48
activation that occurs when the server is not grabbed by another client.
Packit 0bec48
Any resources specified for the
Packit 0bec48
\fIbackground-pixmap\fP or \fIcursor\fP attributes may be
Packit 0bec48
freed immediately.
Packit 0bec48
The server is free to copy the \fIbackground-pixmap\fP or \fIcursor\fP
Packit 0bec48
resources or to use them in place; therefore, the effect of changing
Packit 0bec48
the contents of those resources is undefined.
Packit 0bec48
If the specified \fIcolormap\fP no longer exists when the screen saver
Packit 0bec48
activates, the parent's colormap is used instead.
Packit 0bec48
If no errors are generated by this request, any previous screen saver
Packit 0bec48
window attributes set by this client are released.
Packit 0bec48
.br
Packit 0bec48
When the screen saver next activates and the server is not grabbed by
Packit 0bec48
another client, the screen saver window is
Packit 0bec48
created, if necessary, and set to the specified attributes and events
Packit 0bec48
are generated as usual.
Packit 0bec48
The colormap associated with the screen saver window is installed.
Packit 0bec48
Finally, the screen saver window is mapped.
Packit 0bec48
.br
Packit 0bec48
The window remains mapped and at the top of the stacking order
Packit 0bec48
until the screen saver is deactivated in response to activity on
Packit 0bec48
any of the user input devices, a \fBForceScreenSaver\fP request with
Packit 0bec48
a value of Reset, or any request that would cause the window to be
Packit 0bec48
unmapped.
Packit 0bec48
.br
Packit 0bec48
If the screen saver activates while the server is grabbed by another
Packit 0bec48
client, the internal saver mechanism is used.
Packit 0bec48
The \fBForceScreenSaver\fP request may be used with a value of Active
Packit 0bec48
to deactivate the internal saver and activate the external saver.
Packit 0bec48
.br
Packit 0bec48
If the screen saver client's connection to the server is broken
Packit 0bec48
while the screen saver is activated and the client's close down mode has not
Packit 0bec48
been RetainPermanent or RetainTemporary, the current screen saver
Packit 0bec48
is deactivated and the internal screen saver is immediately activated.
Packit 0bec48
.br
Packit 0bec48
When the screen saver deactivates, the screen saver window's colormap
Packit 0bec48
is uninstalled and the window is unmapped (except as described below).
Packit 0bec48
The screen saver XID is disassociated
Packit 0bec48
with the window and the server may, but is not required to,
Packit 0bec48
destroy the window along with any children.
Packit 0bec48
.br
Packit 0bec48
When the screen saver is being deactivated and then immediately
Packit 0bec48
reactivated (such as when switching screen savers), the server
Packit 0bec48
may leave the screen saver window mapped (typically to avoid
Packit 0bec48
generating exposures).
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverUnsetAttributes
Packit 0bec48
instructs the server to discard
Packit 0bec48
any previous screen saver window attributes set by this client.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverRegister
Packit 0bec48
stores the given \fIXID\fP in the \fB_SCREEN_SAVER_ID\fP
Packit 0bec48
property (of the given \fItype\fP) on the
Packit 0bec48
root window of the specified \fIscreen\fP.
Packit 0bec48
It returns zero if an error is encountered and the property is not
Packit 0bec48
changed, otherwise it returns non-zero.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverUnregister
Packit 0bec48
removes any \fB_SCREEN_SAVER_ID\fP from the
Packit 0bec48
root window of the specified \fIscreen\fP.
Packit 0bec48
It returns zero if an error is encountered and the property is
Packit 0bec48
changed, otherwise it returns non-zero.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverGetRegistered
Packit 0bec48
returns the \fIXID\fP and \fItype\fP stored in
Packit 0bec48
the \fB_SCREEN_SAVER_ID\fP property on the
Packit 0bec48
root window of the specified \fIscreen\fP.
Packit 0bec48
It returns zero if an error is encountered or if the property does not
Packit 0bec48
exist or is not of the correct format; otherwise it returns non-zero.
Packit 0bec48
.PP
Packit 0bec48
.B XScreenSaverSuspend
Packit 0bec48
temporarily suspends the screensaver and DPMS timer if \fIsuspend\fP
Packit 0bec48
is 'True', and restarts the timer if \fIsuspend\fP is 'False'.
Packit 0bec48
.br
Packit 0bec48
This function should be used by applications that don't want the
Packit 0bec48
screensaver or DPMS to become activated while they're for example in
Packit 0bec48
the process of playing a media sequence, or are otherwise continuously
Packit 0bec48
presenting visual information to the user while in a non-interactive
Packit 0bec48
state. This function is not intended to be called by an external
Packit 0bec48
screensaver application.
Packit 0bec48
.br
Packit 0bec48
If \fBXScreenSaverSuspend\fP is called multiple times with \fIsuspend\fP
Packit 0bec48
set to 'True', it must be called an equal number of times with
Packit 0bec48
\fIsuspend\fP set to 'False' in order for the screensaver timer to be
Packit 0bec48
restarted. This request has no affect if a client tries to resume the
Packit 0bec48
screensaver without first having suspended it.
Packit 0bec48
\fBXScreenSaverSuspend\fP can thus not be used by one client to resume
Packit 0bec48
the screensaver if it's been suspended by another client.
Packit 0bec48
.br
Packit 0bec48
If a client that has suspended the screensaver becomes disconnected from
Packit 0bec48
the X server, the screensaver timer will automatically be restarted, unless
Packit 0bec48
it's still suspended by another client. Suspending the screensaver timer
Packit 0bec48
doesn't prevent the screensaver from being forceably activated with the
Packit 0bec48
\fBForceScreenSaver\fP request, or a DPMS mode from being set with the
Packit 0bec48
\fBDPMSForceLevel\fP request.
Packit 0bec48
.br
Packit 0bec48
\fBXScreenSaverSuspend\fP also doesn't deactivate the screensaver or DPMS
Packit 0bec48
if either is active at the time the request to suspend them is received by
Packit 0bec48
the X server. But once they've been deactivated, they won't automatically
Packit 0bec48
be activated again, until the client has canceled the suspension.
Packit 0bec48
.SH "ERRORS"
Packit 0bec48
.B XScreenSaverSelectInput,
Packit 0bec48
.B XScreenSaverQueryInfo,
Packit 0bec48
.B XScreenSaverSetAttributes
Packit 0bec48
and
Packit 0bec48
.B XScreenSaverUnsetAttributes
Packit 0bec48
will generate a
Packit 0bec48
.I BadDrawable
Packit 0bec48
error if \fIdrawable\fP is not a valid drawable identifier.
Packit 0bec48
If any undefined bits are set in \fIevent-mask\fP,
Packit 0bec48
a BadValue error is generated by
Packit 0bec48
.B XScreenSaverSelectInput .
Packit 0bec48
.PP
Packit 0bec48
.SH AVAILABILITY
Packit 0bec48
\fBXScreenSaverSuspend\fP is available in version 1.1 and later versions
Packit 0bec48
of the X Screen Saver Extension. Version 1.1 was first released with
Packit 0bec48
X11R7.1.
Packit 0bec48
.PP
Packit 0bec48
.SH "SEE ALSO"
Packit 0bec48
X(__miscmansuffix__)
Packit 0bec48
.SH AUTHORS
Packit 0bec48
Jim Fulton and Keith Packard.
Packit 0bec48
.SH STABILITY
Packit 0bec48
This API is considered as experimental.
Packit 0bec48
The Xss library major revision may be incremented whenever
Packit 0bec48
incompatible changes are done to the API without notice.
Packit 0bec48
Use with care.