!F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE SafeQFGHIJKLM(c) Don Stewart 2007BSD3-style (see LICENSE)dons@galois.com experimentalportable, Haskell 98SafeO 4xmonad A stack is a cursor onto a window list. The data structure tracks focus by construction, and 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: w +-- 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 .xmonad!A structure for window geometriesxmonad1A workspace is just a tag, a layout, and a stack.xmonad/Visible workspaces, and their Xinerama screens.xmonad-A cursor into a non-empty list of workspaces.We puncture the workspace list, producing a hole in the structure used to track the currently focused workspace. The two other lists that are produced are used to track those workspaces visible as Xinerama screens, and those workspaces not visible anywhere.xmonadcurrently focused workspacexmonad+non-focused workspaces, visible in xineramaxmonadworkspaces not visible anywherexmonadfloating windowsxmonad:this function indicates to catch that an error is expectedxmonadO(n)r. Create a new stackset, of empty stacks, with given tags, with physical screens whose descriptions are given by m#. The number of physical screens (length ms) should be less than or equal to the number of workspace tags. The first workspace in the list will be current.MXinerama: Virtual workspaces are assigned to physical screens, starting at 0.xmonadO(w)`. Set focus to the workspace with index 'i'. If the index is out of range, return the original .Xinerama: If the workspace is not visible on any Xinerama screen, it becomes the current screen. If it is in the visible list, it becomes current.xmonadSet focus to the given workspace. If that workspace does not exist in the stackset, the original workspace is returned. If that workspace is X, then display that workspace on the current screen, and move the current workspace to . If that workspace is \ on another screen, the workspaces of the current screen and the other screen are swapped.xmonad9Find the tag of the workspace visible on Xinerama screen sc. N if screen is out of bounds.OxmonadThe O_ function takes a default value, a function, and a StackSet. If the current stack is Nothing, Op returns the default value. Otherwise, it applies the function to the stack, returning the result. It is like P for the focused workspace.xmonad*Apply a function, and a default value for N, to modify the current stack. xmonad`Apply a function to modify the current stack if it isn't empty, and we don't want to empty it. xmonadO(1)<. Extract the focused element of the current stack. Return Q that element, or N for an empty stack. xmonadO(n) . Flatten a  into a list. xmonadO(n), Flatten a possibly empty stack into a list. xmonadO(n). Turn a list into a possibly empty stack (i.e., a zipper): the first element of the list is current, and the rest of the list is down.xmonadO(n)'. 'filter p s' returns the elements of s such that p evaluates to R8. Order is preserved, and focus moves as described for #.xmonadO(s). Extract the stack on the current workspace, as a list. The order of the stack is determined by the master window -- it will be the head of the list. The implementation is given by the natural integration of a one-hole list cursor, back to a list.xmonadO(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 S on the current stack. The master@ window, and window order, are unaffected by movement of focus.{swapUp, swapDown, swap the neighbour in the stack ordering, wrapping if we reach the end. Again the wrapping model should S on the current stack.xmonadO(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 S on the current stack. The master@ window, and window order, are unaffected by movement of focus.{swapUp, swapDown, swap the neighbour in the stack ordering, wrapping if we reach the end. Again the wrapping model should S on the current stack.xmonadO(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 S on the current stack. The master@ window, and window order, are unaffected by movement of focus.{swapUp, swapDown, swap the neighbour in the stack ordering, wrapping if we reach the end. Again the wrapping model should S on the current stack.xmonadO(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 S on the current stack. The master@ window, and window order, are unaffected by movement of focus.{swapUp, swapDown, swap the neighbour in the stack ordering, wrapping if we reach the end. Again the wrapping model should S on the current stack.xmonad Variants of  and  that work on a  rather than an entire .xmonad Variants of  and  that work on a  rather than an entire .Txmonad5reverse a stack: up becomes down and down becomes up.xmonad'O(1) on current window, O(n) in general. Focus the window w$, and set its workspace as current.xmonad!Get a list of all screens in the .xmonad$Get a list of all workspaces in the .xmonad!Get a list of all windows in the  in no particular orderxmonad/Get the tag of the currently focused workspace.xmonad Is the given tag present in the ?xmonad%Rename a given tag if present in the .xmonadEnsure that a given set of workspace tags is present by renaming existing workspaces and/or creating new hidden workspaces as necessary.xmonad,Map a function on all the workspaces in the .xmonad)Map a function on all the layouts in the . xmonadO(n). Is a window in the ?!xmonad'O(1) on current window, O(n) in general . Return Q+ the workspace tag of the given window, or N if the window is not in the ."xmonadO(n). (Complexity due to duplicate check). Insert a new element into the stack, above the currently focused element. The new element is given focus; the previously focused element is moved down.YIf the element is already in the stackset, the original stackset is returned unmodified.zSemantics in Huet's paper is that insert doesn't move the cursor. However, we choose to insert above, and move the focus.#xmonad'O(1) on current window, O(n) in general. Delete window w. if it exists. There are 4 cases to consider: delete on an N workspace leaves it Nothing(otherwise, try to move focus to the down&otherwise, try to move focus to the up2otherwise, you've got an empty workspace, becomes N%Behaviour with respect to the master:@deleting the master window resets it to the newly focused window,otherwise, delete doesn't affect the master.$xmonadlOnly temporarily remove the window from the stack, thereby not destroying special information saved in the Stackset%xmonadtGiven a window, and its preferred rectangle, set it as floating A floating window should already be managed by the .&xmonad%Clear the floating status of a window'xmonadO(s). Set the master window to the focused window. The old master window is swapped in the tiling order with the focused window. Focus stays with the item moved.(xmonadO(s). Set the master window to the focused window. 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.)xmonadO(s)!. Set focus to the master window.*xmonadO(w)A. shift. Move the focused element of the current stack to stack n, leaving it as the focused element on that stack. The item is inserted above the currently focused element on that workspace. The actual focused workspace doesn't change. If there is no element on the current stack, the original stackSet is returned.+xmonadO(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 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.@      !"#$%&'()*+@    ) !"#$'( %&*+(c) Spencer Janssen 2007BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable+not portable, uses cunning newtype derivingNone 1;=>?CKV\;xmonad,Existential type to store a state extension.<xmonadNon-persistent state extension=xmonadPersistent extension>xmonadMEvery module must make the data it wants to store an instance of this class.)Minimal complete definition: initialValue?xmonad0Defines an initial value for the state extension@xmonadTSpecifies whether the state extension should be persistent. Setting this method to =a will make the stored data survive restarts, but requires a to be an instance of Read and Show.It defaults to ;, i.e. no persistence.AxmonadA\ are core messages that all layouts (especially stateful layouts) should consider handling.Bxmonad&sent when a layout becomes non-visibleCxmonad)sent when xmonad is exiting or restartingDxmonad$A wrapped value of some type in the F class.FxmonadBased on ideas in /An Extensible Dynamically-Typed Hierarchy of Exceptions/, Simon Marlow, 2006. Use extensible messages to the L handler.8User-extensible messages must be a member of this class.Gxmonad$Every layout must be an instance of GT, which defines the basic layout operations along with a sensible default for each.Minimal complete definition:H || ((I || J) && K), andL || M/You should also strongly consider implementing N, although it is not required.Note that any code which uses G methods should only ever call H, L, and N&! In other words, the only calls to I, MI, and other such methods should be from the default implementations of H, Lq, and so on. This ensures that the proper methods will be used, regardless of the particular methods that any G instance chooses to define.Hxmonad By default, H calls I1 if there are any windows to be laid out, and K" otherwise. Most instances of G& probably do not need to implement HI; it is only useful for layouts which wish to make use of more of the  information (for example, XMonad.Layout.PerWorkspace).IxmonadGiven a & in which to place the windows, and a x of windows, return a list of windows and their corresponding Rectangles. If an element is not given a Rectangle by Ik, 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 newLayout`), 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 T monad (Uf, window manager state, or configuration) and do not keep track of their own state should implement J instead of I.JxmonadThis is a pure version of I/, for cases where we don't need access to the T_ monad to determine how to lay out the windows, and we don't need to modify the layout itself.KxmonadK% is called when there are no windows.LxmonadL! performs message handling. If L returns Nothing_, then the layout did not respond to the message and the screen is not refreshed. Otherwise, L8 returns an updated layout and the screen is refreshed.(Layouts which do not need access to the T: monad to decide how to handle messages should implement M instead of LD (this restricts the risk of error, and makes testing much easier).MxmonadRespond to a message by (possibly) changing our layout, but taking no other action. If the layout changes, the screen will be refreshed.NxmonaduThis should be a human-readable string that is used when selecting layouts by name. The default implementation is V(, which is in some cases a poor default.Oxmonad8An existential type that can hold any object that is in W and G.Txmonad The X monad, X and Y transformers over UJ encapsulating the window manager configuration and state, respectively.)Dynamic components may be retrieved with , static components with I. With newtype deriving we get readers and state monads instantiated on q and } automatically.UxmonadThe  with screen dimensionsXxmonadPhysical screen indicesZxmonadVirtual workspace indices_xmonad4Non focused windows border color. Default: "#dddddd"`xmonad0Focused windows border color. Default: "#ff0000"axmonad4The preferred terminal application. Default: "xterm"bxmonadThe available layoutscxmonad-The action to run when a new window is openeddxmonadHandle an X event, returns (All True) if the default handler should also be run afterwards. mappend should be used for combining event hooks in most cases.exmonadThe list of workspaces' namesfxmonadthe mod modifiergxmonad3The key binding: a map from key presses and actionshxmonadThe mouse bindingsixmonadThe border widthjxmonad5The action to perform when the windows set is changedkxmonad The action to perform on startuplxmonad,Whether window entry events can change focusmxmonadQFalse to make a click which changes focus to be additionally passed to the windownxmonad.The client events that xmonad is interested inoxmonad,The root events that xmonad is interested inpxmonadlModify the configuration, complain about extra arguments etc. with arguments that are not handled by defaultqxmonad4XConf, the (read-only) window manager configuration.sxmonadthe X11 displaytxmonadinitial user configurationuxmonadthe root windowvxmonad!border color of unfocused windowswxmonad"border color of the focused windowxxmonad#a mapping of key presses to actionsyxmonad&a mapping of button presses to actionszxmonad#was refocus caused by mouse action?{xmonadGposition of the mouse according to the event currently being processed|xmonadevent currently being processed}xmonad+XState, the (mutable) window manager state.xmonadworkspace listxmonadthe Set of mapped windowsxmonad"the number of expected UnmapEventsxmonadThe numlock modifierxmonad stores custom state information. The module XMonad.Util.ExtensibleStateZ in xmonad-contrib provides additional information and a simple interface for using this.xmonadRun the T monad, given a chunk of TE monad code, and an initial state Return the result, and final statexmonad Run in the T] monad, and in case of exception, and catch it and log it to stderr, and run the error case.xmonadIExecute the argument, catching all exceptions. Either this function or 9 should be used at all callsites of user customized code.xmonadiSame as userCode but with a default argument to return instead of using Maybe, provided for convenience.xmonad4Run a monad action with the current display settingsxmonad/Run a monadic action with the current stack setxmonad Safely access window attributes.xmonad+True if the given window is the root windowxmonad.Wrapper for the common case of atom internmentxmonadCommon non-predefined atomsxmonadCommon non-predefined atomsxmonadCommon non-predefined atomsxmonadCommon non-predefined atomsxmonad Using the O; as a witness, parse existentially wrapped windows from a Z.xmonad!And now, unwrap a given, unknown F8 type, performing a (dynamic) type check on the result.xmonadGeneral utilitiesLift an U action into the T monadxmonadLift an U action into the T% monad. If the action results in an UG exception, log the exception to stderr and continue normal execution.xmonadSspawn. Launch an external application. Specifically, it double-forks and runs the Z" you pass as a command to /bin/sh.1Note this function assumes your locale uses utf8.xmonadLike , but returns the [ of the launched applicationxmonadA replacement for \& which resets default signal handlers.xmonad<This is basically a map function, running a function in the TX monad on each workspace with the output of that function being the modified workspace.xmonadReturn the path to the xmonad configuration directory. This directory is where user configuration files are stored (e.g, the xmonad.hs file). You may also create a libu subdirectory in the configuration directory and the default recompile command will add it to the GHC include path.=Several directories are considered. In order of preference: The directory specified in the XMONAD_CONFIG_DIR environment variable.The  ~/.xmonad directory.The XDG_CONFIG_HOME/xmonad directory.The first directory that exists will be used. If none of the directories exist then (1) will be used if it is set, otherwise (2) will be used. Either way, a directory will be created if necessary.xmonadReturn the path to the xmonad cache directory. This directory is used to store temporary files that can easily be recreated. For example, the XPrompt history file.<Several directories are considered. In order of preference: The directory specified in the XMONAD_CACHE_DIR environment variable.The  ~/.xmonad directory.The XDG_CACHE_HOME/xmonad directory.The first directory that exists will be used. If none of the directories exist then (1) will be used if it is set, otherwise (2) will be used. Either way, a directory will be created if necessary.xmonadReturn the path to the xmonad data directory. This directory is used by XMonad to store data files such as the run-time state file and the configuration binary generated by GHC.<Several directories are considered. In order of preference: The directory specified in the XMONAD_DATA_DIR environment variable.The  ~/.xmonad directory.The XDG_DATA_HOME/xmonad directory.The first directory that exists will be used. If none of the directories exist then (1) will be used if it is set, otherwise (2) will be used. Either way, a directory will be created if necessary.]xmonadHelper function that will find the first existing directory and return its path. If none of the directories can be found, create and return the first from the list. If the list is empty this function returns the historical  ~/.xmonad directory.^xmonadSimple wrapper around findFirstDirOfJ that allows the primary path to be specified by an environment variable._xmonadHelper function to retrieve the various XDG directories. This has been based on the implementation shipped with GHC version 8.0.1 or higher. Put here to preserve compatibility with older GHC versions.xmonad?Get the name of the file used to store the xmonad window state.xmonad\'recompile force', recompile the xmonad configuration file when any of the following apply: force is R$the xmonad executable does not existIthe xmonad executable is older than xmonad.hs or any file in the lib/ directory (under the configuration directory).oThe -i flag is used to restrict recompilation to the xmonad.hs file only, and any files in the aforementioned lib directory..Compilation errors (if any) are logged to the  xmonad.errors file in the xmonad data directory. If GHC indicates failure with a non-zero exit code, an xmessage displaying that file is spawned.`- is returned if there are compilation errors.xmonad%Conditionally run an action, using a Maybe a to decide.xmonad%Conditionally run an action, using a T event to decidexmonadA  for the TW monad. Logs a string to stderr. The result may be found in your .xsession-errors filexmonadIgnore SIGPIPE to avoid termination when a pipe is full, and SIGCHLD to avoid zombie processes, and clean up any extant zombie processes.k;<=>?@ABCDEFGHKIJLMNOPQRSTUVWXYZ[\]^gecjkihbfa_`ldmonpqrstuvwxyz{|}~kT\[ZXYUVW}~qrstuvwxyz{|]^gecjkihbfa_`ldmonpGHKIJLMNOPFDEABC;<=>?@SQR(c) Spencer Janssen 2007BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable+not portable, Typeable deriving, mtl, posixNone1;=>?Ouaxmonad'Are we on the left or right sub-layout?xmonadDA layout that allows users to switch between various layout options.xmonad&Messages to change the current layout.xmonad4Mirror a layout, compute its 90 degree rotated form.xmonad,The builtin tiling mode of xmonad. Supports ,  and .xmonad=The default number of windows in the master pane (default: 1)xmonadFPercent of screen to increment by when resizing panes (default: 3/100)xmonadCDefault proportion of screen occupied by master pane (default: 1/2)xmonad>Simple fullscreen mode. Renders the focused window fullscreen.xmonad2Increase the number of clients in the master pane.xmonad#Change the size of the master pane.xmonadOCompute the positions for windows using the default two-pane tiling algorithm.The screen is divided into two panes. All clients are then partioned between these two panes. One pane, the master, by convention has the least number of windows in it.xmonadMirror a rectangle.xmonadThe layout choice combinatorbxmonadXA small wrapper around handleMessage, as it is tedious to write SomeMessage repeatedly.cxmonadA smart constructor that takes some potential modifications, returns a new structure if any fields have changed, and performs any necessary cleanup on newly non-visible layouts.xmonadfrac<, what proportion of the screen to devote to the master areaxmonadr', the rectangle representing the screenxmonadnmaster*, the number of windows in the master panexmonadn%, the total number of windows to tile5(c) Spencer Janssen 2007BSD3-style (see LICENSE)dons@cse.unsw.edu.auunstable+not portable, Typeable deriving, mtl, posixNone;<=>?O5xmonadSupport for window size hintsxmonad2A type to help serialize xmonad's state to a file.xmonadqWindow manager operations manage. Add a new window to be managed in the current workspace. Bring it into focus.iWhether the window is already managed, or not, it is mapped, has its border set, and its event mask set.xmonadbunmanage. A window no longer exists, remove it from the window list, on whatever workspace it is.xmonadTKill the specified window. If we do kill it, we'll get a delete notify back from X.There are two ways to delete a window. Either just kill it, or if it supports the delete protocol, send a delete event (e.g. firefox)xmonad"Kill the currently focused client.xmonadIwindows. Modify the current window list with a pure function, and refreshxmonadFProduce the actual rectangle from a screen and a ratio on that screen.xmonad&setWMState. set the WM_STATE propertyxmonaddSet the border color using the window's color map, if possible, otherwise fallback to the color in Pixel.xmonad;hide. Hide a window by unmapping it, and setting Iconified.xmonadjreveal. Show a window by mapping it and setting Normal this is harmless if the window was already visiblexmonad>Set some properties when we initially gain control of a windowxmonadHrefresh. Render the currently visible workspaces, as determined by the StackSet(. Also, set focus to the focused window. This is our viewC operation (MVC), in that it pretty prints our model with X calls.xmonadEclearEvents. Remove all events of a given type from the event queue.xmonaddtileWindow. Moves and resizes w such that it fits inside the given rectangle, including its border. xmonadReturns RJ if the first rectangle is contained within, but not equal to the second. xmonadoGiven a list of screens, remove all duplicated screens and screens that are entirely contained within another. xmonadMCleans the list of screens according to the rules documented for nubScreens. xmonadrescreen. The screen configuration may have changed (due to xrandr), update the state and refresh the screen, and reset the gap. xmonadHsetButtonGrab. Tell whether or not to intercept clicks on a given windowxmonad8Set the focus to the window on top of the stack, or rootxmonadSet 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).xmonad)Call X to set the keyboard focus details.xmonadThrow a message to the current G= possibly modifying how we layout the windows, then refresh.xmonad2Send a message to all layouts, without refreshing.xmonad/Send a message to a layout, without refreshing.xmonad&Update the layout field of a workspacexmonad0Set the layout of the currently viewed workspacexmonad#Return workspace visible on screen sc, or N.xmonad Apply an T< operation to the currently focused window, if there is one.xmonadR$ if window is under management by usxmonad^Combinations of extra modifier masks we need to grab keys/buttons for. (numlock and capslock)xmonad"Strip numlock/capslock from a maskxmonadGet the  value for a named colorxmonadrWrite the current window state (and extensible state) to a file so that xmonad can resume with that state intact.xmonad}Read the state of a previous xmonad instance from a file and return that state. The state file is removed after reading it.xmonadMMigrate state from a previously running xmonad instance that used the older --resume technique.xmonadrestart name resume6. Attempt to restart xmonad by executing the program name. If resume is RQ, restart with the current window state. When executing another window manager, resume should be `. xmonadFloating layer supportlGiven a window, find the screen it is located on, and compute the geometry of that window wrt. that screen.!xmonad>Given a point, determine the screen (if any) that contains it."xmonadpointWithin x y r returns R if the (x, y) co-ordinate is within r.#xmonad;Make a tiled window floating, using its suggested rectangle$xmonadAccumulate mouse motion events%xmonadCdrag the window under the cursor with the mouse while it is dragged&xmonadEresize the window under the cursor with the mouse while it is dragged'xmonadGiven a window, build an adjuster function that will reduce the given dimensions according to the window's border width and size hints.(xmonadfReduce the dimensions if needed to comply to the given SizeHints, taking window borders into account.)xmonadAReduce the dimensions if needed to comply to the given SizeHints.*xmonadXXX comment me+xmonadVReduce the dimensions so their aspect ratio falls between the two given aspect ratios.,xmonadDReduce the dimensions so they are a multiple of the size increments.-xmonadBReduce the dimensions if they exceed the given maximum dimensions.8      !"#$%&'()*+,-8      !"#$%&'()*+,-(c) Spencer Janssen 2007BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable+not portable, uses cunning newtype derivingNoneK 0xmonadLift an T action to a Q.1xmonad7The identity hook that returns the WindowSet unchanged.2xmonadInfix d. Compose two S from right to left.3xmonadCompose the list of Ss.4xmonadp --> x. If p returns R, execute the S. G(-->) :: Monoid m => Query Bool -> Query m -> Query m -- a simpler type5xmonadq =? x. if the result of q equals x , return R.6xmonade lifted to a f.7xmonadg lifted to a f.8xmonadReturn the window title.9xmonadReturn the application name.:xmonadBackwards compatible alias for 9.;xmonadReturn the resource class.<xmonad8A query that can return an arbitrary X property of type Z, identified by name.>xmonad Modify the \ with a pure function.?xmonad&Move the window to the floating layer.@xmonad&Map the window and remove it from the \.Axmonad$Move the window to a given workspace0123456789:;<=>?@A0123456789:;<=>?@A406373(c) Spencer Janssen 2007BSD3-style (see LICENSE)dons@galois.comstableportableNoneFT3~hxmonadThe default number of workspaces (virtual screens) and their names. By default we use numeric strings, but any string may be used as a workspace name. The number of workspaces is determined by the length of this list.A tagging example: 7workspaces = ["web", "irc", "code" ] ++ map show [4..9]ixmonadmodMask lets you specify which modkey you want to use. The default is mod1Mask ("left alt"). You may also consider using mod3Mask ("right alt"), which does not conflict with emacs keybindings. The "windows key" is usually mod4Mask.jxmonad%Width of the window border in pixels.kxmonad>Border colors for unfocused and focused windows, respectively.lxmonad>Border colors for unfocused and focused windows, respectively.mxmonadExecute arbitrary actions and WindowSet manipulations when managing a new window. You can use this to, for example, always float a particular program, or have a client always appear on a particular workspace.To find the property name associated with a program, use xprop | grep WM_CLASS and click on the client you're interested in.nxmonadXPerform an arbitrary action on each internal state change or X event. Examples include: do nothinglog the state to stdoutSee the  DynamicLog extension for examples.oxmonadDefines a custom handler function for X Events. The function should return (All True) if the default handler is to be run afterwards. To combine event hooks, use mappend or mconcat from Data.Monoid.pxmonad.Perform an arbitrary action at xmonad startup.qxmonad`The available layouts. Note that each layout is separated by |||, which denotes layout choice.rxmonad.The client events that xmonad is interested insxmonad,The root events that xmonad is interested intxmonadaThe preferred terminal program, which is used in a binding below and by certain contrib modules.uxmonad(Whether focus follows the mouse pointer.vxmonadFWhether a mouse click select the focus or is just passed to the windowwxmonadAThe xmonad key bindings. Add, modify or remove key bindings here.F(The comment formatting character is used when generating the manpage)xxmonad5Mouse bindings: default actions bound to mouse eventsBxmonad.The default set of configuration values itselfyxmonadIFinally, a copy of the default bindings in simple textual tabular format.BB(c) Spencer Janssen 2007BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable"not portable, uses mtl, X11, posixNone<>?R Dxmonad| The entry point into xmonad. Attempts to compile any custom main for xmonad, and if it doesn't find one, just launches the default.zxmonadBuild the xmonad configuration file with ghc, then execute it. If there are no errors, this function does not return. An exception is raised in any of these cases: ghc missing6both the configuration file and executable are missingxmonad.hs fails to compile&* wrong ghc in path (fails to compile)* type error, syntax error, ..7Missing XMonad/XMonadContrib modules due to ghc upgrade{xmonada wrapper for |Exmonad*Entry point into xmonad for custom builds.NThis function isn't meant to be called by the typical xmonad user because it:,Does not process any command line arguments.7Therefore doesn't know how to restart a running xmonad.}Does not compile your configuration file since it assumes it's actually running from within your compiled configuration.FUnless you know what you are doing, you should probably be using the D function instead.However, if you are using a custom build environment (such as stack, cabal, make, etc.) you will likely want to call this function instead of D8. You probably also want to have a key binding to the H function that restarts your custom binary with the resume flag set to True.}xmonadgRuns handleEventHook from the configuration and runs the default handler function if it returned True.~xmonadxEvent handler. Map X events onto calls into Operations.hs, which modify our internal model of the window manager state.!Events dwm handles that we don't:  ButtonPress= buttonpress,Expose = expose,PropertyNotify= propertynotify,xmonad[scan for any new windows to manage. If they're already managed, this should be idempotent.xmonadGrab the keys backxmonadXXX comment me|xmonadreplace. to signals compliant window managers to exit.DEDE(c) Don StewartBSD3Don Stewart <dons@galois.com> provisionalNoneS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,.-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~;<=>?@ABCDEFGHKIJLMNOPQRSTUVWXYZ[\]^gecjkihbfa_`ldmonpqrstuvwxyz{|}~      !"#$%&'()*+,-0123456789:;<=>?@ABDE  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,.-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                    ! " # $ % & ' ( ) * + , - . /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 IJ IK IL IM IN IO IP IQ IR IS IT IU IV IW IX IY IZ I[ I\ I] I^ I_ I` Ia Ib Ic Id Ie If Ig Ih Ii Ij kl km kn ko kp kq kr ks kt ku kv kw kx ky kz k{ k| k} k~ k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k                                                                                                          ! ! " # $ % & ' ' () (* (+ (, (- (. (/ (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 ({ (| (} (~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVVWXYZ[\]^_``aabcdefghijkllmnopqr+stuvwxyz{|}~~      !"#$%&'8()*+,-./0123456789:;<=>?@ABCDEFGHI J K L M N O P Q RST UV RWXYZ [\]XY^ _` abcdecfg Rh ijklmnopXYqrst RuXvw RxXvy+zvmnqwrx {|oyztu{|}~s                                                                                                                                                              ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I I J K L M N O P Q Q R S T U V W X Y Z [ [ \ ] ^ _ ` ` a a b c d e f g h h i j k k l m n o p q r s t u v w x x y z { | } ~  "xmonad-0.14-41y0NK2O8jyKM4tXIzFoJD XMonad.CoreXMonad XMonad.ConfigXMonad.StackSet XMonad.LayoutXMonad.OperationsXMonad.ManageHook XMonad.Main Paths_xmonadbaseData.Typeable.InternalTypeableX11-1.9-4LlBmptidprBzBXJCyaiH5Graphics.X11.Xlib.WindowrestackWindowswithdrawWindow iconifyWindowtranslateCoordinates storeNamecreateSimpleWindow createWindowmoveResizeWindow resizeWindow moveWindowreparentWindow mapSubwindowsunmapSubwindows mapWindow lowerWindow raiseWindowcirculateSubwindowsDowncirculateSubwindowsUpcirculateSubwindows destroyWindowdestroySubwindowssetWindowBordersetWindowBorderPixmapsetWindowBorderWidthsetWindowBackgroundsetWindowBackgroundPixmapsetWindowColormap addToSaveSetremoveFromSaveSet changeSaveSet clearWindow clearAreaGraphics.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 lookupStringnoSymbolstringToKeysymkeysymToStringdisplayKeycodesreadBitmapFilematchVisualInfo getVisualInfo visualAllMaskvisualBitsPerRGBMaskvisualColormapSizeMaskvisualBlueMaskMaskvisualGreenMaskMaskvisualRedMaskMaskvisualClassMaskvisualDepthMaskvisualScreenMask visualIDMask visualNoMaskgetPointerControlgetScreenSaverscreenSaverResetscreenSaverActivedefaultBlankingpreferBlankingdontPreferBlankingdefaultExposuresallowExposuresdontAllowExposuressetLocaleModifiers getGeometrygeometrysetDefaultErrorHandler displayName queryPointer queryBestSizequeryBestCursorqueryBestStipple queryBestTile getInputFocus rmInitialize autoRepeatOff autoRepeatOnbellsetCloseDownModelastKnownRequestProcessed setInputFocus grabButton ungrabButton grabPointer ungrabPointergrabKey ungrabKey grabKeyboardungrabKeyboard grabServer ungrabServersupportsLocalesetScreenSaveractivateScreenSaverresetScreenSaverforceScreenSaver warpPointervisualIDFromVisual initThreads lockDisplay unlockDisplay createPixmap freePixmapbitmapBitOrder bitmapUnit bitmapPad lookupKeysymkeycodeToKeysymkeysymToKeycode defineCursorundefineCursorcreateFontCursor freeCursor drawPointdrawLine drawRectangledrawArc fillRectanglefillArccopyArea copyPlaneAllowExposuresModePreferBlankingModeScreenSaverModeVisualInfoMaskGraphics.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 getAtomNames getAtomName internAtomGraphics.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.Event sendEventgettimeofday_in_milliseconds waitForEventget_ConfigureEventget_ExposeEventget_MotionEventget_ButtonEvent asKeyEvent get_KeyEvent get_Window get_EventType allocaXEventqueuedAfterReadingqueuedAfterFlush queuedAlreadyflushsyncpending eventsQueued nextEvent allowEvents selectInput windowEventcheckWindowEvent maskEventcheckMaskEventcheckTypedEventcheckTypedWindowEvent putBackEvent peekEvent QueuedModeXEvent XEventPtr XKeyEvent XKeyEventPtr XButtonEvent XMotionEvent XExposeEvent XMappingEventXConfigureEventGraphics.X11.Xlib.Display openDisplay serverVendor displayStringscreenResourceStringresourceManagerString allPlanes_aux blackPixel whitePixelconnectionNumberdefaultColormap defaultGC defaultDepth defaultScreendefaultScreenOfDisplay displayHeightdisplayHeightMM displayWidthdisplayWidthMMmaxRequestSizedisplayMotionBufferSizeimageByteOrderprotocolRevisionprotocolVersion screenCount defaultVisual displayCells displayPlanesscreenOfDisplaydefaultRootWindow rootWindowqLengthnoOp closeDisplayGraphics.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 fontFromGC queryFontfreeFontGlyph FontStruct CharStructGraphics.X11.Xlib.ImagegetPixelgetImage createImageputImage destroyImage xGetPixelGraphics.X11.Xlib.Region setRegion shrinkRegion offsetRegionclipBox rectInRegion pointInRegion equalRegion emptyRegion xorRegion unionRegionunionRectWithRegionsubtractRegionintersectRegion polygonRegion createRegion rectanglePart rectangleIn rectangleOutRegionRectInRegionResultGraphics.X11.Xlib.ScreenblackPixelOfScreenwhitePixelOfScreen cellsOfScreendefaultColormapOfScreendefaultDepthOfScreendefaultGCOfScreendefaultVisualOfScreendoesBackingStoredoesSaveUndersdisplayOfScreeneventMaskOfScreenminCmapsOfScreenmaxCmapsOfScreenrootWindowOfScreen widthOfScreenwidthMMOfScreenheightOfScreenheightMMOfScreenplanesOfScreenscreenNumberOfScreenGraphics.X11.Xlib.TypesDisplayScreenVisualGCSetWindowAttributesvisualInfo_bitsPerRGBvisualInfo_colormapSizevisualInfo_blueMaskvisualInfo_greenMaskvisualInfo_redMaskvisualInfo_classvisualInfo_depthvisualInfo_screenvisualInfo_visualIDvisualInfo_visual VisualInfoImagePixelPosition DimensionAngle ScreenNumberBufferpt_ypt_xPoint rect_height rect_widthrect_yrect_x Rectangle arc_angle2 arc_angle1 arc_height arc_widtharc_yarc_xArcseg_y2seg_x2seg_y1seg_x1Segment color_flags color_blue color_green color_red color_pixelColorGraphics.X11.TypesxRR_UnknownConnectionxRR_Disconnected xRR_Connected xRR_Reflect_Y xRR_Reflect_XxRR_Rotate_270xRR_Rotate_180 xRR_Rotate_90 xRR_Rotate_0zPixmapxyPixmapxyBitmapfontRightToLeftfontLeftToRightdoBluedoGreendoRedalways 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 noModMask anyModifier mod5MapIndex mod4MapIndex mod3MapIndex mod2MapIndex mod1MapIndexcontrolMapIndex lockMapIndex shiftMapIndexscreenSaverNotify lASTEventrrNotifyOutputPropertyrrNotifyOutputChangerrNotifyCrtcChangerrNotifyrrScreenChangeNotify mappingNotify clientMessagecolormapNotifyselectionNotifyselectionRequestselectionClearpropertyNotifycirculateRequestcirculateNotify resizeRequest gravityNotifyconfigureRequestconfigureNotifyreparentNotify mapRequest mapNotify unmapNotify destroyNotify createNotifyvisibilityNotifynoExposegraphicsExposeexpose keymapNotifyfocusOutfocusIn leaveNotify enterNotify motionNotify buttonRelease buttonPress keyReleasekeyPressscreenSaverNotifyMaskscreenSaverCycleMaskrrOutputPropertyNotifyMaskrrOutputChangeNotifyMaskrrCrtcChangeNotifyMaskrrScreenChangeNotifyMaskownerGrabButtonMaskcolormapChangeMaskpropertyChangeMaskfocusChangeMasksubstructureRedirectMasksubstructureNotifyMaskresizeRedirectMaskstructureNotifyMaskvisibilityChangeMask 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 ImageFormatRotation ReflectionSizeID SubpixelOrder ConnectionRROutputRRCrtcRRMode XRRModeFlagsControl.Monad.IO.ClassliftIOMonadIO Data.Bits.|.1data-default-class-0.1.2.0-2kYzERBLX3wJoPfj7mwVvWData.Default.ClassDefaultdef mtl-2.2.2Control.Monad.State.Classgetsmodifystateputget MonadStateControl.Monad.Reader.Classasksreaderlocalask MonadReaderStackfocusupdown RationalRect Workspacetaglayoutstack workspacescreen screenDetailStackSetcurrentvisiblehiddenfloatingabortnewview greedyViewlookupWorkspacemodify'peek integrate integrate' differentiatefilterindexfocusUp focusDownswapUpswapDownfocusUp' focusDown' focusWindowscreens workspaces allWindows currentTag tagMember renameTag ensureTags mapWorkspace mapLayoutmemberfindTaginsertUpdeletedelete'floatsink swapMaster shiftMaster focusMastershiftshiftWin$fShowRationalRect$fReadRationalRect$fEqRationalRect $fShowStack $fReadStack $fEqStack$fShowWorkspace$fReadWorkspace $fEqWorkspace $fShowScreen $fReadScreen $fEqScreen$fShowStackSet$fReadStackSet $fEqStackSetStateExtensionPersistentExtensionExtensionClass initialValue extensionTypeLayoutMessagesHideReleaseResources SomeMessageMessage LayoutClass runLayoutdoLayout pureLayout emptyLayout handleMessage pureMessage descriptionLayoutQuery ManageHookX ScreenDetailSD screenRectScreenIdS WorkspaceId WindowSpace WindowSetXConfignormalBorderColorfocusedBorderColorterminal layoutHook manageHookhandleEventHookmodMaskkeys mouseBindings borderWidthlogHook startupHookfocusFollowsMouseclickJustFocuses clientMaskrootMaskhandleExtraArgsXConfdisplayconfigtheRoot normalBorder focusedBorder keyActions buttonActions mouseFocused mousePosition currentEventXState windowsetmapped waitingUnmapdraggingnumberlockMaskextensibleStaterunQueryrunXcatchXuserCode userCodeDef withDisplay withWindowSetwithWindowAttributesisRootgetAtomatom_WM_PROTOCOLSatom_WM_DELETE_WINDOW atom_WM_STATEatom_WM_TAKE_FOCUS readsLayout fromMessageiocatchIOspawnspawnPIDxforkrunOnWorkspaces getXMonadDirgetXMonadCacheDirgetXMonadDataDir stateFileName recompilewhenJustwhenXtraceinstallSignalHandlersuninstallSignalHandlers$fMessageEvent$fMessageLayoutMessages $fShowLayout$fLayoutClassLayoutWord64$fDefaultQuery $fMonoidQuery$fSemigroupQuery $fDefaultX $fMonoidX $fSemigroupX$fApplicativeX $fEqScreenId $fOrdScreenId$fShowScreenId$fReadScreenId$fEnumScreenId $fNumScreenId$fIntegralScreenId$fRealScreenId$fEqScreenDetail$fShowScreenDetail$fReadScreenDetail$fEqLayoutMessages $fFunctorX$fMonadX $fMonadIOX $fMonadStateX$fMonadReaderX$fFunctorQuery$fApplicativeQuery $fMonadQuery$fMonadReaderQuery$fMonadIOQueryChoose ChangeLayout FirstLayout NextLayoutMirrorTall tallNMastertallRatioIncrement tallRatioFull IncMasterNResizeShrinkExpandtilesplitVerticallysplitHorizontallysplitHorizontallyBysplitVerticallyBy mirrorRect|||$fMessageResize$fMessageIncMasterN$fLayoutClassFulla$fLayoutClassTalla$fLayoutClassMirrora$fMessageChangeLayout$fLayoutClassChoosea$fMessageNextNoWrap $fShowFull $fReadFull $fShowTall $fReadTall $fShowMirror $fReadMirror$fEqChangeLayout$fShowChangeLayout$fReadLR$fShowLR$fEqLR $fReadChoose $fShowChoose$fEqNextNoWrap$fShowNextNoWrapD StateFilesfWinssfExtmanageunmanage killWindowkillwindowsscaleRationalRect setWMStatesetWindowBorderWithFallbackhiderevealsetInitialPropertiesrefresh clearEvents tileWindow containedIn nubScreensgetCleanedScreenInforescreen setButtonGrab setTopFocus setFocusX sendMessagebroadcastMessagesendMessageWithNoRefresh updateLayout setLayoutscreenWorkspace withFocusedisClientextraModifiers cleanMask initColorwriteStateToFile readStateFile migrateStaterestart floatLocation pointScreen pointWithin mouseDragmouseMoveWindowmouseResizeWindowmkAdjustapplySizeHintsapplySizeHintsContentsapplySizeHints'applyAspectHintapplyResizeIncHintapplyMaxSizeHint$fShowStateFile$fReadStateFileliftXidHook<+> composeAll-->=?<&&><||>titleappNameresource classNamestringPropertygetStringPropertydoFdoFloatdoIgnoredoShift defaultConfig$fDefaultXConfigxmonadlaunchversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameGHC.BaseNothingwith Data.MaybemaybeJustghc-prim GHC.TypesTrueGHC.Listcycle reverseStackIOGHC.ShowshowGHC.ReadReadtransformers-0.5.5.0Control.Monad.Trans.ReaderReaderTControl.Monad.Trans.State.LazyStateTStringSystem.Posix.Types ProcessID unix-2.7.2.2System.Posix.Process.Common forkProcessfindFirstDirOffindFirstDirWithEnvgetXDGDirectoryFalseLRhandlechoosemappend GHC.Classes&&Monad||defaultModMaskhelp buildLaunch sendReplacereplacehandleWithHookscangrabKeys grabButtonsGraphics.X11.Xlib.ExtrasgetModifierMapping getCommand getErrorEventsetErrorHandler setWMHints getWMHintsallHintsBitmaskurgencyHintBitwindowGroupHintBiticonMaskHintBiticonPositionHintBiticonWindowHintBiticonPixmapHintBit stateHintBit inputHintBit iconicState normalStatewithdrawnState getClassHintgetWMNormalHintspWinGravityBit pBaseSizeBit pAspectBit pResizeIncBit pMaxSizeBit pMinSizeBit unmapWindowdeletePropertypropModeAppendpropModePrependpropModeReplacechangeProperty32changeProperty16changeProperty8getWindowProperty32getWindowProperty16getWindowProperty8rawGetWindowPropertyanyPropertyTyperefreshKeyboardMapping setKeyEventsetConfigureEventsetClientMessageEventsetSelectionNotify setEventTypegetWMProtocolsgetTransientForHint fetchNamewcTextEscapementwcDrawImageString wcDrawString wcTextExtents createFontSetwcTextPropertyToTextListgetTextProperty withServergetWindowAttributes waIsViewablewaIsUnviewable waIsUnmapped queryTreeconfigureWindow currentTimeanyKey anyButtonnonegetEvent eventName eventTablexConfigureWindow killClient xQueryTreexGetWindowAttributeschangeWindowAttributesxGetTextPropertyxwcTextPropertyToTextListwcFreeStringListxCreateFontSetfreeStringList freeFontSetxwcTextExtents xwcDrawStringxwcDrawImageStringxwcTextEscapement xFetchNamexGetTransientForHintxGetWMProtocolsxSetErrorHandlerxRefreshKeyboardMappingxChangePropertyxDeletePropertyxGetWindowProperty xUnmapWindowxGetWMNormalHints xGetClassHint xGetWMHints xAllocWMHints xSetWMHints isCursorKey isFunctionKey isKeypadKeyisMiscFunctionKey isModifierKeyisPFKeyisPrivateKeypadKeyxSetSelectionOwnerxGetSelectionOwnerxConvertSelectionmkXErrorHandlergetXErrorHandler_xSetErrorHandler mapRaised xGetCommandxGetModifierMappingxFreeModifiermapEventAnyEventConfigureRequestEventConfigureEventMapRequestEventKeyEvent ButtonEvent MotionEventDestroyWindowEvent UnmapEventMapNotifyEventMappingNotifyEvent CrossingEventSelectionRequestSelectionClear PropertyEvent ExposeEventClientMessageEventRRScreenChangeNotifyEvent RRNotifyEventRRCrtcChangeNotifyEventRROutputChangeNotifyEventRROutputPropertyNotifyEventScreenSaverNotifyEvent ev_event_type ev_serial ev_send_eventev_event_display ev_window ev_parentev_xev_yev_width ev_heightev_border_widthev_above ev_detail ev_value_maskev_eventev_override_redirectev_root ev_subwindowev_time ev_x_root ev_y_rootev_state ev_keycodeev_same_screen ev_buttonev_from_configure ev_requestev_first_keycodeev_countev_modeev_focusev_owner ev_requestor ev_selection ev_target ev_propertyev_atom ev_propstateev_message_typeev_data ev_timestampev_config_timestamp ev_size_indexev_subpixel_order ev_rotation ev_mwidth ev_mheight ev_subtypeev_crtc ev_rr_mode ev_rr_width ev_rr_height ev_output ev_connection ev_rr_state ev_ss_state ev_ss_kind ev_forced WindowChangeswc_xwc_ywc_width wc_heightwc_border_width wc_sibling wc_stack_modeWindowAttributeswa_xwa_ywa_width wa_heightwa_border_width wa_colormapwa_map_installed wa_map_statewa_override_redirect TextPropertytp_value tp_encoding tp_format tp_nitemsFontSet SizeHints sh_min_size sh_max_size sh_resize_inc sh_aspect sh_base_sizesh_win_gravity ClassHintresNameresClassWMHints wmh_flags wmh_inputwmh_initial_statewmh_icon_pixmapwmh_icon_window wmh_icon_x wmh_icon_y wmh_icon_maskwmh_window_groupXErrorEventPtrCXErrorHandler XErrorHandler ErrorEventev_type ev_display ev_serialnum ev_error_codeev_request_code ev_minor_code ev_resourceidGraphics.X11.Xlib.InternalxFree