AppleWM(3)
NAME
AppleWM - Apple rootless window management extension.
SYNTAX
#include <X11/extensions/applewm.h>
Bool XAppleWMQueryExtension (Display *dpy,
int *event_basep, int *error_basep);
Status XAppleWMQueryVersion (Display *dpy,
int *major_versionp, int *minor_versionp);
Bool XAppleWMDisableUpdate (Display *dpy, int screen);
Bool XAppleWMReenableUpdate (Display *dpy, int screen);
Bool XAppleWMSelectInput (Display *dpy, unsigned long mask);
Bool XAppleWMSetWindowMenu (Display *dpy, int nitems,
const char **items);
Bool XAppleWMSetWindowMenuWithShortcuts (Display *dpy,
int nitems, const char **items,
const char *shortcuts);
Bool XAppleWMSetWindowMenuCheck (Display *dpy, int index);
Bool XAppleWMSetFrontProcess (Display *dpy);
Bool XAppleWMSetWindowLevel (Display *dpy, Window window,
int level);
Bool XAppleWMSetCanQuit (Display *dpy, Bool state);
Bool XAppleWMFrameGetRect (Display *dpy,
unsigned int frame_class,
unsigned int frame_rect,
short inner_x, short inner_y,
short inner_w, short inner_h,
short outer_x, short outer_y,
short outer_w, short outer_h,
short *ret_x, short *ret_y,
short *ret_w, short *ret_h);
unsigned int XAppleWMFrameHitTest (Display *dpy,
unsigned int frame_class,
short point_x, short point_y,
short inner_x, short inner_y,
short inner_w, short inner_h,
short outer_x, short outer_y,
short outer_w, short outer_h);
Bool XAppleWMFrameDraw (Display *dpy, int screen,
Window window,
unsigned int frame_class,
unsigned int frame_attr,
short inner_x, short inner_y,
short inner_w, short inner_h,
short outer_x, short outer_y,
short outer_w, short outer_h,
unsigned int title_length,
const unsigned char *title_bytes);
ARGUMENTS
dpy Specifies the connection to the X server.
screen Specifies which screen.
mask Mask of event types the client is interested in.
window Specifies which window.
level Specifies the window level.
frame_class
Specifies the class of window frame decoration.
frame_rect
Specifies which rectangle to return from the window frame
decoration.
frame_attr
A mask specifying the attributes of the window frame decora-
tion.
inner_x,inner_y,inner_w,inner_h
Rectangle of the window content inside the window frame deco-
ration.
outer_x,outer_y,outer_w,outer_h
Rectangle of the outer border of the window frame decoration.
point_x,point_y
Specifies the coordinates of the mouse up event.
DATATYPES
Events
typedef struct {
int type; * of event *
unsigned long serial; * # of last request processed by server *
Bool send_event; * true if came from a SendEvent request *
Display *display; * Display the event was read from *
Window window; * window of event *
Time time; * server timestamp when event happened *
int kind; * subtype of event *
int arg;
} XAppleWMNotifyEvent;
XAppleWMNotifyEvent is sent to a client who has requested notification
of AppleWM events with XAppleWMSelectInput.
Event types:
#define AppleWMControllerNotify 0
#define AppleWMActivationNotify 1
#define AppleWMPasteboardNotify 2
Event masks:
#define AppleWMControllerNotifyMask (1L << 0)
#define AppleWMActivationNotifyMask (1L << 1)
#define AppleWMPasteboardNotifyMask (1L << 2)
Kinds of ControllerNotify events:
#define AppleWMMinimizeWindow 0
#define AppleWMZoomWindow 1
#define AppleWMCloseWindow 2
#define AppleWMBringAllToFront 3
#define AppleWMHideWindow 4
#define AppleWMHideAll 5
#define AppleWMShowAll 6
#define AppleWMWindowMenuItem 9
#define AppleWMWindowMenuNotify 10
#define AppleWMNextWindow 11
#define AppleWMPreviousWindow 12
Kinds of ActivationNotify events:
#define AppleWMIsActive 0
#define AppleWMIsInactive 1
Kinds of PasteboardNotify events:
#define AppleWMCopyToPasteboard 0
Window Parameters
Window level ids for XAppleWMSetWindowLevel:
#define AppleWMWindowLevelNormal 0
#define AppleWMWindowLevelFloating 1
#define AppleWMWindowLevelTornOff 2
#define AppleWMWindowLevelDock 3
#define AppleWMWindowLevelDesktop 4
#define AppleWMNumWindowLevels 5
Values for frame_rect argument to XAppleWMFrameGetRect:
#define AppleWMFrameRectTitleBar 1
#define AppleWMFrameRectTracking 2
#define AppleWMFrameRectGrowBox 3
Window frame classes:
#define AppleWMFrameClassDocument 1 << 0
#define AppleWMFrameClassDialog 1 << 1
#define AppleWMFrameClassModalDialog 1 << 2
#define AppleWMFrameClassSystemModalDialog 1 << 3
#define AppleWMFrameClassUtility 1 << 4
#define AppleWMFrameClassToolbar 1 << 5
#define AppleWMFrameClassMenu 1 << 6
#define AppleWMFrameClassSplash 1 << 7
#define AppleWMFrameClassBorderless 1 << 8
Window frame attributes:
#define AppleWMFrameActive 0x0001
#define AppleWMFrameUrgent 0x0002
#define AppleWMFrameTitle 0x0004
#define AppleWMFramePrelight 0x0008
#define AppleWMFrameShaded 0x0010
#define AppleWMFrameCloseBox 0x0100
#define AppleWMFrameCollapseBox 0x0200
#define AppleWMFrameZoomBox 0x0400
#define AppleWMFrameAnyBox 0x0700
#define AppleWMFrameCloseBoxClicked 0x0800
#define AppleWMFrameCollapseBoxClicked 0x1000
#define AppleWMFrameZoomBoxClicked 0x2000
#define AppleWMFrameAnyBoxClicked 0x3800
#define AppleWMFrameGrowBox 0x4000
DESCRIPTION
AppleWM is a simple library designed to interface with the Apple-WM
extension. This extension allows X window managers to better interact
with the Mac OS X Aqua user interface when running X11 in a rootless
mode.
A more complete description will be forthcoming eventually.
FUNCTIONS
XAppleWMDisableUpdate causes any updates to the windows on the screen
to be queued until updates are reenabled with XAppleWMReenableUpdate.
This is useful to avoid intermediate redraws to the screen if a number
of changes are going to be made at once. Updates should only be dis-
abled temporarily while drawing to a window. These calls may be nested
and each call to XAppleWMDisableUpdate must be paired with a subsequent
call to XAppleWMReenableUpdate. Updating is not reenabled until the
last unnested call to XAppleWMReenableUpdate. Disabling updates applies
to window content; however, it is implementation dependent whether win-
dow size and position changes are disabled as well.
XAppleWMSelectInput is used to request that a client receive notifica-
tion of the AppleWM events listed above. The event mask specifies the
event types the client is interested in receiving. Passing an event
mask of 0 stops notification of events.
XAppleWMSetWindowMenu and XAppleWMSetWindowMenuWithShortcuts set the
list of windows displayed in the X server's "Window" menu in the Aqua
menu bar. Other items may be listed in this menu by the X server, but a
part of this menu is set aside for use by the Apple-WM extension. This
is intended to be used to set a list of important top-level X11 win-
dows.
One item of the X server's "Window" menu can have a checkmark beside it
to indicate it is the active or front most window. XAppleWMSetWindow-
MenuCheck can be used to set the item number to put a checkmark beside.
XAppleWMSetFrontProcess directs the X server to make itself the front
most application among all the other Mac OS X applications. This causes
X11 windows to move above other applications' windows and for the X
server to start receiving keyboard and mouse events.
Windows can be placed into different Aqua window levels with XAppleWM-
SetWindowLevel. The stacking of window levels takes precedence over the
stacking of windows within a level. Thus the bottom window in a level
will obscure even the top most window of a lower window level. By
default all windows are placed in the lowest window level, AppleWMWin-
dowLevelNormal. When a window is moved to a new level, it is ordered in
front of all of its peers at the new level. Note, X11 does not have the
concept of window levels and this function does not change the X11 win-
dow order. The result of trying to reorder an X11 window above another
window of higher level is undefined. This should probably be changed.
By default, the X server will ask for confirmation whenever the user
requests that it quit from the Aqua UI. XAppleWMSetCanQuit can be used
to change this behavior. If a state of TRUE is passed, the X server
will quit without confirmation when requested. If FALSE is passed, the
default behavior is used.
XAppleWMFrameDraw can be used to decorate a top-level window with the
standard Aqua window frame and widgets. The frame_class controls the
overall look of the window frame and frame_attr specifies the details
of how the various UI elements should be drawn. The dimensions of the
X11 window content are passed as the inner_* rectangle and the dimen-
sions of the Aqua window frame are passed as the outer_* rectangle.
XAppleWMFrameGetRect is used to calculate the size of the outer rectan-
gle from the size of the window content, which is being reparented.
XAppleWMFrameGetRect returns a rectangle that encloses an element of
the window frame decoration. The frame_rect argument specifies the
element of interest. The inner_* and outer_* rectangles (as described
above) specify the window geometry. If AppleWMFrameRectTitleBar is
passed for frame_rect, the inner_* parameters are ignored. The returned
rectangle has the dimensions of the outer_* rectangle except that its
height is equal to the constant title bar height for the specified
frame_class. The proper outer rectangle for a given window content size
is the union of inner rectangle and the title bar rectangle. The
AppleWMFrameRectTracking and AppleWMFrameRectGrowBox rectangles are
primarily intended to be used by the window manager to determine the
correct placement for child windows to receive events. The tracking
rectangle is the area of the window containing the close, collapse and
zoom boxes. Typically when the cursor is over this area, the window
manager will highlight the close, collapse, and zoom buttons to conform
to the standard Aqua interface.
If a mouse up or down event is received in the tracking rectangle, XAp-
pleWMFrameHitTest is used to determine which button was clicked. XAp-
pleWMFrameHitTest returns AppleWMFrameCloseBox, AppleWMFrameCollapse-
Box, or AppleWMFrameZoomBox to indicate which button was clicked. If no
button was clicked, 0 will be returned.
Other functions include: XAppleWMQueryExtension, which returns the
event and error base codes and XAppleWMQueryVersion, which returns the
current version of the extension. (This information is cached by the
library.)
RESTRICTIONS
AppleWM is only intended to be used on Mac OS X when running a rootless
X server.
__vendorversion__ APPLEWM(__libmansuffix__)
Man(1) output converted with
man2html