7      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~portable, Haskell 98 experimentaldons@galois.comD 9A stack is a cursor onto a (possibly empty) window list. 6 The data structure tracks focus by construction, and 7 the master window is by convention the top-most item. > Focus operations will not reorder the list that results from ; flattening the cursor. The structure can be envisaged as:   +-- master: < '7' >  up | [ '2' ]  +--------- [ '3' ]  focus: < '4' >  dn +----------- [ '8' ] A  ; can be viewed as a list with a hole punched in it to make ' the focused position. Under the zipper/calculus view of such . structures, it is the differentiation of a [a], and integrating it + back has a natural implementation used in 0. "A structure for window geometries 2A workspace is just a tag, a layout, and a stack. 0Visible workspaces, and their Xinerama screens. .A cursor into a non-empty list of workspaces. BWe puncture the workspace list, producing a hole in the structure D used to track the currently focused workspace. The two other lists A that are produced are used to track those workspaces visible as > Xinerama screens, and those workspaces not visible anywhere.  currently focused workspace !,non-focused workspaces, visible in xinerama " workspaces not visible anywhere #floating windows $;this function indicates to catch that an error is expected %O(n);. Create a new stackset, of empty stacks, with given tags, 7 with physical screens whose descriptions are given by m. The  number of physical screens (length m) should be less than or D equal to the number of workspace tags. The first workspace in the  list will be current. NXinerama: Virtual workspaces are assigned to physical screens, starting at 0. &O(w)(. Set focus to the workspace with index 'i'. 3 If the index is out of range, return the original . EXinerama: If the workspace is not visible on any Xinerama screen, it F becomes the current screen. If it is in the visible list, it becomes  current. 'DSet focus to the given workspace. If that workspace does not exist L in the stackset, the original workspace is returned. If that workspace is  "B, then display that workspace on the current screen, and move the  current workspace to ". If that workspace is ! on another G screen, the workspaces of the current screen and the other screen are  swapped. (9Find the tag of the workspace visible on Xinerama screen sc.   if screen is out of bounds. The 3 function takes a default value, a function, and a , StackSet. If the current stack is Nothing,  returns the A default value. Otherwise, it applies the function to the stack, " returning the result. It is like  for the focused workspace. )*Apply a function, and a default value for , to modify the current stack. *6Apply a function to modify the current stack if it isn't empty, and we don't  want to empty it. +O(1)4. Extract the focused element of the current stack.  Return  that element, or  for an empty stack. ,O(n) . Flatten a   into a list. -O(n)- Flatten a possibly empty stack into a list. .O(n)<. Turn a list into a possibly empty stack (i.e., a zipper): D the first element of the list is current, and the rest of the list  is down. /O(n). ' filter p s' returns the elements of s such that p evaluates to  8. Order is preserved, and focus moves as described for D. 0O(s)9. Extract the stack on the current workspace, as a list. I The order of the stack is determined by the master window -- it will be B the head of the list. The implementation is given by the natural 8 integration of a one-hole list cursor, back to a list. 12O(1), O(w) on the wrapping case. @focusUp, focusDown. Move the window focus up or down the stack, ; wrapping if we reach the end. The wrapping should model a   on the current stack. The master window, and window order, & are unaffected by movement of focus. EswapUp, swapDown, swap the neighbour in the stack ordering, wrapping 6 if we reach the end. Again the wrapping model should  on  the current stack. 3456 Variants of 1 and 2 that work on a    rather than an entire .   6reverse a stack: up becomes down and down becomes up. 7'O(1) on current window, O(n) in general. Focus the window w, # and set its workspace as current. 8!Get a list of all screens in the . 9$Get a list of all workspaces in the . :!Get a list of all windows in the  in no particular order ;0Get the tag of the currently focused workspace. < Is the given tag present in the ? =%Rename a given tag if present in the . >AEnsure that a given set of workspace tags is present by renaming  existing workspaces and/%or creating new hidden workspaces as  necessary. ?,Map a function on all the workspaces in the . @)Map a function on all the layouts in the . AO(n). Is a window in the ? B'O(1) on current window, O(n) in general.  Return + the workspace tag of the given window, or   if the window is not in the . CO(n)<. (Complexity due to duplicate check). Insert a new element > into the stack, above the currently focused element. The new A element is given focus; the previously focused element is moved  down. DIf the element is already in the stackset, the original stackset is  returned unmodified. Semantics in Huet's paper is that insert doesn't move the cursor. 9 However, we choose to insert above, and move the focus. D'O(1) on current window, O(n) in general. Delete window w if it exists.  There are 4 cases to consider:  delete on an  workspace leaves it Nothing * otherwise, try to move focus to the down ( otherwise, try to move focus to the up  otherwise, you'#ve got an empty workspace, becomes  &Behaviour with respect to the master: B deleting the master window resets it to the newly focused window  otherwise, delete doesn't affect the master. EROnly temporarily remove the window from the stack, thereby not destroying special  information saved in the Stackset F@Given a window, and its preferred rectangle, set it as floating 4 A floating window should already be managed by the . G&Clear the floating status of a window HO(s)/. Set the master window to the focused window. O The old master window is swapped in the tiling order with the focused window. " Focus stays with the item moved. IO(s)/. Set the master window to the focused window. N The other windows are kept in order and shifted down on the stack, as if you ( just hit mod-shift-k a bunch of times. " Focus stays with the item moved. JO(s)". Set focus to the master window. KO(w)@. shift. Move the focused element of the current stack to stack  n?, leaving it as the focused element on that stack. The item is A inserted above the currently focused element on that workspace. # The actual focused workspace doesn't change. If there is no B element on the current stack, the original stackSet is returned. LO(n).. shiftWin. Searches for the specified window w on all workspaces ' of the stackSet and moves it to stack n, leaving it as the focused A element on that stack. The item is inserted above the currently $ focused element on that workspace. # The actual focused workspace doesn't change. If the window is not ; found in the stackSet, the original stackSet is returned.  @  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL@ !"# %&'(89:;+0,-.1256J7<=>AB?@CDE/34HI)*FGKL$@  !"# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL+not portable, uses cunning newtype derivingunstablespencerjanssen@gmail.comYMM9 are core messages that all layouts (especially stateful $ layouts) should consider handling. N*sent when xmonad is exiting or restarting O'sent when a layout becomes non-visible P$A wrapped value of some type in the R class. QRBased on ideas in /-An Extensible Dynamically-Typed Hierarchy of  Exceptions/5, Simon Marlow, 2006. Use extensible messages to the  X handler. 9User-extensible messages must be a member of this class. S$Every layout must be an instance of S, which defines E the basic layout operations along with a sensible default for each. Minimal complete definition:  T || ((U || V) && W), and  X || Y /You should also strongly consider implementing Z,  although it is not required. Note that any code which uses S methods should only  ever call T, X, and Z! In  other words, the only calls to U, Y , and other < such methods should be from the default implementations of  T, X$, and so on. This ensures that the C proper methods will be used, regardless of the particular methods  that any S instance chooses to define. T By default, T calls U if there are any  windows to be laid out, and W otherwise. Most  instances of S# probably do not need to implement  T3; it is only useful for layouts which wish to make  use of more of the  information (for example,  XMonad.Layout.PerWorkspace). UGiven a   & in which to place the windows, and a   > of windows, return a list of windows and their corresponding 8 Rectangles. If an element is not given a Rectangle by  U0, then it is not shown on screen. The order of < windows in this list should be the desired stacking order. 5Also possibly return a modified layout (by returning Just  newLayout3), if this layout needs to be modified (e.g. if it - keeps track of some sort of state). Return Nothing if the & layout does not need to be modified. (Layouts which do not need access to the ` monad ( , window A manager state, or configuration) and do not keep track of their  own state should implement V instead of U. VThis is a pure version of U, for cases where we  don't need access to the `# monad to determine how to lay out  the windows, and we don'$t need to modify the layout itself. WW& is called when there are no windows. XX performs message handling. If  X returns Nothing, then the layout did not 9 respond to the message and the screen is not refreshed.  Otherwise, X# returns an updated layout and the  screen is refreshed. (Layouts which do not need access to the ` monad to decide how % to handle messages should implement Y instead of  X. (this restricts the risk of error, and makes  testing much easier). Y<Respond to a message by (possibly) changing our layout, but A taking no other action. If the layout changes, the screen will  be refreshed. Z9This should be a human-readable string that is used when ; selecting layouts by name. The default implementation is  ), which is in some cases a poor default. [8An existential type that can hold any object that is in   and S. \]^_` The X monad,  and  transformers over  ; encapsulating the window manager configuration and state,  respectively. )Dynamic components may be retrieved with  , static components  with 8. With newtype deriving we get readers and state monads  instantiated on {z and  automatically. aThe    with screen dimensions bcdPhysical screen indices efVirtual workspace indices ghijk+Non focused windows border color. Default: "#dddddd" l'Focused windows border color. Default: "#ff0000" m-The preferred terminal application. Default: "xterm" nThe available layouts o.The action to run when a new window is opened p=Handle an X event, returns (All True) if the default handler E should also be run afterwards. mappend should be used for combining  event hooks in most cases. qThe list of workspaces' names rThe numlock modifier sthe mod modifier t4The key binding: a map from key presses and actions uThe mouse bindings vThe border width w6The action to perform when the windows set is changed x!The action to perform on startup y-Whether window entry events can change focus z5XConf, the (read-only) window manager configuration. {|the X11 display }initial user configuration ~the root window "border color of unfocused windows #border color of the focused window $a mapping of key presses to actions 'a mapping of button presses to actions $was refocus caused by mouse action? #position of the mouse according to % the event currently being processed ,XState, the (mutable) window manager state. workspace list the Set of mapped windows #the number of expected UnmapEvents Run the ` monad, given a chunk of `" monad code, and an initial state $ Return the result, and final state  Run in the `: monad, and in case of exception, and catch it and log it $ to stderr, and run the error case. HExecute the argument, catching all exceptions. Either this function or  : should be used at all callsites of user customized code. HSame as userCode but with a default argument to return instead of using " Maybe, provided for convenience. 5Run a monad action with the current display settings 0Run a monadic action with the current stack set ,True if the given window is the root window /Wrapper for the common case of atom internment Common non-predefined atoms  Using the \[3 as a witness, parse existentially wrapped windows  from a . !And now, unwrap a given, unknown R type, performing a (dynamic)  type check on the result. General utilities Lift an  action into the ` monad Lift an  action into the `% monad. If the action results in an  G exception, log the exception to stderr and continue normal execution. Ispawn. Launch an external application. Specifically, it double-forks and  runs the  you pass as a command to binsh. Like , but returns the  of the launched application <This is basically a map function, running a function in the ` monad on O each workspace with the output of that function being the modified workspace. Return the path to ~/.xmonad. 'recompile force' , recompile ~/.xmonad/ xmonad.hs when any of the  following apply:  force is  & the xmonad executable does not exist / the xmonad executable is older than xmonad.hs JThe -i flag is used to restrict recompilation to the xmonad.hs file only. +Compilation errors (if any) are logged to ~/.xmonad/xmonad.errors. If I GHC indicates failure with a non-zero exit code, an xmessage displaying  that file is spawned. . is returned if there are compilation errors. %Conditionally run an action, using a Maybe a to decide. %Conditionally run an action, using a ` event to decide A  for the `0 monad. Logs a string to stderr. The result may ( be found in your .xsession-errors file HIgnore SIGPIPE to avoid termination when a pipe is full, and SIGCHLD to C avoid zombie processes, and clean up any extant zombie processes. YMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Y`hgfdeabcz{|}~ijklmnopqrstuvwxySTUVWXYZ[\RPQMON_]^XMONNOPQQRSTUVWXYZTUVWXYZ[\\]^^_`abcbcdeefghijklmnopqrstuvwxyjklmnopqrstuvwxyz {|}~{|}~+not portable, Typeable deriving, mtl, posixunstablespencerjanssen@gmail.com!(Are we on the left or right sub-layout? EA layout that allows users to switch between various layout options. 'Messages to change the current layout. 5Mirror a layout, compute its 90 degree rotated form. ,The builtin tiling mode of xmonad. Supports ,  and  . @Default proportion of screen occupied by master pane (default: 1/2) >The default number of windows in the master pane (default: 1) APercent of screen to increment by when resizing panes (default: 3/100) ?Simple fullscreen mode. Renders the focused window fullscreen. 3Increase the number of clients in the master pane. $Change the size of the master pane. DCompute the positions for windows using the default two-pane tiling  algorithm. 6The screen is divided into two panes. All clients are B then partioned between these two panes. One pane, the master, by 3 convention has the least number of windows in it. frac=, what proportion of the screen to devote to the master area r(, the rectangle representing the screen nmaster+, the number of windows in the master pane n&, the total number of windows to tile Mirror a rectangle. The layout choice combinator @A small wrapper around handleMessage, as it is tedious to write  SomeMessage repeatedly.  GA smart constructor that takes some potential modifications, returns a N new structure if any fields have changed, and performs any necessary cleanup  on newly non-visible layouts. +not portable, Typeable deriving, mtl, posixunstabledons@cse.unsw.edu.au1Support for window size hints Window manager operations B manage. Add a new window to be managed in the current workspace.  Bring it into focus. EWhether the window is already managed, or not, it is mapped, has its % border set, and its event mask set. ?unmanage. A window no longer exists, remove it from the window $ list, on whatever workspace it is. /Kill the specified window. If we do kill it, we' ll get a  delete notify back from X. EThere are two ways to delete a window. Either just kill it, or if it B supports the delete protocol, send a delete event (e.g. firefox) #Kill the currently focused client. Jwindows. Modify the current window list with a pure function, and refresh GProduce the actual rectangle from a screen and a ratio on that screen. 'setWMState. set the WM_STATE property <hide. Hide a window by unmapping it, and setting Iconified. 7reveal. Show a window by mapping it and setting Normal 4 this is harmless if the window was already visible /The client events that xmonad is interested in ?Set some properties when we initially gain control of a window Crefresh. Render the currently visible workspaces, as determined by  the StackSet). Also, set focus to the focused window.  This is our view5 operation (MVC), in that it pretty prints our model  with X calls. FclearEvents. Remove all events of a given type from the event queue. CtileWindow. Moves and resizes w such that it fits inside the given " rectangle, including its border. Returns ; if the first rectangle is contained within, but not equal  to the second. HGiven a list of screens, remove all duplicated screens and screens that ( are entirely contained within another. ACleans the list of screens according to the rules documented for  nubScreens. =rescreen. The screen configuration may have changed (due to F xrandr), update the state and refresh the screen, and reset the gap. IsetButtonGrab. Tell whether or not to intercept clicks on a given window 9Set the focus to the window on top of the stack, or root Set focus explicitly to window w" if it is managed by us, or root.  This happens if X notices we'&ve moved the mouse (and perhaps moved  the mouse to a new screen). *Call X to set the keyboard focus details. Throw a message to the current S possibly modifying how we # layout the windows, then refresh. 3Send a message to all layouts, without refreshing. 0Send a message to a layout, without refreshing. 'Update the layout field of a workspace 1Set the layout of the currently viewed workspace #Return workspace visible on screen sc, or .  Apply an `= operation to the currently focused window, if there is one. % if window is under management by us 9Combinations of extra modifier masks we need to grab keys/ buttons for.  (numlock and capslock)  Strip numlock/capslock from a mask Get the ! value for a named color restart name resume5. Attempt to restart xmonad by executing the program  name. If resume is ), restart with the current window state. ( When executing another window manager, resume should be . Floating layer support >Given a window, find the screen it is located on, and compute / the geometry of that window wrt. that screen. ?Given a point, determine the screen (if any) that contains it. pointWithin x y r returns  if the (x, y) co-ordinate is within  r. <Make a tiled window floating, using its suggested rectangle Accumulate mouse motion events XXX comment me XXX comment me FGiven a window, build an adjuster function that will reduce the given # dimensions according to the window's border width and size hints. IReduce the dimensions if needed to comply to the given SizeHints, taking  window borders into account. BReduce the dimensions if needed to comply to the given SizeHints. XXX comment me WReduce the dimensions so their aspect ratio falls between the two given aspect ratios. EReduce the dimensions so they are a multiple of the size increments. CReduce the dimensions if they exceed the given maximum dimensions. 111+not portable, uses cunning newtype derivingunstablespencerjanssen@gmail.comLift an ` action to a ^]. 8The identity hook that returns the WindowSet unchanged.  Compose two _s. Compose the list of _s. p --> x. If p returns , execute the _. q =? x. if the result of q equals x , return . " lifted to a #. $ lifted to a #. Return the window title. Return the application name. Backwards compatible alias for . Return the resource class. 8A query that can return an arbitrary X property of type ,  identified by name.  Modify the h with a pure function. 'Move the window to the floating layer. &Map the window and remove it from the h. %Move the window to a given workspace portablestabledons@galois.com%DThe default number of workspaces (virtual screens) and their names. D By default we use numeric strings, but any string may be used as a F workspace name. The number of workspaces is determined by the length  of this list. A tagging example: 9 workspaces = ["web", "irc", "code" ] ++ map show [4..9] &CmodMask lets you specify which modkey you want to use. The default  is mod1Mask (left alt)). You may also consider using mod3Mask  ( right alt7), which does not conflict with emacs keybindings. The   windows key is usually mod4Mask. '0The mask for the numlock key. Numlock status is masked from the J current modifier status, so the keybindings will work with numlock on or 3 off. You may need to change this on some systems. -You can find the numlock modifier by running xmodmap and looking for a % modifier with Num_Lock bound to it:   $ xmodmap | grep Num  mod2 Num_Lock (0x4d) Set numlockMask = 0 if you don''t have a numlock key, or want to treat  numlock status separately. (&Width of the window border in pixels. )*?Border colors for unfocused and focused windows, respectively. +DExecute arbitrary actions and WindowSet manipulations when managing @ a new window. You can use this to, for example, always float a D particular program, or have a client always appear on a particular  workspace. 9To find the property name associated with a program, use  xprop | grep WM_CLASS  and click on the client you're interested in. ,FPerform an arbitrary action on each internal state change or X event.  Examples include:  do nothing  log the state to stdout See the  DynamicLog extension for examples. -DDefines a custom handler function for X Events. The function should C return (All True) if the default handler is to be run afterwards. B To combine event hooks, use mappend or mconcat from Data.Monoid. ./Perform an arbitrary action at xmonad startup. /IThe available layouts. Note that each layout is separated by |||, which  denotes layout choice. HThe preferred terminal program, which is used in a binding below and by  certain contrib modules. 0)Whether focus follows the mouse pointer. 1BThe xmonad key bindings. Add, modify or remove key bindings here. G(The comment formatting character is used when generating the manpage) 26Mouse bindings: default actions bound to mouse events "not portable, uses mtl, X11, posixunstablespencerjanssen@gmail.com3The main entry point 4IRuns handleEventHook from the configuration and runs the default handler  function if it returned True. 5AEvent handler. Map X events onto calls into Operations.hs, which 8 modify our internal model of the window manager state. Events dwm handles that we don't:  ButtonPress = buttonpress,  [Expose] = expose,  [PropertyNotify] = propertynotify, 6+scan for any new windows to manage. If they're already managed,  this should be idempotent. 7Grab the keys back 8XXX comment me  provisionalDon Stewart <dons@galois.com>D9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!   MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !!""#$%&&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcddeefghijklmnoppqrstuvCwxyz{|}~P            g   !"#$ % &' ( &)C*w{qru|v}s~yz+,#-./ 01 02 03 04 05 06 07 08 09 0: 0; 0< 0= 0> 0? 0@ 0A 0B 0C 0D 0E 0F 0G 0H 0I 0J 0K 0L 0M 0N 0O 0P 0Q 0R 0S 0T 0U 0V 0W 0X 0Y 0Z 0[ 0\ 0] 0^ 0_ 0` 0a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o 0p 0q 0r 0s 0t 0u 0v 0w 0x 0y 0z 0{ 0| 0} 0~ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0 0 0                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                     ! " # $ % & ' ( ) * + , - . / 01 02 03 04 05 06 07 08 09 0: 0; 0< => =? =@ =A =B =C =D =E =F =G =H =I =J KL KM KN KO KP KQ KR KS KT KU KV KW KX KY KZ K[ K\ K] K^ K_ K` Ka Kb cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz c{ c| c} c~ c c c c c                                                                                                                                                                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~               &                                       xmonad-0.9.1 XMonad.CoreXMonadXMonad.StackSet XMonad.LayoutXMonad.OperationsXMonad.ManageHook XMonad.Config XMonad.Mainbase Data.TypeableTypeable Data.Bits.|. mtl-1.1.1.0Control.Monad.TransliftIOMonadIOControl.Monad.Reader.Classaskslocalask MonadReaderControl.Monad.State.Classgetsmodifyputget MonadStateStackfocusupdown RationalRect WorkspacetaglayoutstackScreen workspacescreen screenDetailStackSetcurrentvisiblehiddenfloatingabortnewview greedyViewlookupWorkspacemodify'peek integrate integrate' differentiatefilterindexfocusUp focusDownswapUpswapDownfocusUp' focusDown' focusWindowscreens workspaces allWindows currentTag tagMember renameTag ensureTags mapWorkspace mapLayoutmemberfindTaginsertUpdeletedelete'floatsink swapMaster shiftMaster focusMastershiftshiftWinLayoutMessagesReleaseResourcesHide SomeMessageMessage LayoutClass runLayoutdoLayout pureLayout emptyLayout handleMessage pureMessage descriptionLayoutQuery ManageHookX ScreenDetailSD screenRectScreenIdS WorkspaceId WindowSpace WindowSetXConfignormalBorderColorfocusedBorderColorterminal layoutHook manageHookhandleEventHook numlockMaskmodMaskkeys mouseBindings borderWidthlogHook startupHookfocusFollowsMouseXConfdisplayconfigtheRoot normalBorder focusedBorder keyActions buttonActions mouseFocused mousePositionXState windowsetmapped waitingUnmapdraggingrunQueryrunXcatchXuserCode userCodeDef withDisplay withWindowSetisRootgetAtomatom_WM_PROTOCOLSatom_WM_DELETE_WINDOW atom_WM_STATE readsLayout fromMessageiocatchIOspawnspawnPIDrunOnWorkspaces getXMonadDir recompilewhenJustwhenXtraceinstallSignalHandlersuninstallSignalHandlersChoose ChangeLayout NextLayout FirstLayoutMirrorTall tallNMastertallRatioIncrement tallRatioFull IncMasterNResizeExpandShrinktilesplitVerticallysplitHorizontallysplitHorizontallyBysplitVerticallyBy mirrorRect|||Dmanageunmanage killWindowkillwindowsscaleRationalRect setWMStatehidereveal clientMasksetInitialPropertiesrefresh clearEvents tileWindow containedIn nubScreensgetCleanedScreenInforescreen setButtonGrab setTopFocus setFocusX sendMessagebroadcastMessagesendMessageWithNoRefresh updateLayout setLayoutscreenWorkspace withFocusedisClientextraModifiers cleanMask initColorrestart floatLocation pointScreen pointWithin mouseDragmouseMoveWindowmouseResizeWindowmkAdjustapplySizeHintsapplySizeHintsContentsapplySizeHints'applyAspectHintapplyResizeIncHintapplyMaxSizeHintliftXidHook<+> composeAll-->=?<&&><||>titleappNameresource classNamestringPropertygetStringPropertydoFdoFloatdoIgnoredoShift defaultConfigxmonad Data.MaybeNothingwithmaybeJustghc-primGHC.BoolTrueGHC.ListcycleswapUp' reverseStack onWorkspace X11-1.5.0.0Graphics.X11.Xlib.Types Rectangle GHC.TypesIOGHC.ShowshowGHC.ReadReadControl.Monad.ReaderReaderTControl.Monad.State.LazyStateTGHC.BaseStringSystem.Posix.Types ProcessIDFalse NextNoWrapLRRLhandlechoosePixel GHC.Classes&&Monad||defaultModMask c_setlocalehandleWithHookscangrabKeys grabButtonsGraphics.X11.Xlib.ExtrasgetModifierMapping getCommand getErrorEventsetErrorHandler setWMHints getWMHintsallHintsBitmaskurgencyHintBitwindowGroupHintBiticonMaskHintBiticonPositionHintBiticonWindowHintBiticonPixmapHintBit stateHintBit inputHintBit iconicState normalStatewithdrawnState getClassHintgetWMNormalHintspWinGravityBit pBaseSizeBit pAspectBit pResizeIncBit pMaxSizeBit pMinSizeBit unmapWindowpropModeAppendpropModePrependpropModeReplacechangeProperty32changeProperty16changeProperty8getWindowProperty32getWindowProperty16getWindowProperty8rawGetWindowPropertyanyPropertyTyperefreshKeyboardMapping setKeyEventsetConfigureEventsetClientMessageEventsetSelectionNotify setEventTypegetWMProtocolsgetTransientForHint fetchNamewcTextEscapementwcDrawImageString wcDrawString wcTextExtents createFontSetwcTextPropertyToTextListgetTextProperty withServergetWindowAttributes waIsViewablewaIsUnviewable waIsUnmapped queryTreeconfigureWindow currentTimeanyKey anyButtonnonegetEvent eventName eventTable ev_windowev_event_display ev_send_event ev_serial ev_event_typeAnyEvent ev_value_mask ev_detailev_aboveev_border_width ev_heightev_widthev_yev_x ev_parentConfigureRequestEventev_override_redirectev_eventConfigureEventMapRequestEventev_same_screen ev_keycodeev_state ev_y_root ev_x_rootev_time ev_subwindowev_rootKeyEvent ev_button ButtonEvent MotionEventDestroyWindowEventev_from_configure UnmapEventMapNotifyEventev_countev_first_keycode ev_requestMappingNotifyEventev_focusev_mode CrossingEvent ev_property ev_target ev_selection ev_requestorev_ownerSelectionRequest ev_propstateev_atom PropertyEvent ExposeEventev_dataev_message_typeClientMessageEventEvent wc_stack_mode wc_siblingwc_border_width wc_heightwc_widthwc_ywc_x WindowChangeswa_override_redirect wa_map_statewa_border_width wa_heightwa_widthwa_ywa_xWindowAttributes tp_nitems tp_format tp_encodingtp_value TextPropertyFontSetsh_win_gravity sh_base_size sh_aspect sh_resize_inc sh_max_size sh_min_size SizeHintsresClassresName ClassHintwmh_window_group wmh_icon_mask wmh_icon_y wmh_icon_xwmh_icon_windowwmh_icon_pixmapwmh_initial_state wmh_input wmh_flagsWMHintsXErrorEventPtrCXErrorHandler XErrorHandler ev_resourceid ev_minor_codeev_request_code ev_error_code ev_serialnum ev_displayev_type ErrorEventxConfigureWindow killClientxFree xQueryTreexGetWindowAttributeschangeWindowAttributesxGetTextPropertyxwcTextPropertyToTextListwcFreeStringListxCreateFontSetfreeStringList freeFontSetxwcTextExtents xwcDrawStringxwcDrawImageStringxwcTextEscapement xFetchNamexGetTransientForHintxGetWMProtocolsxSetErrorHandlerxRefreshKeyboardMappingxChangePropertyxGetWindowProperty xUnmapWindowxGetWMNormalHints xGetClassHint xGetWMHints xAllocWMHints xSetWMHints isCursorKey isFunctionKey isKeypadKeyisMiscFunctionKey isModifierKeyisPFKeyisPrivateKeypadKeyxSetSelectionOwnerxGetSelectionOwnerxConvertSelectionmkXErrorHandlergetXErrorHandler_xSetErrorHandler mapRaised xGetCommandxGetModifierMappingxFreeModifiermapGraphics.X11.Xlib.MiscsetTextProperty rotateBuffers fetchBytes fetchBuffer storeBytes storeBufferdrawImageString drawStringfillArcs fillPolygonfillRectanglesdrawArcsdrawRectangles drawSegments drawLines drawPoints set_cursor set_colormapset_override_redirectset_do_not_propagate_maskset_event_maskset_save_underset_backing_pixelset_backing_planesset_backing_storeset_win_gravityset_bit_gravityset_border_pixelset_border_pixmapset_background_pixelset_background_pixmapallocaSetWindowAttributessetWMProtocols recolorCursorcreateGlyphCursorcreatePixmapCursor setIconName getIconName lookupStringnoSymbolstringToKeysymkeysymToStringdisplayKeycodesgetPointerControlgetScreenSaverscreenSaverResetscreenSaverActivedefaultBlankingpreferBlankingdontPreferBlankingdefaultExposuresallowExposuresdontAllowExposuressetLocaleModifiers getGeometrygeometrysetDefaultErrorHandler displayName queryPointer queryBestSizequeryBestCursorqueryBestStipple queryBestTile getInputFocusAllowExposuresModePreferBlankingModeScreenSaverMode rmInitialize autoRepeatOff autoRepeatOnbellsetCloseDownModelastKnownRequestProcessed setInputFocus grabButton ungrabButton grabPointer ungrabPointergrabKey ungrabKey grabKeyboardungrabKeyboard grabServer ungrabServersupportsLocalesetScreenSaveractivateScreenSaverresetScreenSaverforceScreenSaver warpPointer initThreads lockDisplay unlockDisplay createPixmap freePixmapbitmapBitOrder bitmapUnit bitmapPad lookupKeysymkeycodeToKeysymkeysymToKeycode defineCursorundefineCursorcreateFontCursor freeCursor drawPointdrawLine drawRectangledrawArc fillRectanglefillArccopyArea copyPlaneGraphics.X11.Xlib.Image createImageputImage destroyImageGraphics.X11.Xlib.Region setRegion shrinkRegion offsetRegionclipBox rectInRegion pointInRegion equalRegion emptyRegion xorRegion unionRegionunionRectWithRegionsubtractRegionintersectRegion polygonRegion createRegion rectanglePart rectangleIn rectangleOutRegionRectInRegionResultGraphics.X11.Xlib.AtomlAST_PREDEFINEDwM_TRANSIENT_FORwM_CLASS cAP_HEIGHT fULL_NAME fAMILY_NAME fONT_NAMEnOTICE cOPYRIGHT rESOLUTION pOINT_SIZEwEIGHT qUAD_WIDTHx_HEIGHT iTALIC_ANGLEsTRIKEOUT_DESCENTsTRIKEOUT_ASCENTuNDERLINE_THICKNESSuNDERLINE_POSITION sUBSCRIPT_Y sUBSCRIPT_X sUPERSCRIPT_Y sUPERSCRIPT_X eND_SPACE mAX_SPACE nORM_SPACE mIN_SPACE wM_ZOOM_HINTS wM_SIZE_HINTSwM_NORMAL_HINTSwM_NAME wM_ICON_SIZE wM_ICON_NAMEwM_CLIENT_MACHINEwM_HINTS wM_COMMANDwINDOWvISUALIDsTRING rGB_RED_MAP rGB_GREEN_MAP rGB_GRAY_MAPrGB_DEFAULT_MAP rGB_BLUE_MAP rGB_BEST_MAP rGB_COLOR_MAPrESOURCE_MANAGER rECTANGLEpOINTpIXMAPiNTEGERfONTdRAWABLE cUT_BUFFER7 cUT_BUFFER6 cUT_BUFFER5 cUT_BUFFER4 cUT_BUFFER3 cUT_BUFFER2 cUT_BUFFER1 cUT_BUFFER0cURSORcOLORMAPcARDINALbITMAPaTOMaRC sECONDARYpRIMARY internAtomGraphics.X11.Xlib.CursorxC_xtermxC_watch xC_ur_angle xC_umbrella xC_ul_anglexC_trek xC_top_tee xC_top_sidexC_top_right_cornerxC_top_left_cornerxC_top_left_arrow xC_tcross xC_targetxC_star xC_spraycan xC_spider xC_sizing xC_shuttlexC_sb_v_double_arrowxC_sb_up_arrowxC_sb_right_arrowxC_sb_left_arrowxC_sb_h_double_arrowxC_sb_down_arrow xC_sailboat xC_rtl_logoxC_rightbutton xC_right_tee xC_right_side xC_right_ptrxC_question_arrowxC_plus xC_pirate xC_pencilxC_mousexC_man xC_lr_angle xC_ll_angle xC_leftbutton xC_left_tee xC_left_side xC_left_ptr xC_iron_crossxC_iconxC_heartxC_hand2xC_hand1xC_gumby xC_gobblerxC_fleur xC_exchange xC_draped_boxxC_draft_smallxC_draft_largexC_double_arrow xC_dotboxxC_dotxC_diamond_cross xC_crosshairxC_cross_reversexC_cross xC_coffee_mugxC_clock xC_circle xC_center_ptr xC_box_spiral xC_bottom_teexC_bottom_sidexC_bottom_right_cornerxC_bottom_left_corner xC_bogosityxC_boatxC_based_arrow_upxC_based_arrow_downxC_arrow xC_X_cursorGraphics.X11.Xlib.Font textWidth textExtentsdescentFromFontStructascentFromFontStructfontFromFontStruct loadQueryFont fontFromGCGlyph FontStruct CharStruct queryFontfreeFontGraphics.X11.Xlib.Color queryColors queryColor storeColor freeColors parseColor allocColorallocNamedColor lookupColorinstallColormapuninstallColormapcopyColormapAndFreecreateColormap freeColormapGraphics.X11.Xlib.ContextcreateGC setDashes setArcMode setBackground setForeground setFunctionsetGraphicsExposures setClipMask setClipOrigin setFillRule setFillStylesetFontsetLineAttributes setPlaneMasksetState setStipplesetSubwindowMode setTSOriginsetTilegContextFromGCfreeGCflushGCcopyGCGraphics.X11.Xlib.WindowrestackWindowswithdrawWindow iconifyWindowtranslateCoordinates storeNamecreateSimpleWindow createWindowmoveResizeWindow resizeWindow moveWindowreparentWindow mapSubwindowsunmapSubwindows mapWindow lowerWindow raiseWindowcirculateSubwindowsDowncirculateSubwindowsUpcirculateSubwindows destroyWindowdestroySubwindowssetWindowBordersetWindowBorderPixmapsetWindowBorderWidthsetWindowBackgroundsetWindowBackgroundPixmapsetWindowColormap addToSaveSetremoveFromSaveSet changeSaveSet clearWindow clearAreaGraphics.X11.Xlib.ScreenblackPixelOfScreenwhitePixelOfScreen cellsOfScreendefaultColormapOfScreendefaultDepthOfScreendefaultGCOfScreendefaultVisualOfScreendoesBackingStoredoesSaveUndersdisplayOfScreeneventMaskOfScreenminCmapsOfScreenmaxCmapsOfScreenrootWindowOfScreen widthOfScreenwidthMMOfScreenheightOfScreenheightMMOfScreenplanesOfScreenscreenNumberOfScreenGraphics.X11.Xlib.Event sendEventgettimeofday_in_milliseconds waitForEventget_ConfigureEventget_ExposeEventget_MotionEventget_ButtonEvent asKeyEvent get_KeyEvent get_Window get_EventType allocaXEventqueuedAfterReadingqueuedAfterFlush queuedAlready QueuedModeXEvent XEventPtr XKeyEvent XKeyEventPtr XButtonEvent XMotionEvent XExposeEvent XMappingEventXConfigureEventflushsyncpending eventsQueued nextEvent allowEvents selectInput windowEventcheckWindowEvent maskEventcheckMaskEventcheckTypedEventcheckTypedWindowEvent putBackEvent peekEventGraphics.X11.Xlib.Display openDisplay serverVendor displayStringscreenResourceStringresourceManagerString allPlanes_aux blackPixel whitePixelconnectionNumberdefaultColormap defaultGC defaultDepth defaultScreendefaultScreenOfDisplay displayHeightdisplayHeightMM displayWidthdisplayWidthMMmaxRequestSizedisplayMotionBufferSizeimageByteOrderprotocolRevisionprotocolVersion screenCount defaultVisual displayCells displayPlanesscreenOfDisplaydefaultRootWindow rootWindowqLengthnoOp closeDisplayGraphics.X11.TypeszPixmapxyPixmapxyBitmapfontRightToLeftfontLeftToRightdoBluedoGreendoRedalways whenMapped notUseful unmapGravity staticGravitysouthEastGravity southGravitysouthWestGravity eastGravity centerGravity westGravitynorthEastGravity northGravitynorthWestGravity forgetGravity setModeDelete setModeInsertmappingPointermappingKeyboardmappingModifierallocAll allocNonemSBFirstlSBFirst lowerHighest raiseLowest gCLastBit gCArcMode gCDashList gCDashOffset gCClipMask gCClipYOrigin gCClipXOrigingCGraphicsExposuresgCSubwindowModegCFontgCTileStipYOrigingCTileStipXOrigin gCStipplegCTile gCFillRule gCFillStyle gCJoinStyle gCCapStyle gCLineStyle gCLineWidth gCBackground gCForeground gCPlaneMask gCFunction arcPieSlicearcChordconvex nonconvexcomplexcoordModePreviouscoordModeOriginincludeInferiorsclipByChildren windingRule evenOddRulefillOpaqueStippled fillStippled fillTiled fillSolid joinBevel joinRound joinMiter capProjectingcapRoundcapButt capNotLastlineDoubleDash lineOnOffDash lineSolidgXsetgXnand gXorInvertedgXcopyInverted gXorReversegXinvertgXequivgXnorgXorgXxorgXnoop gXandInvertedgXcopy gXandReversegXandgXclear stippleShape tileShape cursorShaperetainTemporaryretainPermanent destroyAllcWCursor cWColormapcWDontPropagate cWEventMask cWSaveUndercWOverrideRedirectcWBackingPixelcWBackingPlanescWBackingStore cWWinGravity cWBitGravity cWBorderPixelcWBorderPixmap cWBackPixel cWBackPixmap inputOnly inputOutputcopyFromParent throwIfZerolastExtensionErrorfirstExtensionErrorbadImplementation badLengthbadName badIDChoicebadGCbadColorbadAlloc badAccess badDrawablebadMatchbadFont badCursorbadAtom badPixmap badWindowbadValue badRequestsuccessrevertToParentrevertToPointerRoot revertToNonesyncBoth asyncBothreplayKeyboard syncKeyboard asyncKeyboard replayPointer syncPointer asyncPointer grabFrozengrabNotViewablegrabInvalidTimealreadyGrabbed grabSuccess grabModeAsync grabModeSynccolormapInstalledcolormapUninstalledpropertyDeletepropertyNewValue familyChaos familyDECnetfamilyInternet placeOnBottom placeOnTopvisibilityFullyObscuredvisibilityPartiallyObscuredvisibilityUnobscurednotifyDetailNonenotifyPointerRoot notifyPointernotifyNonlinearVirtualnotifyNonlinearnotifyInferior notifyVirtualnotifyAncestor notifyHintnotifyWhileGrabbed notifyUngrab notifyGrab notifyNormalbutton5button4button3button2button1 button5Mask button4Mask button3Mask button2Mask button1Maskmod5Maskmod4Maskmod3Maskmod2Maskmod1Mask controlMasklockMask shiftMask anyModifier mod5MapIndex mod4MapIndex mod3MapIndex mod2MapIndex mod1MapIndexcontrolMapIndex lockMapIndex shiftMapIndex lASTEvent mappingNotify clientMessagecolormapNotifyselectionNotifyselectionRequestselectionClearpropertyNotifycirculateRequestcirculateNotify resizeRequest gravityNotifyconfigureRequestconfigureNotifyreparentNotify mapRequest mapNotify unmapNotify destroyNotify createNotifyvisibilityNotifynoExposegraphicsExposeexpose keymapNotifyfocusOutfocusIn leaveNotify enterNotify motionNotify buttonRelease buttonPress keyReleasekeyPressownerGrabButtonMaskcolormapChangeMaskpropertyChangeMaskfocusChangeMasksubstructureRedirectMasksubstructureNotifyMaskresizeRedirectMaskstructureNotifyMaskvisibilityChangeMask exposureMaskkeymapStateMaskbuttonMotionMaskbutton5MotionMaskbutton4MotionMaskbutton3MotionMaskbutton2MotionMaskbutton1MotionMaskpointerMotionHintMaskpointerMotionMaskleaveWindowMaskenterWindowMaskbuttonReleaseMaskbuttonPressMaskkeyReleaseMask keyPressMask noEventMask xK_ydiaeresisxK_thorn xK_yacute xK_udiaeresisxK_ucircumflex xK_uacute xK_ugrave xK_oslash xK_division xK_odiaeresis xK_otildexK_ocircumflex xK_oacute xK_ograve xK_ntildexK_eth xK_idiaeresisxK_icircumflex xK_iacute xK_igrave xK_ediaeresisxK_ecircumflex xK_eacute xK_egrave xK_ccedillaxK_aexK_aring xK_adiaeresis xK_atildexK_acircumflex xK_aacute xK_agrave xK_ssharpxK_ThornxK_THORN xK_Yacute xK_UdiaeresisxK_Ucircumflex xK_Uacute xK_Ugrave xK_Ooblique xK_multiply xK_Odiaeresis xK_OtildexK_Ocircumflex xK_Oacute xK_Ograve xK_NtildexK_EthxK_ETH xK_IdiaeresisxK_Icircumflex xK_Iacute xK_Igrave xK_EdiaeresisxK_Ecircumflex xK_Eacute xK_Egrave xK_CcedillaxK_AExK_Aring xK_Adiaeresis xK_AtildexK_Acircumflex xK_Aacute xK_AgravexK_questiondownxK_threequarters xK_onehalf xK_onequarterxK_guillemotright xK_masculinexK_onesuperior xK_cedillaxK_periodcentered xK_paragraphxK_muxK_acutexK_threesuperiorxK_twosuperior xK_plusminus xK_degree xK_macron xK_registered xK_hyphen xK_notsignxK_guillemotleftxK_ordfeminine xK_copyright xK_diaeresis xK_section xK_brokenbarxK_yen xK_currency xK_sterlingxK_cent xK_exclamdownxK_nobreakspace xK_asciitilde xK_bracerightxK_bar xK_braceleftxK_zxK_yxK_xxK_wxK_vxK_uxK_txK_sxK_rxK_qxK_pxK_oxK_nxK_mxK_lxK_kxK_jxK_ixK_hxK_gxK_fxK_exK_dxK_cxK_bxK_a xK_quoteleftxK_grave xK_underscorexK_asciicircumxK_bracketright xK_backslashxK_bracketleftxK_ZxK_YxK_XxK_WxK_VxK_UxK_TxK_SxK_RxK_QxK_PxK_OxK_NxK_MxK_LxK_KxK_JxK_IxK_HxK_GxK_FxK_ExK_DxK_CxK_BxK_AxK_at xK_question xK_greaterxK_equalxK_less xK_semicolonxK_colonxK_9xK_8xK_7xK_6xK_5xK_4xK_3xK_2xK_1xK_0xK_slash xK_periodxK_minusxK_commaxK_plus xK_asterisk xK_parenright xK_parenleft xK_quoteright xK_apostrophe xK_ampersand xK_percent xK_dollar xK_numbersign xK_quotedbl xK_exclamxK_space xK_Hyper_R xK_Hyper_L xK_Super_R xK_Super_LxK_Alt_RxK_Alt_L xK_Meta_R xK_Meta_L xK_Shift_Lock xK_Caps_Lock xK_Control_R xK_Control_L xK_Shift_R xK_Shift_LxK_R15xK_F35xK_R14xK_F34xK_R13xK_F33xK_R12xK_F32xK_R11xK_F31xK_R10xK_F30xK_R9xK_F29xK_R8xK_F28xK_R7xK_F27xK_R6xK_F26xK_R5xK_F25xK_R4xK_F24xK_R3xK_F23xK_R2xK_F22xK_R1xK_F21xK_L10xK_F20xK_L9xK_F19xK_L8xK_F18xK_L7xK_F17xK_L6xK_F16xK_L5xK_F15xK_L4xK_F14xK_L3xK_F13xK_L2xK_F12xK_L1xK_F11xK_F10xK_F9xK_F8xK_F7xK_F6xK_F5xK_F4xK_F3xK_F2xK_F1xK_KP_9xK_KP_8xK_KP_7xK_KP_6xK_KP_5xK_KP_4xK_KP_3xK_KP_2xK_KP_1xK_KP_0 xK_KP_Divide xK_KP_DecimalxK_KP_SubtractxK_KP_Separator xK_KP_AddxK_KP_Multiply xK_KP_Equal xK_KP_Delete xK_KP_Insert xK_KP_Begin xK_KP_EndxK_KP_Page_Down xK_KP_Next xK_KP_Page_Up xK_KP_Prior xK_KP_Down xK_KP_RightxK_KP_Up xK_KP_Left xK_KP_HomexK_KP_F4xK_KP_F3xK_KP_F2xK_KP_F1 xK_KP_Enter xK_KP_Tab xK_KP_Space xK_Num_LockxK_script_switchxK_Mode_switchxK_BreakxK_Help xK_CancelxK_FindxK_MenuxK_RedoxK_Undo xK_Insert xK_ExecutexK_Print xK_SelectxK_BeginxK_End xK_Page_DownxK_Next xK_Page_UpxK_PriorxK_DownxK_RightxK_UpxK_LeftxK_HomexK_PreviousCandidatexK_MultipleCandidatexK_SingleCandidate xK_Codeinput xK_Multi_key xK_Delete xK_Escape xK_Sys_ReqxK_Scroll_LockxK_Pause xK_ReturnxK_Clear xK_LinefeedxK_Tab xK_BackSpace xK_VoidSymbolXIDMaskAtomVisualIDTimeWindowDrawableFontPixmapCursorColormapGContextKeyCodeKeySym EventMask EventTypeModifierKeyMask ButtonMaskButton NotifyMode NotifyDetail VisibilityPlaceProtocolPropertyNotificationColormapNotificationGrabMode GrabStatus AllowEvents FocusMode ErrorCodeStatus WindowClass AttributeMask CloseDownModeQueryBestSizeClass GXFunction LineStyleCapStyle JoinStyle FillStyleFillRule SubWindowModeCoordinateMode PolygonShapeArcModeGCMaskCirculationDirection ByteOrder ColormapAllocMappingRequestChangeSaveSetMode BitGravity WindowGravity BackingStore FontDirection ImageFormatDisplayVisualGCSetWindowAttributesImagePosition DimensionAngle ScreenNumberBufferpt_ypt_xPoint rect_height rect_widthrect_yrect_x arc_angle2 arc_angle1 arc_height arc_widtharc_yarc_xArcseg_y2seg_x2seg_y1seg_x1Segment color_flags color_blue color_green color_red color_pixelColor