!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !!!!!""##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&'((((((((()))))))))******* * * * * *****++++++++++++++ +!+",#,$,%,&,',(,),*,+-,---../ 0 1/2/30415161718191:1;1<2=3>4?4@5A5B5C5D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R7S7T7U7V7W8X8Y9Z9[9\9]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?{?|?}?~?????????@@@@@@@@@@@@@AAAAABBCCCCCCCCCCDDDDEEEEEEEEEEEEFFGGGGGGGHHHHHHHHIIIIIJJJJJJJJKKKKLLLLLLMMMMMNNNNOOOOOOPQQQRRRRRSSSSSSSSSTTUUVVVVVVV V V V V VVVVVVVWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8X9X:X;X<X=X>X?X@XAXBXCXDXEXFXGXHXIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZZ[Z\Z]Z^[_[`[a\b\c\d\e\f\g]h]i]j]k]l^m_n_o_p_q_r_s_t`u`vawbxbybzb{b|b}b~bbbcccccccccccccccccccccccccccccccccccccccccccccddddddddeeeeeeeeeeeeeeeeeeffffffffffffggggggggggggggghhhhhijj j j k k kkkkkkkkkkkkkkkkkkk l!l"l#l$l%l&l'm(m)m*m+m,m-m.m/m0m1m2m3n4n56789:;<=>?@AoBoCoDoEoFoGpHpIpJpKpLpMpNpOpPpQpRqSqTqUqVqWqXqYqZq[q\q]q^q_q`qaqbqcqdqeqfqgqhrisjskslsmsnsotptqtrtstttutvtwtxtytzt{t|u}u~uuuuuuuuuuuuuuuvwwwwwwwwwwxxxxxyyyyyyyzzzzzzzz{{||}}}}}~~~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$(c) Dmitry Bogatov <KAction@gnu.org>BSD Dmitry Bogatov <KAction@gnu.org>unstable unportableNone3457CN Wrapper around Query with phanom type s', representing state, saved in window.Apply  StateQuery to Window. Lifted to Query version of &Instance of MonadState for StateQuery.        (c) Nicolas Pouillard 2009BSD-style (see LICENSE)/Nicolas Pouillard <nicolas.pouillard@gmail.com>unstable unportableNone#Set the value of a string property.6Get the name of a string property and returns it as a .`Given a property name, returns its contents as a list. It uses the empty list as default value.cGiven a property name and a list, sets the value of this property with the list given as argument. (c) Jan Vornberger 2009BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone+replacex must be run before xmonad starts to signals to compliant window managers that they must exit and let xmonad take over. (c) 2007 Valery V. VorotyntsevBSD3-style (see LICENSE)*Valery V. Vorotynsev <valery.vv@gmail.com>None Customize = -- delete needless shortcuts and insert those you will use.General variant of 7: customize key bindings of third-party configuration.shortcuts to deletekey bindings to insertoriginal configurationshortcuts to deletekey bindings to insert ((c) Kai Grossjohann <kai@emptydomain.de>BSD3-style (see LICENSE)?unstable unportableNone357&Arguments are nmaster, delta, fraction.tile3. Compute window positions using 3 panes  -(c) Rickard Gustafsson <acura@allyourbase.se>BSD-style (see LICENSE))Rickard Gustafsson <acura@allyourbase.se>unstable unportableNone+357C)(c) Joe Thornber <joe.thornber@gmail.com>BSD3-style (see LICENSE)%Joe Thornber <joe.thornber@gmail.com>stableportableNone357)A spiral layout. The parameter controls the size ratio between successive windows in the spiral. Sensible values range from 0 up to the aspect ratio of your monitor (often 4/3).NBy default, the spiral is counterclockwise, starting to the east. See also *.*Create a spiral layout, specifying the starting cardinal direction, the spiral direction (clockwise or counterclockwise), and the size ratio. !"#$%&'()* !"#$%&'()* )*&'(!"#$%  !"#$%&'()*(c) tim.thelion@gmail.comBSDtim.thelion@gmail.comunstable unportableNone357+,+,+,+,2(c) MATSUYAMA Tomohiro <t.matsuyama.pub@gmail.com>BSD-style (see LICENSE).MATSUYAMA Tomohiro <t.matsuyama.pub@gmail.com>unstable unportableNone+357C/number of master windows0change when resizing by , , 4, 51width of master2Qfraction to multiply the window height that would be given when divided equally.Oslave windows are assigned their modified heights in order, from top to bottom$unspecified values are replaced by 1-./012345 -./012345 -./012345-./012345(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone3576Structure for representing a workspace-specific layout along with a layout for all other workspaces. We store the tags of workspaces to be matched, and the two layouts. We save the layout choice in the Bool, to be used to implement description.7Specify one layout to use on a particular workspace, and another to use on all others. The second layout can be another call to 7 , and so on.8kSpecify one layout to use on a particular set of workspaces, and another to use on all other workspaces.9xSpecify a layout modifier to apply to a particular workspace; layouts on all other workspaces will remain unmodified.:Specify a layout modifier to apply to a particular set of workspaces; layouts on all other workspaces will remain unmodified.AConstruct new PerWorkspace values with possibly modified layouts. 67!the tag of the workspace to match&layout to use on the matched workspacelayout to use everywhere else8tags of workspaces to match#layout to use on matched workspaceslayout to use everywhere else9tag of the workspace to match/the modifier to apply on the matching workspacethe base layout:tags of the workspaces to match0the modifier to apply on the matching workspacesthe base layout6789:6789:6789:(c) Edward Z. YangBSD-style (see LICENSE)<ezyang@cs.stanford.edu>unstable unportableNone357>Construct new PerScreen values with possibly modified layouts.;<target screen width,layout to use when the screen is wide enoughlayout to use otherwise;<;<;<(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone357 =Data type for layout Processes Shrink/Expand messagesMain layout function3Calculate how many windows must be placed at bottom%Calculate rectangle for master window&Calculate rectangle for bottom windows%Calculate rectangle for right windows'Divide bottom rectangle between windows&Divide right rectangle between windowsShift rectangle rightShift rectangle bottom =>=>=> => (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone +34579;GINA$Marks the end of a transformer list.D(Toggle the specified layout transformer.FVA class to identify custom transformers (and look up transforming functions by type).H Construct a  MultiToggle4 layout from a transformer table and a base layout.I Construct a  MultiToggle5 layout from a single transformer and a base layout.JRPrepend an element to a heterogeneous list. Used to build transformer tables for H.K(Construct a singleton transformer table.$?@ABCDEFG    HIJK     ?@ABCDEFGHIJK FGDEJABKHI?@C?@ABCDEFG    HIJK     J&(c) Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNone357MLayout constructor. /Get which column a window is in, starting at 0. L     MIWindows in each column, starting with master. Set to 0 to catch the rest.(Default value for all following columns."How much to change size each time.DInitial size of master area, or column area if the size is negative.  LMMLL     M  (c) 2007 James WebbBSD-style (see xmonad/LICENSE)xmonad#jwebb,sygneca,comunstable unportableNone+37C    NOPQ   R     STUVW ! " # $ % & ' ( NOPQRSTUVW NOSTUVWPQR    NOPQ   R     STUVW ! " # $ % & ' (#(c) 2009 Adam Vogt, 2007 James WebbBSD-style (see xmonad/LICENSE)vogt.adam<at>gmail.comunstable unportableNone+357G )9True to override the aspect, current index, maximum index^ The relative magnitudes (the sign is ignored) of the rational numbers in the second argument determine the relative areas that the windows receive. The first number represents the size of the master window, the second is for the next window in the stack, and so on.The list is extended with  ++ repeat 1, so  mosaic 1.5 [] is like a resizable grid.PThe first parameter is the multiplicative factor to use when responding to the  message._XThese sample functions are meant to be applied to the list of window sizes through the ] message.`OApply a function to the Rational that represents the currently focused window. and  messages are responded to with changeFocused (*delta) or changeFocused (delta/) where delta is the first argument to ^..This is exported because other functions (ex. const 1, (+1).) may be useful to apply to the current area. * + , -X )YZ[\]^ ._` / 0 1 2 3 4 5 6 7 8 9 XYZ[\]^_` YZ[\]^_`X * + , -X )YZ[\]^ ._` / 0 1 2 3 4 5 6 7 8 9+(c) 2009 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNone+3457G aOA box to place a layout in. The stored values are xpos, ypos, width and height.cNThe absolute or relative measures used to describe the area a layout should be placed in. For negative absolute values the total remaining space will be added. For sizes, the remaining space will also be added for zeroes. Relative values are applied on the remaining space after the top-left corner of the box have been removed.f;Change the number of windows handled by the focused layout.hmUse one layout in the specified area for a number of windows and possibly let another layout handle the rest.iUse the specified layout in the described area for N windows and send the rest of the windows to the next layout in the chain. It is possible to supply an alternative area that will then be used instead, if there are no windows to send to the next layout.jAs layoutN, but the number of windows is given relative to the total number of windows remaining to be handled. The first argument is how much to change the ratio when using IncLayoutN, and the second is the initial ratio.kIUse the specified layout in the described area for all remaining windows.lCreate a box with only absolute measurements. If the values are negative, the total remaining space will be added. For sizes it will also be added for zeroes.m-Create a box with only relative measurements.abcdefgh : ;iThe number of windows to handleThe box to place the windows in[Possibly an alternative box that is used when this layout handles all windows that are left'The layout to use in the specified area#Where to send the remaining windowsThe resulting layoutj1How much to change the ratio with each IncLayoutN,The ratio of the remaining windows to handleThe box to place the windows in[Possibly an alternative box that is used when this layout handles all windows that are left'The layout to use in the specified area#Where to send the remaining windowsThe resulting layoutkThe box to place the windows in'The layout to use in the specified areaThe resulting layoutlAbsolute X-PositionAbsolute Y-PositionAbsolute widthAbsolute heightThe resulting a describing the aream8Relative X-Position with respect to the surrounding area8Relative Y-Position with respect to the surrounding area2Relative width with respect to the remaining width4Relative height with respect to the remaining heightThe resulting a describing the area < = > ? @ A B C D E F G abcdefghijklm ijkfgcdeablmhabcdefgh : ;ijklm < = > ? @ A B C D E F G(c) 2013 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone357p Layout itselfnop.Maximum number of windows for the first layout First layout Second layout Hnopnopnop H (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone37qGAutomatic mirroring of hinted layouts doesn't work very well, so this q comes with built-in mirroring.  Grid False is the normal layout,  Grid True1 is the mirrored variant (rotated by 90 degrees).u4The internal function for computing the grid layout. qrs It J K Lu M Nqrstuqrsut qrs It J K Lu M N I (c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357vw Ovwvwvw O(c) Norbert ZehBSD-style (see LICENSE)nzeh@cs.dal.caunstable unportableNone+357 x TallGrid layout. Parameters arenumber of master rowsnumber of master columns&portion of screen used for master grid!x:y aspect ratio of slave windowsincrement for resize messageswThis exists mostly because it was introduced in an earlier version. It's a fairly thin wrapper around "SplitGrid L".z9The geometry change message understood by the master grid{ Change the number of master rows|#Change the number of master columns}/Set the number of master rows to absolute value~2Set the number of master columns to absolute value6Set the fraction of the screen used by the master gridSType to specify the side of the screen that holds the master area of a SplitGrid.!SplitGrid layout. Parameters areside where the master isnumber of master rowsnumber of master columns&portion of screen used for master grid!x:y aspect ratio of slave windowsincrement for resize messages9Geometry change messages understood by Grid and SplitGridFGrid layout. The parameter is the desired x:y aspect ratio of windows%xyz{|}~ P Q R S T U V W X Y Z [ \ ] ^ _ `xyz{|}~z{|}~xyxyz{|}~ P Q R S T U V W X Y Z [ \ ] ^ _ `.(c) 2008 Justin Bogner <mail@justinbogner.com>BSD3-style (as xmonad)%Justin Bogner <mail@justinbogner.com>unstable unportableNone357IA tiling mode based on preserving a nice fixed width window. Supports ,  and  a. bDetermine the width of w# given that we would like it to be n columns wide, using inc9 as a resize increment for windows that don't have one b c b c(c) Jeremy ApthorpBSD-style (see LICENSE)#Jeremy Apthorp <nornagon@gmail.com>unstableportableNone357 d e d e %(c) 2007 Andrea Rossato, David RoundyBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNoneC f g f g!((c) Luis Cabellos <zhen.sydow@gmail.com>BSD3-style (see LICENSE)$Luis Cabellos <zhen.sydow@gmail.com>stableportableNone357yThe Cross Layout draws the focused window in the center of the screen and part of the other windows on the sides. The  and 3 messages increment the size of the main window.eThe focus keybindings change the center window, while other windows cycle through the side positions. With the Cross layout only four windows are shown around the focused window, two ups and two downs, no matter how many are in the current stack. I.e. focus down cycles the window below focused into the center; focus up cycles the window above.1Proportion of screen occupied by the main window.5Percent of main window to increment by when resizing.A simple Cross Layout. It places the focused window in the center. The proportion of the screen used by the main window is 4/5. h i j k l m n o p  h i j k l m n o p"(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone357 q r s t u q r s t u#(c) Peter De WachterBSD-style (see LICENSE)%Peter De Wachter <pdewacht@gmail.com>unstable unportableNone357 v w x y z v w x y z$ Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableSafeG&Create a stack from a list, and the 0-based index of the focused element. If the index is out of bounds, focus will go to the first element.>Turn a stack into a list and the index of its focused element.Create a stack from a list of  {,-tagged values. Focus will go to the first  |* value, or if there is none, to the first  } one.Turn a stack into an  {7-tagged list. The focused element will be tagged with  |, the others with  }.6Insert an element before the focused one, and focus it5Insert an element after the focused one, and focus it.Swap the focused element with the previous one*Swap the focused element with the next one+Swap the focused element with the first one&Move the focus to the previous element"Move the focus to the next element#Move the focus to the first elementGet the focused element Get the element at a given index$Sort a stack of elements supporting  ~/Sort a stack with an arbitrary sorting functionjMap a function over a stack. The boolean argument indcates whether the current element is the focused one without the   argumentMonadic version of Monadic version of 'Apply a function to the focused elementMonadic version of 2Apply a function to the element at the given indexMonadic version of Fiter a stack according to a predicate. The refocusing behavior mimics XMonad's usual one. The boolean argument indicates whether the current element is the focused one. without the   argumentDelete the focused elementDelete the ith element Analogous to  . The  Y argument to the step functions indicates whether the current element is the focused one Analogous to  . The  Y argument to the step functions indicates whether the current element is the focused one without the   argument. without the   argument..Find whether an element is present in a stack.Safe version of  Map a function across both  }s and  |s. The   argument is   in a  |,   in a  }.Monadic version of Get the a from an  Either a aTag the element with  | if the property is true,  } otherwise++++% Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone *+3457GIN,0Type of functions describing modifications to a & layout. They are transformations on  s of groups.Things you shouldn't do:(Forge new windows (they will be ignored)4Duplicate windows (whatever happens is your problem))Remove windows (they will be added again)ODuplicate layouts (only one will be kept, the rest will get the base layout) Note that # is a rank-2 type (indicating that Os must be polymorphic in the layout type), so if you define functions taking Ss as arguments, or returning them, you'll need to write a type signature and add {- LANGUAGE Rank2Types -} at the beginningMessages accepted by -based layouts. All other messages are forwarded to the layout of the currently focused subgroup (as if they had been wrapped in ).SSend a message to the enclosing layout (the one that places the groups themselves);Send a message to the layout for nth group (starting at 0)3Send a message to the layout for the focused group%Send a message to all the sub-layoutsDRefocus the window which should be focused according to the layout.AModify the ordering/grouping/focusing of windows according to a The type of our layouts. "The starting layout for new groups /The layout for placing each group on the screen The window groups  A seed for generating unique ids,A group of windows and its layout algorithm.%Split an infinite list into two. I ended up not needing this, but let's keep it just in case. split :: [a] -> ([a], [a]) split as = snd $ foldr step (True, ([], [])) as where step a (True, (as1, as2)) = (False, (a:as1, as2)) step a (False, (as1, as2)) = (True, (as1, a:as2))>Add a unique identity to a layout so we can follow it around. Create a  layout.UNote that the second parameter (the layout for arranging the groups) is not used on Windows , but on Vs. For this reason, you can only use layouts that don't specifically need to manage  -s. This is obvious, when you think about it. From a seed, generate an infinite list of keys and a new seed. All keys generated with this method will be different provided you don't use  ? again with a key from the list. (if you need to do that, see split instead)Compare the ids of two  values Adapt our groups to a new stack. This algorithm handles window additions and deletions correctly, ignores changes in window ordering, and tries to react to any other stack changes as gracefully as possible. JRemove the windows from a group which are no longer present in the stack. ,Identify the windows not already in a group. qAdd windows to the focused group. If you need to create one, use the given layout and an id from the given list. +Focus the group containing the given window Focus the given window Apply a ModifySpec. helper.Swap the focused window with the previous one.*Swap the focused window with the next one.:Swap the focused window with the (group's) master window.-Swap the focused group with the previous one.)Swap the focused group with the next one.-Swap the focused group with the master group./Move focus to the previous window in the group.+Move focus to the next window in the group.(Move focus to the group's master window.!Move focus to the previous group.Move focus to the next group.Move focus to the master group. helper>Move the focused window to a new group before the current one.=Move the focused window to a new group after the current one.3Move the focused window to the previous group. If  <, when in the first group, wrap around to the last one. If  , create a new group before it./Move the focused window to the next group. If  <, when in the last group, wrap around to the first one. If  , create a new group after it.Split the focused group into two at the position of the focused window (below it, unless it's the last window - in that case, above it).A ##/   &$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>unstable unportableNoneN  '&(c) Trevor Elliott <trevor@galois.com>BSD3-style (see LICENSE)"Trevor Elliott <trevor@galois.com>unstable unportableNoneExecute a named script hook((c) 2009 Adam VogtBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstableportableNone_insertPosition. A manage hook for placing new windows. XMonad's default is the same as using: insertPosition Above Newer. >Modify the StackSet when the workspace containing w is focused   and  focusLast belong in XMonad.StackSet?  ).(c) 2008 Justin Bogner <mail@justinbogner.com>BSD%Justin Bogner <mail@justinbogner.com>unstable unportableNone GConverts a percentage to the format required for _NET_WM_WINDOW_OPACITYSets the opacity of a window)Fades a window out by setting the opacity Makes a window completely opaquecFades a window by the specified amount if it satisfies the first query, otherwise makes it opaque.<Sets the opacity of inactive windows to the specified amountSet the opacity of inactive windows, on the current workspace, to the specified amount. This is specifically usefull in a multi monitor setup. See .2Returns True if the window doesn't have the focus.8Returns True if the window doesn't have the focus, and the window is on the current workspace. This is specifically handy in a multi monitor setup (xinerama) where multiple workspaces are visible. Using this, non-focused workspaces are are not faded out making it easier to look and read the content on them.;Fades out every window by the amount returned by the query.    *-Brandon S Allbery KF8NH <allbery.b@gmail.com>BSDBrandon S Allbery KF8NHunstable unportableNone35BA FadeHook is similar to a ManageHook, but records window opacity.Render a window fully opaque."Render a window fully transparent. Specify a window's transparency.3Specify a window's opacity; this is the inverse of . An alias for . An alias for .  An alias for . An alias for .  An alias for .  An alias for . An alias for .  An alias for . Like doF, but usable with  -like hooks that aren't  ( wrapped around transforming functions ( ). The identity , which renders windows .-A Query to determine if a window is floating.A  $ to fade windows under control of a ., which is similar to but not identical to  .A  t to handle fading and unfading of newly mapped or unmapped windows; this avoids problems with layouts such as XMonad.Layout.Full or XMonad.Layout.Tabbed(. This hook may also be useful with XMonad.Hooks.FadeInactive. ,The window's transparency as a fraction. transparency 1 is the same as  , whereas transparency 0 is the same as .*The opacity of a window as a fraction.  opacity 1 is the same as  , whereas  opacity 0 is the same as .                       +(c) Roman CheplyakaBSD-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone <Most of the property constructors are quite self-explaining.WM_WINDOW_ROLE propertyWM_CLIENT_MACHINE property%Does given window have this property?+Does the focused window have this property?1Find all existing windows with specified propertyConvert property to     (see XMonad.ManageHook) Get a window property from atom!!Get a window property from string ! ! !  ! ,U(c) 2009 Anders Engstrom <ankaan@gmail.com>, 2011 Ilya Portnov <portnov84@rambler.ru>BSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone +3457GN"Data type for our layout.$OContains no actual data, but is needed to help select the correct instance of &&Type class for predicates. This enables us to manage not only Windows, but any objects, for which instance Predicate is defined.JAnother instance exists in XMonad.Util.WindowPropertiesRE in xmonad-extras)Use the specified layout in the described area windows that match given predicate and send the rest of the windows to the next layout in the chain. It is possible to supply an alternative area that will then be used instead, if there are no windows to send to the next layout.*IUse the specified layout in the described area for all remaining windows. ;Split given list of objects (i.e. windows) using predicate."#$%&' A predicate that is always True.(BCheck if given object (window or smth else) matches that predicate)The box to place the windows in[Possibly an alternative box that is used when this layout handles all windows that are left'The layout to use in the specified area#Where to send the remaining windowsThe resulting layout*The box to place the windows in'The layout to use in the specified areaThe resulting layout lm"#$%&'()* "#)*ml&'($%"#$%&'()* -+(c) Anton Vorontsov <anton@enomsg.org> 2014BSD-style (as xmonad)"Anton Vorontsov <anton@enomsg.org>unstable unportableNone+Given a window, tell if it is a local or a remote process. Normally, it checks XMONAD_REMOTE property. If it does not exist (i.e. the manageRemote hook was not deployed in user's config), it falls back to checking environment variables and assuming that hostname never changes.,OUse this hook to let XMonad properly track remote/local windows. For example, ,manageHook = manageRemote =<< io getHostName.-Use this hook if you want to manage XMONAD_REMOTE properties, but don't want to use an external getHostName in your config. That way you are retreating to environment variables. +,-+,-+,- +,-., 2007 Ivan Tarasov <Ivan.Tarasov@gmail.com>BSDIvan.Tarasov@gmail.com experimental unportableNone. sets WM name.... BSD!Tony Morris <haskell@tmorris.net>None00The value to add to your log hook configuration./0 /0 /0/0/(c) Brandon S Allbery, 2015BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone1Run a   when a specific property is changed on a window. Note that this will run on any window which changes the property, so you should be very specific in your  MansgeHook= matching (lots of windows change their titles on the fly!):dynamicPropertyChange WM_NAME (className =?  Iceweasel  &&% title =? "whatever" --> doShift "2")mNote that the fixity of (-->) won't allow it to be mixed with ($), so you can't use the obvious $ shorthand. KdynamicPropertyChange "WM_NAME" $ title =? "Foo" --> doFloat -- won't work!-Consider instead phrasing it like any other  :  , handleEventHook = dynamicPropertyChange "WM_NAME" myDynHook <+> handleEventHook baseConfig {- ... -} myDynHook = composeAll [...]24A shorthand for the most common case, dynamic titles121212120!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone3Output a window by ID in hex, decimal, its ICCCM resource name and class, and its title if available. Also indicate override_redirect with an exclamation mark, and wrap in brackets if it is unmapped or withdrawn. 3 33 3 1!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone 4LPrint the state of the current window stack for the current workspace to stderr', which for most installations goes to ~/.xsession-errors. XMonad.Util.DebugWindow+ is used to display the individual windows.5EPrint the state of the current window stack for all workspaces to stderr', which for most installations goes to ~/.xsession-errors. XMonad.Util.DebugWindow+ is used to display the individual windows.64 packaged as a   . (Currently this is identical.)7'debugStackFull packaged as a   . (Currently this is identical.)84 packaged as a  . You almost certainly do not want to use this unconditionally, as it will cause massive amounts of output and possibly slow xmonad down severely.95 packaged as a  . You almost certainly do not want to use this unconditionally, as it will cause massive amounts of output and possibly slow xmonad down severely.:/Dump the state of the current workspace in the StackSet as a multiline  .;(Dump the state of all workspaces in the StackSet as a multiline  :. @@@ this is in stackset order, which is roughly lru-ish -Dump the state of a workspace in the current StackSet as a multiline  . 0 Workspace "foo:: mm * ww ^ww A * indicates the focused window, ^ indicates a floating window 456789:; 456789:;45:;6789 456789:; 20(c) 2011 Brandon S Allbery <allbery.b@gmail.com>BSD'Brandon S Allbery <allbery.b@gmail.com>unstable unportableNone<(Print key events to stderr for debugging Convenient showHex variant ,Convert a modifier mask into a useful string< <<< 3!(c) Brandon S Allbery KF8NH, 2012BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNoneC=Event hook to dump all received events. You should probably not use this unconditionally; it will produce massive amounts of output. 0Dump an X11 event. Can't be used directly as a  . Emit information about an atom. /Emit an atom with respect to the current event. 0Emit a window with respect to the current event. (Helper to emit tagged event information. Deconstuct a list of  s into raw bytes 2Specify how to decode some common client messages. ,Convert a modifier mask into a useful string Retrive, parse, and dump a window property. As all the high-level property interfaces lose information necessary to decode properties correctly, we work at the lowest level available.  Parse and dump a property (or a  ClientMessage). A simplified version of 'dumpProperty\''), to format random values from events. <Launch a decoding parser, returning success and final state. zThe top level property decoder, for a wide variety of standard ICCCM and EWMH window properties. We pass part of the  ' as arguments for pattern matching.m =                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >==`    =                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >4.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone357>? ?>?>?>? ?5$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone3457AModify all screens.BModify current screen.@ @AB AC B@ABCABC@@ @AB AC B6)(c) Peter De Wachter <pdewacht@gmail.com>BSD3-style (see LICENSE)^Peter De Wachter <pdewacht@gmail.com> Andrea Rossato <andrea.rossato@unibz.it>unstable unportableNone37I*Lay out windows similarly to Mirror tiled.J#Lay out windows similarly to tiled.M$number of windows in the master paneN how much to change when resizingO$ratio between master/nonmaster panesPMWhere to place windows that are smaller than their preordained rectangles.QTall or Wide (mirrored) layout?DEFGHIJKLMNOPQ C D E FDEFGHIJKLMNOPQKLMNOPQHIJDEFGDEFGHIJKLMNOPQ C D E F7$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone+357GRSTU GV H IRSTUVVRSTURSTU GV H I8$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone357WX J KWXWXWX J K9 (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone357YZ[\] LYZ[\]YZ[]\YZ[\] L:(c) 2009 Collabora LtdBSD-style (see xmonad/LICENSE))Andres Salomon <dilinger@collabora.co.uk>unstable unportableNone^Set the default (root) cursor^M 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 { | } ~  ^^^;%(c) Yorick Laupa <yo.eight@gmail.com>BSD!Yorick Laupa <yo.eight@gmail.com>stable unportableNone_`_`_`_`<"(c) Devin Mullins <me@twifkak.com>BSDDevin Mullins <me@twifkak.com>stable unportableNoneabababab=(c) glasser@mit.eduBSDglasser@mit.edustable unportableNone357cd cdcdcd >$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone+357G eA e is simply a container for a layout modifier combined with an underlying layout. It is, of course, itself a layout (i.e. an instance of  ).hh# allows you to intercept a call to   before it is called on the underlying layout, in order to perform some effect in the X monad, and/or modify some of the parameters before passing them on to the  $ method of the underlying layout.The default implementation of h simply calls   on the underlying layout.i Similar to ht, but this function also allows you update the state of your layout modifier(the second value in the outer tuple).If both i and m2 return a modified state of the layout modifier, m~ takes precedence. If this function returns a modified state, this state will internally be used in the subsequent call to m as well.jj allows you to spy on messages to the underlying layout, in order to have an effect in the X monad, or alter the layout modifier state in some way (by returning  Just nm, where nm is a new modifier). In all cases, the underlying layout will also receive the message as usual, after the message has been processed by j.gIf you wish to possibly modify a message before it reaches the underlying layout, you should use ke instead. If you do not need to modify messages or have access to the X monad, you should use l instead.The default implementation of j calls p when receiving a   or  # method (after which it returns Nothing-), and otherwise passes the message on to l.kk allows you to intercept messages sent to the underlying layout, in order to have an effect in the X monad, alter the layout modifier state, or produce a modified message to be passed on to the underlying layout.The default implementation of k$ simply passes on the message to j.llz allows you to spy on messages sent to the underlying layout, in order to possibly change the layout modifier state.The default implementation of l- ignores messages sent to it, and returns Nothing6 (causing the layout modifier to remain unchanged).mm# allows you to intercept a call to  , on workspaces with at least one window, after it is called on the underlying layout, in order to perform some effect in the X monad, possibly return a new layout modifier, and/or modify the results of   before returning them.-If you don't need access to the X monad, use n instead. Also, if the behavior you need can be cleanly separated into an effect in the X monad, followed by a pure transformation of the results of  &, you should consider implementing o and n instead of m.*On empty workspaces, the Stack is Nothing.The default implementation of m calls o and then n.nn# allows you to intercept a call to   after it is called on the underlying layout, in order to modify the list of window/rectangle pairings it has returned, and/or return a new layout modifier.The default implementation of n- returns the window rectangles unmodified.oo/ is called by the default implementation of mE, and as such represents an X action which is to be run each time  ( is called on the underlying layout, after  / has completed. Of course, if you override m, then o5 will not be called unless you explicitly call it.The default implementation of o is  return () (i.e., it has no effect).pp/ is called by the default implementation of j upon receiving a   or a   message.4The default implementation, of course, does nothing.qq$ is used to give a String description to this layout modifier. It is the empty string by default; you should only override this if it is important that the presence of the layout modifier be displayed in text representations of the layout (for example, in the status bar of a XMonad.Hooks.DynamicLog user).rr gives a String description for the entire layout (modifier + underlying layout). By default, it is derived from the concatenation of the q with the  c of the underlying layout, with a "smart space" in between (the space is not included if the q is empty). The   instance for a e defines the semantics of a g! applied to an underlying layout.efghthe layout modifiercurrent workspacescreen rectangleijklmthe layout modifierscreen rectanglecurrent window stack;(window,rectangle) pairs returned by the underlying layoutnthe layout modifierscreen rectanglecurrent window stack<(window, rectangle) pairs returned by the underlying layoutopqr efghijklmnopqrghijklmnopqrefefg hijklmnopqr ?$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone3457GsUsed to indicate to the ~ instance for w# how two lists should be combined.tuses  uuses  vuses  wIn order of increasing ambiguity (less borders more frequently), where subsequent constructors add additional cases where borders are not drawn than their predecessors. These behaviors make most sense with with multiple screens: for single screens, z or  makes more sense.xuThis constructor is used to combine the borderless windows provided by the SetsAmbiguous instances from two other w data types.yDOnly remove borders on floating windows that cover the whole screenzFNever remove borders when ambiguous: this is the same as smartBorders{7Focus in an empty screens does not count as ambiguous.|8No borders on full when all other screens have borders.}~Borders are never drawn on singleton screens. With this one you really need another way such as a statusbar to detect focus.~mSetsAmbiguous allows custom actions to generate lists of windows that should not have borders drawn through bTo add your own (though perhaps those options would better belong as an aditional constructor to w$), you can add the function as such: 4data MyAmbiguity = MyAmbiguity deriving (Read, Show) instance SetsAmbiguous MyAmbiguity where hiddens _ wset mst wrs = otherHiddens Screen \\ otherHiddens OnlyFloat where otherHiddens p = hiddens p wset mst wrsJThe above example is redundant, because you can have the same result with: YlayoutHook = lessBorders (Combine Difference Screen OnlyFloat) (Tall 1 0.5 0.03 ||| ... )To get the same result as : 8layoutHook = lessBorders Never (Tall 1 0.5 0.03 ||| ...)-This indirect method is required to keep the   and  < for ConfigurableBorder so that xmonad can serialize state.5Removes all window borders from the specified layout.3Forces a layout to use the specified border width.  is equivalent to  0.HRemoves the borders from a window under one of the following conditions:xThere is only one screen and only one window. In this case it's obvious that it has the focus, so no border is needed.:A floating window covers the entire screen (e.g. mplayer).nApply a datatype that has a SetsAmbiguous instance to provide a list of windows that should not have borders._This gives flexibility over when borders should be drawn, in particular with xinerama setups: w has a number of useful ~ instancesstuvwxyz{|}~    stuvwxyz{|}~~wxyz{|}stuvstuvwxyz{|}~    @*(c) 2008 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone+3457G $store borings with a specific source user-chosen borings maybe mark hidden windows|UpdateBoring is sent before attempting to view another boring window, so that layouts have a chance to mark boring windows.4Mark windows that are not given rectangles as boring  Variant of  that works on a Stack rather than an entire StackSet.       A(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone+347    B(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone3457 Data type for layout modifier ,Handle Shrink/Expand and IncMasterN messages Main layout function ACalculates height of master area, depending on number of windows. Rectangle for master area Rectangle for slave area  Divide rectangle between windows Shift rectangle rightUser interface function      C+(c) 2014 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)&(c) Anders Engstrom <ankaan@gmail.com>unstable unportableNone+3457@G QChange the state of the avoid float layout modifier conserning a specific window.Add a window to always avoid.%Stop always avoiding selected window./Toggle between always avoiding selected window.:Change the state of the whole avoid float layout modifier.-Toggle between avoiding all or only selected.2Set if all all floating windows should be avoided./Clear the set of windows to specifically avoid.Avoid floating windows unless the resulting area for windows would be too small. In that case, use the whole screen as if this layout modifier wasn't there. No windows are avoided by default, they need to be added using signals.Avoid floating windows unless the resulting area for windows would be too small. In that case, use the whole screen as if this layout modifier wasn't there. 'Find all maximum empty rectangles (MERs) that are axis aligned. This is done in O(n^2) time using a modified version of the algoprithm MERAlg 1 described in "On the maximum empty rectangle problem" by A. Naamad, D.T. Lee and W.-L HSU. Published in Discrete Applied Mathematics 8 (1984.) uSplit rectangles that horizontally fully contains another rectangle without sharing either the left or right side. JFind all horizontal gaps that are left empty from top to bottom of screen.% Layout to modify.8Minimum width of the area used for non-floating windows.9Minimum height of the area used for non-floating windows.1If floating windows should be avoided by default.Layout to modify. 1The current rectangle where the top edge is used.4The current rectangle where the bottom edge is used.ZList of MERs found so far, left bound, right bound and list of rectangles used for bounds. Bounding rectangle.FList of all rectangles that can cover areas in the bounding rectangle.     D(c) 2009 Ilya PortnovBSD-style (see xmonad/LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone357Data type for LayoutModifier :Function that decides where master window should be placeddModifier that puts master window in center, other windows in background are managed by given layoutnModifier that puts master window in top right corner, other windows in background are managed by given layout !Internal function, doing main job Place master window (it's Rectangle is given), using the given Positioner. If second argument is empty (that is, there is only one window on workspace), place that window fullscreen. IFunction that calculates Rectangle at top right corner of given Rectangle @Function that calculates Rectangle at center of given Rectangle.        E Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone357 !The available renaming operations+Remove a number of characters from the left,Remove a number of characters from the rightAdd a string on the rightAdd a string on the left&Remove a number of words from the left'Remove a number of words from the rightAAdd a string to the right, prepending a space to it if necessary?Add a string to the left, appending a space to it if necessaryRepace with another wtring4Apply a list of modifications in left-to-right orderApply a list of ( values to a layout, from left to right.    F$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone3457(Deprecated) Rename a layout./(Deprecated) Remove the first word of the name.G(c) 2008 Quentin MoserBSD3orphanedunstable unportableNone+357,Data type for an escaped message. Send with .)the UnEscape layout modifier. Listens to 6s and sends their nested message to the inner layout.athe Ignore layout modifier. Prevents its inner layout from receiving messages of a certain type. Creates an .1Applies the UnEscape layout modifier to a layout.Applies the Ignore layout modifier to a layout, blocking all messages of the same type as the one passed as its first argument.        H(c) Peter Jones 2015BSD3-style (see LICENSE)pjones@devalot.comunstable not portableNone+347GMessages for the  HiddenWindows layout modifier.Hide a window.Restore window (FILO).Restore window (FIFO). Apply the  HiddenWindows layout modifier.vRemove the given window from the current layout. It is placed in list of hidden windows so it can be restored later.Restore a previously hidden window. Using this function will treat the list of hidden windows as a FIFO queue. That is, the first window hidden will be restored.Restore a previously hidden window. Using this function will treat the list of hidden windows as a FILO queue. That is, the most recently hidden window will be restored.      I8(c) Roman Cheplyaka, Ivan N. Veselov <veselov@gmail.com>BSD-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone3457WThis is for compatibility with old configs only and will be removed in future versions!Data type for LayoutModifier which converts given layout to IM-layout (with dedicated space for the roster and original layout for chat windows)yModifier which converts given layout to IM-layout (with dedicated space for roster and original layout for chat windows)-IM layout modifier applied to the Grid layout }Internal function for adding space for the roster specified by the property and running original layout for all chat windows GLike find, but works with monadic computation instead of pure function.     JK(c) 2009 Adam Vogt (c) 2009 Max Rabkin -- wrote limitSelectBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone+357GOnly display the first n windows. Only display nh windows around the focused window. This makes sense with layouts that arrange windows linearily, like .Only display the first m windows and r others. The  IncMasterN message will change m4, as well as passing it onto the underlying layout. FA non-wrapping, fixed-size slice of a stack around the focused element                      K(c) Ismael Carnales, Lukas MaiBSD-style (see LICENSE)%Ismael Carnales <icarnales@gmail.com>unstable unportableNone3457GNData type for LayoutModifier which converts given layout to a mastered layout hInternal function for adding a master window and let the modified layout handle the rest of the windows Shift rectangle down  Divide rectangle between windows   k, number of master windowsdelta&, the ratio of the screen to resize byfrac9, what portion of the screen to use for the master windowthe layout to be modifieddelta&, the ratio of the screen to resize byfrac9, what portion of the screen to use for the master windowthe layout to be modifieddelta&, the ratio of the screen to resize byfrac9, what portion of the screen to use for the master windowthe layout to be modified             L(c) 2008 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone+37switch to Full layoutswitch to Full with no bordersMirror the current layout.Remove borders.Apply smart borders.  M#(c) Brandon S Allbery, Brent YorgeyBSD-style (see LICENSE)<allbery.b@gmail.com>unstable unportableNone357Structure for representing a host-specific layout along with a layout for all other hosts. We store the names of hosts to be matched, and the two layouts. We save the layout choice in the Bool, to be used to implement description.Specify one layout to use on a particular host, and another to use on all others. The second layout can be another call to  , and so on.aSpecify one layout to use on a particular set of hosts, and another to use on all other hosts.nSpecify a layout modifier to apply on a particular host; layouts on all other hosts will remain unmodified.ySpecify a layout modifier to apply on a particular set of hosts; layouts on all other hosts will remain unmodified. ;Construct new OnHost values with possibly modified layouts. f except that if one side has a dot and the other doesn't, we truncate the one that does at the dot. 7String equality, possibly truncating one side at a dot.  the name of the host to match!layout to use on the matched hostlayout to use everywhere elsenames of hosts to matchlayout to use on matched hostslayout to use everywhere elsename of the host to match*the modifier to apply on the matching hostthe base layoutnames of the hosts to match+the modifier to apply on the matching hoststhe base layout            N<(c) 2010 & 2013 Adam Vogt 2011 Willem VanlintBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone37GWhen focus is on the tiled layer, the underlying layout is run with focus on the window named by the WM_TRANSIENT_FOR property on the floating window.6Runs another layout with a remembered focus, provided:9the subset of windows doesn't include the focus in XStateBit was previously run with a subset that included the XState focus-the remembered focus hasn't since been killed   ! " # $ % &  ! " # $ % &O/(c) Jan Vornberger 2009, Alejandro Serrano 2010BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone+347G  ' ( ) * + , -  ' ( ) * + , -P(c) Justin Bogner 2010BSD3-style (see LICENSE)%Justin Bogner <mail@justinbogner.com>unstable not portableNoneQ(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNoneR(c) 2007 James WebbBSD3-style (see LICENSE)xmonad#jwebb,sygneca,comunstable unportableNone+3457Like V, but allows you to specify the amount of padding placed around the maximized window.  . / 0 1 . / 0 1S(c) daniel@wagner-home.comBSD3-style (see LICENSE)daniel@wagner-home.comunstable unportableNone[Move the mouse cursor to a corner of the focused window. Useful for uncluttering things.BInternally, this uses numerical parameters. We parametrize on the I type so the user need not see the violence inherent in the system. and  can be used in a variety of ways. Suppose you wanted to emulate Ratpoison's 'banish' command, which moves the mouse pointer to a corner? warpToWindow can do that! Same as F but moves the mouse to the corner of the currently focused screen zWarp the pointer to a given position relative to the currently focused window. Top left = (0,0), bottom right = (1,1).gWarp the pointer to the given position (top left = (0,0), bottom right = (1,1)) on the given screen.  2 3   2 3T(c) Daniel SchoepeBSD3-style (see LICENSE)!Daniel Schoepe <asgaroth_@gmx.de>unstable unportableNoneCChanges the focus if the mouse is moved within an unfocused window.4Adjusts the event mask to pick up pointer movements.U'(c) Jason Creighton <jcreigh@gmail.com>BSD3-style (see LICENSE)#Jason Creighton <jcreigh@gmail.com>unstable unportableNoneGiven a  from key bindings to X () actions, return an action which waits for a user keypress and executes the corresponding action, or does nothing if the key is not found in the map.Like 9, but executes a default action if the key did not match.V$2009 Adam Vogt <vogt.adam@gmail.com>BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone*345;N RAn existential wrapper so that different types can be combined in lists, and maps 4 but add a description that is  show message2. Note that not all messages have show instances. 5) but the description is the string passedF, but propagate the descriptions of the actions. Does this belong in XMonad.Actions.Submap?@Combine keymap lists with actions that may or may not have names 6Or allow another lookup table? An action to send to  ' for showing the keybindings. See also   and   Merge the supplied keys with I, also adding a keybinding to run an action for showing the keybindings. Without merging with HA version of the default keys from the default configuration, but with  instead of X ()For a prettier presentation: keymask, keysym of 0 are reserved for this purpose: they do not happen, afaik, and keysymToString 0 would raise an error otherwiseThese are just the  NamedAction| constructor but with a more specialized type, so that you don't have to supply any annotations, for ex coercing spawn to X () from the more general MonadIO m => m () 7 8 6 9 : ;     < = > ? @ A B           7 8 6 9 : ;     < = > ? @ A BW (c) Lukas MaiBSDLukas Mai <l.mai@web.de>unstable unportableNoneA grouping type, which can hold the outcome of a predicate Query. This is analogous to group types in regular expressions. TODO: create a better API for aggregating multiple Matches logicallyYA ManageHook that may or may not have been executed; the outcome is embedded in the MaybeDenotes a side of a screen. S stands for South, NE for Northeast etc. C stands for Center. An alternative   composer. Unlike  C, it stops as soon as a candidate returns a  D; value, effectively running only the first match (whereas  C, continues and executes all matching rules).!2q /=? x. if the result of q equals x, return False"Aq <==? x. if the result of q equals x, return True grouped with q#Dq </=? x. if the result of q notequals x, return True grouped with q$A helper operator for use in  J. It takes a condition and an action; if the condition fails, it returns  E from the   so  # will go on and try the next rule.%A helper operator for use in  CL. It takes a condition and a function taking a grouped datum to action. If p+ is true, it executes the resulting action.&A helper operator for use in  J. It takes a condition and a function taking a groupdatum to action. If pE is true, it executes the resulting action. If it fails, it returns  E from the   so  " will go on and try the next rule.'Return the current workspace(@A predicate to check whether a window is a KDE system tray icon.)<Helper to check if a window property contains certain value.*PA predicate to check whether a window wants to fill the whole screen. See also 2.+2A predicate to check whether a window is a dialog.-A predicate to check whether a window is Transient. It holds the result which might be the window it is transient to or it might be  E..A convenience R that will check to see if a window is transient, and then move it to its parent./. set to a  0 converts s to  s1-Floats the new window in the given rectangle.2DFloats the window and makes it use the whole screen. Equivalent to 1 $  F 0 0 1 1.3tFloats a new window using a rectangle computed as a function of the rectangle that it would have used by default.4Floats a new window with its original size, and its top left corner at a specific point on the screen (both coordinates should be in the range 0 to 1).5MFloats a new window with its original size on the specified side of a screen69Floats a new window with its original size, but centered.7Hides window and ignores it.% G !"#$%&'()*+,-./019The rectangle to float the window in. 0 to 1; x, y, w, h.234567$ !"#$%&'()*+,-./01234567$ $!"#%&')(*+,-0./1265437 G  !"#$%&'()*+,-./01234567$%&X(c) 2010 Audun SkaugenBSD-style (see xmonad/LICENSE)audunskaugen@gmail.comunstable unportableNone+3457 ;Messages that control the fullscreen state of the window. AddFullscreen and RemoveFullscreen are sent to all layouts when a window wants or no longer wants to be fullscreen. FullscreenChanged is sent to the current layout after one of the above have been sent.?rModifies your config to apply basic fullscreen support -- fullscreen windows when they request it. Example usage: Cmain = xmonad $ fullscreenSupport $ defaultConfig { ... }@GLayout modifier that makes fullscreened window fill the entire screen.AfAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.BkLayout modifier that makes the fullscreened window fill the entire screen only if it is currently focused.CfAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.DYHackish layout modifier that makes floating fullscreened windows fill the entire screen.EfAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.F8The event hook required for the layout modifiers to workGXManage hook that sets the fullscreen property for windows that are initially fullscreenHxA version of fullscreenManageHook that lets you specify your own query to decide whether a window should be fullscreen.8 H9 I: J;<=>?@ABCDEFGH K L M N O89:;<=>?@ABCDEFGH?@BACDEFGH;<=>89:8 H9 I: J;<=>?@ABCDEFGH K L M N OY(c) Roman CheplyakaBSD-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone+37G IhMessages without names affect all monitors. Messages with names affect only monitors whose names match.R1property which uniquely identifies monitor windowSspecifies where to put monitorTis it visible by default?U2name of monitor (useful when we have many of them)Vis it shown on all layouts?W opacity levelX Template for P record. At least R and S) should be redefined. Default settings: T is  , V is  .YGManageHook which demanages monitor window and applies opacity settings.IJKLMNOPQRSTUVWX PY Q R7IJKLMNOPQRSTUVWXYPQRSTUVWXIJKLMNO7YIJKLMNOPQRSTUVWX PY Q RZBSD3-style (see LICENSE)unstable unportableNoneZ7Un-float all floating windows on the current workspace.[9Apply a function to all windows on the current workspace.\ Execute an  S1 action for each window on the current workspace.].Kill all the windows on the current workspace.Z[\]Z[\]Z\[]Z[\]BSD3-style (see LICENSE)unstable unportableNoneZZ[((c) Andrea Rossato and David Roundy 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone_RStart a timer, which will send a ClientMessageEvent after some time (in seconds).`Given a ^ and an  T, run an action when the  T. has been sent by the timer specified by the ^^_`^_`_`^^_`\+(c) Anton Vorontsov <anton@enomsg.org> 2014BSD-style (as xmonad)"Anton Vorontsov <anton@enomsg.org>unstable unportableNone37GaData type for ModifiedLayout. The constructor lets you to specify a custom mark/description modifier and a delay. You can also use f helper function.fgConvert a layout to a stoppable layout using the default mark ("Stoppable") and a delay of 15 seconds. abcde U V W X Yf Zabcdefabcdefabcde U V W X Yf Z]H(c) 2009 Anze Slosar translation to Haskell by Adam VogtBSD3-style (see LICENSE)<vogt.adam@gmail.com>unstable unportableNonegmRandomColor fixes constraints when generating random colors. All parameters should be in the range 0 -- 0xffhEspecify the minimum and maximum lowest values for each color channel.i9specify the saturation and value, leaving the hue random.j randomBg'* produces a random hex number in the form  '#xxyyzz'krandomBg8 starts a terminal with the background color taken from jThis depends on the your  [1 configuration field accepting an argument like -bg  '#ff0023' gh \ ]i ^ _ ` ajkghijkjkghighi \ ] ^ _ ` ajk^(c) Miikka Koskinen 2007BSD3-style (see LICENSE)xmonad@s001.ethrael.comunstable unportableNonelMove the focused window to the master pane. All other windows retain their order. If focus is in the master, swap it with the next windo in the stack. Focus stays in the master.llll_#(c) Nelson Elhage <nelhage@mit.edu>BSDNelson Elhage <nelhage@mit.edu>unstable unportableNoneCm-The type of the index of a screen by locationo'Translate a physical screen index to a ScreenIdp!Switch to a given physical screenq1Send the active window to a given physical screen b`Compare two screens by their top-left corners, ordering | top-to-bottom and then left-to-right. cKGet ScreenId for neighbours of the current screen based on position offset.rjApply operation on a WindowSet with the WorkspaceId of the next screen in the physical order as parameter.snApply operation on a WindowSet with the WorkspaceId of the previous screen in the physical order as parameter. mnopq b c drsmnopqrsmnopqrs mnopq b c drs`(c) Roman Cheplyaka, 2008BSD3-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNonetYUses supplied function to decide which action to run depending on current workspace name.uIf current workspace is listed, run appropriate action (only the first match counts!) If it isn't listed, then run default action (marked with empty string, ""), or do nothing if default isn't supplied.tutututua (c) Lukas MaiBSD3-style (see LICENSE)Lukas Mai <l.mai@web.de>stable unportableNonevXToggle the border of the currently focused window. To use it, add a keybinding like so: ., ((modm, xK_g ), withFocused toggleBorder)vvvvb]Devin Mullins <me@twifkak.com> Brent Yorgey <byorgey@gmail.com> (key parsing)BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>Nonew?Add or override keybindings from the existing set. Example use: main = xmonad $ def { terminal = "urxvt" } `additionalKeys` [ ((mod1Mask, xK_m ), spawn "echo 'Hi, mom!' | dzen2 -p 4") , ((mod1Mask, xK_BackSpace), withFocused hide) -- N.B. this is an absurd thing to do ]0This overrides the previous definition of mod-m.Note that, unlike in xmonad 0.4 and previous, you can't use modMask to refer to the modMask you configured earlier. You must specify mod1Mask (or whichever), or add your own myModMask = mod1Mask line.xLike w, except using short String key descriptors like "M-m" instead of (modMask, xK_m)+, as described in the documentation for }. For example: main = xmonad $ def { terminal = "urxvt" } `additionalKeysP` [ ("M-m", spawn "echo 'Hi, mom!' | dzen2 -p 4") , ("M-<Backspace>", withFocused hide) -- N.B. this is an absurd thing to do ]y:Remove standard keybindings you're not using. Example use: {main = xmonad $ def { terminal = "urxvt" } `removeKeys` [(mod1Mask .|. shiftMask, n) | n <- [xK_1 .. xK_9]]zLike y, except using short String key descriptors like "M-m" instead of (modMask, xK_m)+, as described in the documentation for }. For example: jmain = xmonad $ def { terminal = "urxvt" } `removeKeysP` ["M-S-" ++ [n] | n <- ['1'..'9']]{Like w, but for mouse bindings.|Like y, but for mouse bindings.}SGiven a config (used to determine the proper modifier key to use) and a list of (String, X ()) pairs, create a key map by parsing the key sequence descriptions contained in the Strings. The key sequence descriptions are "emacs-style": M-, C-, S- , and M#-2 denote mod, control, shift, and mod1-mod5 (where # is replaced by the appropriate number) respectively. Note that if you want to make a keybinding using 'alt' even though you use a different key (like the 'windows' key) for 'mod', you can use something like "M1-x" for alt+x (check the output of xmodmap to see which mod key 'alt' is bound to). Some special keys can also be specified by enclosing their name in angle brackets. For example, "M-C-x" denotes mod+ctrl+x;  "S-<Escape>" denotes shift-escape; "M1-C-<Delete>"M denotes alt+ctrl+delete (assuming alt is bound to mod1, which is common).hSequences of keys can also be specified by separating the key descriptions with spaces. For example, "M-x y <Down>"B denotes the sequence of keys mod+x, y, down. Submaps (see XMonad.Actions.SubmapE) will be automatically generated to correctly handle these cases.9So, for example, a complete key map might be specified as  keys = \c -> mkKeymap c $ [ ("M-S-<Return>", spawn $ terminal c) , ("M-x w", spawn "xmessage 'woohoo!'") -- type mod+x then w to pop up 'woohoo!' , ("M-x y", spawn "xmessage 'yay!'") -- type mod+x then y to pop up 'yay!' , ("M-S-c", kill) ]Alternatively, you can use x= to automatically create a keymap and add it to your config.Here is a complete list of supported special keys. Note that a few keys, such as the arrow keys, have synonyms. If there are other special keys you would like to see supported, feel free to submit a patch, or ask on the xmonad mailing list; adding special keys is quite simple. <Backspace> <Tab> <Return> <Pause> <Scroll_lock> <Sys_Req> <Print> <Escape>, <Esc> <Delete> <Home> <Left>, <L> <Up>, <U> <Right>, <R> <Down>, <D> <Page_Up> <Page_Down> <End> <Insert> <Break> <Space> <F1>-<F24> <KP_Space> <KP_Tab> <KP_Enter> <KP_F1> <KP_F2> <KP_F3> <KP_F4> <KP_Home> <KP_Left> <KP_Up> <KP_Right> <KP_Down> <KP_Prior> <KP_Page_Up> <KP_Next> <KP_Page_Down> <KP_End> <KP_Begin> <KP_Insert> <KP_Delete> <KP_Equal> <KP_Multiply> <KP_Add> <KP_Separator> <KP_Subtract> <KP_Decimal> <KP_Divide> <KP_0>-<KP_9>Long list of multimedia keys. Please note that not all keys may be present in your particular setup although most likely they will do. <XF86ModeLock> <XF86MonBrightnessUp> <XF86MonBrightnessDown> <XF86KbdLightOnOff> <XF86KbdBrightnessUp> <XF86KbdBrightnessDown> <XF86Standby> <XF86AudioLowerVolume> <XF86AudioMute> <XF86AudioRaiseVolume> <XF86AudioPlay> <XF86AudioStop> <XF86AudioPrev> <XF86AudioNext> <XF86HomePage> <XF86Mail> <XF86Start> <XF86Search> <XF86AudioRecord> <XF86Calculator> <XF86Memo> <XF86ToDoList> <XF86Calendar> <XF86PowerDown> <XF86ContrastAdjust> <XF86RockerUp> <XF86RockerDown> <XF86RockerEnter> <XF86Back> <XF86Forward> <XF86Stop> <XF86Refresh> <XF86PowerOff> <XF86WakeUp> <XF86Eject> <XF86ScreenSaver> <XF86WWW> <XF86Sleep> <XF86Favorites> <XF86AudioPause> <XF86AudioMedia> <XF86MyComputer> <XF86VendorHome> <XF86LightBulb> <XF86Shop> <XF86History> <XF86OpenURL> <XF86AddFavorite> <XF86HotLinks> <XF86BrightnessAdjust> <XF86Finance> <XF86Community> <XF86AudioRewind> <XF86XF86BackForward> <XF86Launch0>-<XF86Launch9>, <XF86LaunchA>-<XF86LaunchF> <XF86ApplicationLeft> <XF86ApplicationRight> <XF86Book> <XF86CD> <XF86Calculater> <XF86Clear> <XF86Close> <XF86Copy> <XF86Cut> <XF86Display> <XF86DOS> <XF86Documents> <XF86Excel> <XF86Explorer> <XF86Game> <XF86Go> <XF86iTouch> <XF86LogOff> <XF86Market> <XF86Meeting> <XF86MenuKB> <XF86MenuPB> <XF86MySites> <XF86New> <XF86News> <XF86OfficeHome> <XF86Open> <XF86Option> <XF86Paste> <XF86Phone> <XF86Q> <XF86Reply> <XF86Reload> <XF86RotateWindows> <XF86RotationPB> <XF86RotationKB> <XF86Save> <XF86ScrollUp> <XF86ScrollDown> <XF86ScrollClick> <XF86Send> <XF86Spell> <XF86SplitScreen> <XF86Support> <XF86TaskPane> <XF86Terminal> <XF86Tools> <XF86Travel> <XF86UserPB> <XF86User1KB> <XF86User2KB> <XF86Video> <XF86WheelButton> <XF86Word> <XF86Xfer> <XF86ZoomIn> <XF86ZoomOut> <XF86Away> <XF86Messenger> <XF86WebCam> <XF86MailForward> <XF86Pictures> <XF86Music> <XF86TouchpadToggle> <XF86AudioMicMute> <XF86_Switch_VT_1>-<XF86_Switch_VT_12> <XF86_Ungrab> <XF86_ClearGrab> <XF86_Next_VMode> <XF86_Prev_VMode> emGiven a list of pairs of parsed key sequences and actions, group them into submaps in the appropriate way. fGiven a configuration record and a list of (key sequence description, action) pairs, parse the key sequences into lists of (KeyMask,KeySym)> pairs. Key sequences which fail to parse will be ignored. gjParse a sequence of keys, returning Nothing if there is a parse failure (no parse, or ambiguous parse). hBParse a sequence of key combinations separated by spaces, e.g.  "M-c x C-S-2" (mod+c, x, ctrl+shift+2). i)Parse a modifier-key combination such as M-C-s (mod+ctrl+s). jUParse a modifier: either M- (user-defined mod-key), C- (control), S- (shift), or M- where : is an integer from 1 to 5 (mod1Mask through mod5Mask).$Parse an unmodified basic key, like "x", " F1", etc. k1Parse a regular key name (represented by itself). l:Parse a special key name (one enclosed in angle brackets). m=A list of all special key names and their associated KeySyms. n5A list pairing function key descriptor strings (e.g. " F2"!) with the associated KeySyms. o<A list of special key names and their corresponding KeySyms. pList of multimedia keys. If X server does not know about some | keysym it's omitted from list. (stringToKeysym returns noSymbol in this case)#Given a configuration record and a list of (key sequence description, action) pairs, check the key sequence descriptions for validity, and warn the user (via a popup xmessage window) of any unparseable or duplicate key sequences. This function is appropriate for adding to your  startupHooky, and you are highly encouraged to do so; otherwise, duplicate or unparseable keybindings will be silently ignored..For example, you might do something like this: main = xmonad $ myConfig myKeymap = [("S-M-c", kill), ...] myConfig = def { ... keys = \c -> mkKeymap c myKeymap startupHook = return () >> checkKeymap myConfig myKeymap ... } NOTE: the  return ()J in the example above is very important! Otherwise, you might run into problems with infinite mutual recursion: the definition of myConfig depends on the definition of startupHook, which depends on the definition of myConfig, ... and so on. Actually, it's likely that the above example in particular would be OK without the  return () , but making myKeymap take myConfig as a parameter would definitely lead to problems. Believe me. It, uh, happened to my friend. In... a dream. Yeah. In any event, the  return () >>3 introduces enough laziness to break the deadlock. qGiven a config and a list of (key sequence description, action) pairs, check the key sequence descriptions for validity, returning a list of unparseable key sequences, and a list of duplicate key sequences.wxyz{|}~ e r s t f g h i j k l m n o p q wxyz{|}~ wxyz{|}~wxyz{|}~ e r s t f g h i j k l m n o p qc'Devin Mullins <devin.mullins@gmail.com>BSD-style (see LICENSE)'Devin Mullins <devin.mullins@gmail.com>unstable unportableNone34579>)'This lets you remove from an attribute."This lets you add to an attribute."This lets you modify an attribute.JThis lets you apply a function to an attribute (i.e. read, modify, write).tAn Arr is a generalization of Prime. Don't reference the type, if you can avoid it. It might go away in the future.A Prime is a function that transforms an XConfig. It's not a monad, but we turn on RebindableSyntax so we can abuse the pretty do notation.Composes two Arrs using  u from Prelude.{Because of RebindableSyntax, this is necessary to enable you to use if-then-else expressions. No need to call it directly.,This is the xmonad main function. It passes  (the default  v\) into your do-block, takes the modified config out of your do-block, and then runs xmonad.The do-block is a 6. Advanced readers can skip right to that definition.This doesn't modify the config in any way. It's just here for your initial config because Haskell doesn't allow empty do-blocks. Feel free to delete it once you've added other stuff.+Non-focused windows border color. Default:  "#dddddd"'Focused windows border color. Default:  "#ff0000"-The preferred terminal application. Default: "xterm"4The mod modifier, as used by key bindings. Default: mod1Mask+ (which is probably alt on your computer).'The border width (in pixels). Default: 1rWhether window focus follows the mouse cursor on move, or requires a mouse click. (Mouse? What's that?) Default: TrueIf True, a mouse click on an inactive window focuses it, but the click is not passed to the window. If False, the click is also passed to the window. Default True7The action to run when a new window is opened. Default: ` manageHook =: composeAll [className =? "MPlayer" --> doFloat, className =? "Gimp" --> doFloat]:To add more rules to this list, you can say, for instance: import XMonad.StackSet ... manageHook =+ (className =? "Emacs" --> doF kill) manageHook =+ (className =? "Vim" --> doF shiftMaster)<Note that operator precedence mandates the parentheses here.Custom X event handler. Return All Truef if the default handler should also be run afterwards. Default does nothing. To add an event handler: Kimport XMonad.Hooks.ServerMode ... handleEventHook =+ serverModeEventHook$List of workspaces' names. Default: map show [1 .. 9 :: Int]. Adding appends to the end:  workspaces =+ ["0"]<This is useless unless you also create keybindings for this.tThe action to perform when the windows set is changed. This happens whenever focus change, a window is moved, etc.  logHook =+ takes an X ()* and appends it via '(>>)'. For instance: <import XMonad.Hooks.ICCCMFocus ... logHook =+ takeTopFocusDNote that if your expression is parametrically typed (e.g. of type MonadIO m => m ()2), you'll need to explicitly annotate it, like so: 4 logHook =+ (io $ putStrLn "Hello, world!" :: X ())"The action to perform on startup. startupHook =+ takes an X ()* and appends it via '(>>)'. For instance: Cimport XMonad.Hooks.SetWMName ... startupHook =+ setWMName "LG3D"DNote that if your expression is parametrically typed (e.g. of type MonadIO m => m ()<), you'll need to explicitly annotate it, as documented in .nThe client events that xmonad is interested in. This is useful in combination with handleEventHook. Default: ?structureNotifyMask .|. enterWindowMask .|. propertyChangeMask / clientMask =+ keyPressMask .|. keyReleaseMasklThe root events that xmonad is interested in. This is useful in combination with handleEventHook. Default: substructureRedirectMask .|. substructureNotifyMask .|. enterWindowMask .|. leaveWindowMask .|. structureNotifyMask .|. buttonPressMaskKey bindings to  S actions. Default: see  `man xmonad`. G takes a list of keybindings specified emacs-style, as documented in b0. For example, to change the "kill window" key: 0 keys =- ["M-S-c"] keys =+ [("M-M1-x", kill)]Mouse button bindings to an  S# actions on a window. Default: see  `man xmonad`. To make mod- scrollwheel switch workspaces: import XMonad.Actions.CycleWS (nextWS, prevWS) ... mouseBindings =+ [((mod4Mask, button4), const prevWS), ((mod4Mask, button5), const nextWS)]9Note that you need to specify the numbered mod-mask e.g.  w instead of just .=Configure workspaces through a Prime-like interface. Example: x withWorkspaces $ do wsKeys =+ ["0"] wsActions =+ [("M-M1-", windows . swapWithCurrent)] wsSetName 1 "mail"This will set & and add the necessary keybindings to H. Note that it won't remove old keybindings; it's just not that clever."The list of workspace names, like  but with two differences: ZIf any entry is the empty string, it'll be replaced with the corresponding entry in .%The list is truncated to the size of .The default value is  x "".iIf you'd like to create workspaces without associated keyspecs, you can do that afterwards, outside the  block, with  =+.FThe list of workspace keys. These are combined with the modifiers in A to form the keybindings for navigating to workspaces. Default: ["1","2",...,"9"].0Mapping from key prefix to command. Its type is [(String, String -> X())]+. The key prefix may be a modifier such as "M-", or a submap prefix such as "M-a ", or both, as in "M-a M-"H. The command is a function that takes a workspace name and returns an X (). 3 creates keybindings for the cartesian product of  and .Default: >[("M-", windows . W.greedyView), ("M-S-", windows . W.shift)].A convenience for just modifying one entry in 9, in case you only want a few named workspaces. Example: , wsSetName 1 "mail" wsSetName 2 "web"5Configure screen keys through a Prime-like interface: * withScreens $ do sKeys =: ["e", "r"]+This will add the necessary keybindings to H. Note that it won't remove old keybindings; it's just not that clever.CThe list of screen keys. These are combined with the modifiers in A to form the keybindings for navigating to workspaces. Default:  ["w","e","r"].0Mapping from key prefix to command. Its type is [(String, ScreenId -> X())]. Works the same as & except for a different function type.Default: L[("M-", windows . onScreens W.view), ("M-S-", windows . onScreens W.shift)]Converts a stackset transformer parameterized on the workspace type into one parameterized on the screen type. For example, you can use onScreens W.view 0 to navigate to the workspace on the 0th screen. If the screen id is not recognized, the returned transformer acts as an identity function.KAdd a layout to the list of layouts choosable with mod-space. For instance: 8import XMonad.Layout.Tabbed ... addLayout simpleTabbedPReset the layoutHook from scratch. For instance, to get rid of the wide layout: - resetLayout $ Tall 1 (3/100) (1/2) ||| Full(The dollar is like an auto-closing parenthesis, so all the stuff to the right of it is treated like an argument to resetLayout.) Modify your  layoutHookW with some wrapper function. You probably want to call this after you're done calling  . Example: >import XMonad.Layout.NoBorders ... modifyLayout smartBordersReplace the current  v` with the given one. If you use this, you probably want it to be the first line of your config.Turns a pure function on  v into a .Turns an IO function on  v into a .L y z { | } ~      u ~  { } |                           ! " # $ % & ' ( ) * + , - . / 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 { | } ~  T                           ! " # $ % & ' ( ) * + , - . / 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 { | } ~  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:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a wbcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ |}~  x D E       C !"#$%&'()*+,-./012345678 49:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW aXYZ[\]^_`abcdefghijklmn 5opqr stuvwxyz{|}~ v S     -9 y z { | } ~         d$(c) Quentin Moser <moserq@gmail.com>BSD3orphanedunstable unportableNone Behaves like N, but returns True of the message was handled by the layout, False otherwise.Sends the first message, and if it was not handled, sends the second. Returns True if either message was handled, False otherwise.Tries sending every message of the list in order until one of them is handled. Returns True if one of the messages was handled, False otherwise.Convenience shorthand for .e Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedstable unportableNone7IJN-Swap the focused window with the previous one)Swap the focused window with the next one.Swap the focused window with the master windowoIf the focused window is floating, focus the next floating window. otherwise, focus the next non-floating one.oIf the focused window is floating, focus the next floating window. otherwise, focus the next non-floating one.Move focus to the master window7Move focus between the floating and non-floating layers,Swap the focused group with the previous one(Swap the focused group with the next one,Swap the focused group with the master group$Move the focus to the previous group Move the focus to the next group"Move the focus to the master group3Move the focused window to the previous group. The  q argument determines what will be done if the focused window is in the very first group: Wrap back to the end ( %), or create a new group before it ( )./Move the focused window to the next group. The  v argument determines what will be done if the focused window is in the very last group: Wrap back to the beginning ( $), or create a new group after it ( ).=Move the focused window to a new group before the current one<Move the focused window to a new group after the current oneFSplit the focused group in two at the position of the focused window.(if you want to focus a floating window, #. if you want a non-floating one, .if you want the next window, !. if you want the previous one, .f(c) 2009 Nils SchweinsbergBSD3-style (see LICENSE)!Nils Schweinsberg <mail@n-sch.de>unstable unportableNone Focus data definitionsalways focus the new screen+always keep the focus on the current screen#always focus tag i on the new stackDfocus tag i only if workspace with tag i is visible on the old stackRun any function that modifies the stack on a given screen. This function will also need to know which Screen to focus after the function has been run.A variation of onScreen which will take any X () function and run it on the given screen. Warning: This function will change focus even if the function it's supposed to run doesn't succeed.Switch to workspace i on screen sc. If i is visible use view# to switch focus to the workspace i.Switch to workspace i on screen sc. If i is visible use  greedyView1 to switch the current workspace with workspace i.Switch to workspace i on screen sc. If i is visible do nothing. toggleOrView as in XMonad.Actions.CycleWS for onScreen with view toggleOrView from XMonad.Actions.CycleWS for onScreen with greedyViewfunction to runwhat to do with the focus screen id current stack old stack new stackX function to runfocus screen id screen idindex of the workspace current stack screen idindex of the workspace current stack screen idindex of the workspace current stack screen idindex of the workspace current stack screen idindex of the workspace current stackfunction to runtag to look forcurrent stackset   9(C) 2007 Spencer Janssen, Andrea Rossato, glasser@mit.eduBSD-style (see LICENSE)/Christian Thiemann <mail@christian-thiemann.de>unstable unportableNone Returns the output.Wait is in  (microseconds)@Multiplies by ONE MILLION, for functions that take microseconds. Use like: (5.5 `seconds`)UIn GHC 7 and later, you must either enable the PostfixOperators extension (by adding !{-# LANGUAGE PostfixOperators #-}7to the top of your file) or use seconds in prefix form:  5.5 seconds bypasses  5, because spawn passes strings to /bin/sh to be interpreted as shell commands. This is often what one wants, but in many cases the passed string will contain shell metacharacters which one does not want interpreted as such (URLs particularly often have shell metacharacters like '&' in them). In this case, it is more useful to specify a file or program to be run and a string to give it as an argument so as to bypass the shell and be certain the program will receive the string as you typed it. Examples: , ((modm, xK_Print), unsafeSpawn "import -window root $HOME/xwd-$(date +%s)$$.png") , ((modm, xK_d ), safeSpawn "firefox" [])yNote that the unsafeSpawn example must be unsafe and not safe because it makes use of shell interpretation by relying on $HOME and interpolation, whereas the safeSpawn example can be safe because Firefox doesn't need any arguments if it is just being started.  Simplified *; only takes a program (and no arguments): -, ((modm, xK_d ), safeSpawnProg "firefox") An alias for  5; the name emphasizes that one is calling out to a Turing-complete interpreter which may do things one dislikes; for details, see .Open a terminal emulator. The terminal emulator is specified in the default configuration as xterm by default. It is then asked to pass the shell a command with certain options. This is unsafe in the sense of Open a terminal emulator. The terminal emulator is specified in the default configuration as xterm by default. It is then asked to pass the shell a command with certain options. This is unsafe in the sense of <Run a given program in the preferred terminal emulator; see . This makes use of .ELaunch an external application through the system shell and return a Handle to its standard input.    gq(c) Marco Tlio Gontijo e Silva <marcot@riseup.net>, Leonardo Serra <leoserra@minaslivre.org>BSD3-style (see LICENSE)/Marco Tlio Gontijo e Silva <marcot@riseup.net>unstable unportableNone The number of lines in which the workspaces will be arranged. It's possible to use a number of lines that is not a divisor of the number of workspaces, but the results are better when using a divisor. If it's not a divisor, the last line will have the remaining workspaces.Use  gconftool-2! to find out the number of lines.'Specify the number of lines explicitly.CDefines the behaviour when you're trying to move out of the limits.9Ignore the function call, and keep in the same workspace..Get on the other side, like in the Snake game.YThe plan comes as a row, so it goes to the next or prev if the workspaces were numbered.Direction to go in the plane.MThis is the way most people would like to use this module. It attaches the ! passed as a parameter with , ,  and , associating it with  to the corresponding *. It also associates these bindings with g to .(Shift a window to the next workspace in [. Note that this will also move to the next workspace. It's a good idea to use the same  and  for all the bindings.Move to the next workspace in . h((C) 2007 Andrea Rossato, Matthew SackmanBSD3 Gwern Branwen <gwern0@gmail.com>unstable unportableNoneuReturns a String corresponding to the current mouse selection in X; if there is none, an empty string is returned.WARNING: this function is fundamentally implemented incorrectly and may, among other possible failure modes, deadlock or crash. For details, see  4http://code.google.com/p/xmonad/issues/detail?id=573G. (These errors are generally very rare in practice, but still exist.)A wrapper around . Makes it convenient to run a program with the current selection as an argument. This is convenient for handling URLs, in particular. For example, in your Config.hs you could bind a key to promptSelection "firefox"^; this would allow you to highlight a URL string and then immediately open it up in Firefox. passes strings through the system shell, /bin/sh; if you do not wish your selected text to be interpreted or mangled by the shell, use 4. safePromptSelection will bypass the shell using  from XMonad.Util.Runc; see its documentation for more details on the advantages and disadvantages of using safeSpawn. A wrapper around . Makes it convenient to run a program with the current selection as an argument. This is convenient for handling URLs, in particular. For example, in your Config.hs you could bind a key to promptSelection "firefox"^; this would allow you to highlight a URL string and then immediately open it up in Firefox. passes strings through the system shell, /bin/sh; if you do not wish your selected text to be interpreted or mangled by the shell, use 4. safePromptSelection will bypass the shell using  from XMonad.Util.Runc; see its documentation for more details on the advantages and disadvantages of using safeSpawn. A wrapper around . Makes it convenient to run a program with the current selection as an argument. This is convenient for handling URLs, in particular. For example, in your Config.hs you could bind a key to promptSelection "firefox"^; this would allow you to highlight a URL string and then immediately open it up in Firefox. passes strings through the system shell, /bin/sh; if you do not wish your selected text to be interpreted or mangled by the shell, use 4. safePromptSelection will bypass the shell using  from XMonad.Util.Runc; see its documentation for more details on the advantages and disadvantages of using safeSpawn. A wrapper around = and its safe variant. They take two parameters, the first is a function that transforms strings, and the second is the application to run. The transformer essentially transforms the selection in X. One example is to wrap code, such as a command line action copied out of the browser to be run as  "sudo" ++ cmd or "su - -c ""++ cmd ++""". A wrapper around = and its safe variant. They take two parameters, the first is a function that transforms strings, and the second is the application to run. The transformer essentially transforms the selection in X. One example is to wrap code, such as a command line action copied out of the browser to be run as  "sudo" ++ cmd or "su - -c ""++ cmd ++""". (C) 2008 Jrmy Bobbio, gwernBSD3noneunstable unportableNone9Paste the current X mouse selection. Note that this uses  from XMonad.Util.XSelection and so is heir to its flaws.Send a string to the window which is currently focused. This function correctly handles capitalization. Warning: in dealing with capitalized characters, this assumes a QWERTY layout.Send a character to the current window. This is more low-level. Remember that you must handle the case of capitalization appropriately. That is, from the window's perspective: pasteChar mod2Mask 'F' ~> "f"$You would want to do something like: pasteChar shiftMask 'F'%Note that this function makes use of  0, and so will probably have trouble with any   outside ASCII.5The primitive. Allows you to send any combination of ! and  to any   you specify.i(c) Don Stewart 2007BSD3-style (see LICENSE)dons@cse.unsw.edu.austableportableNone(c) glasser@mit.eduBSDglasser@mit.edustable unportableNonedzenConfig config s will display the string s! according to the configuration config&. For example, to display the string "foobar"4 with all the default settings, you can simply call dzenConfig return "foobar"*Or, to set a longer timeout, you could use  dzenConfig (timeout 10) "foobar"EYou can combine configurations with the (>=>) operator. To display "foobar"2 for 10 seconds on the first screen, you could use .dzenConfig (timeout 10 >=> xScreen 0) "foobar"9As a final example, you could adapt the above to display "foobar"+ for 10 seconds on the current screen with 3dzenConfig (timeout 10 >=> onCurr xScreen) "foobar"dzen wants exactly one newline at the end of its input, so this can be used for your own invocations of dzen. However, all functions in this module will call this for you.KSet the timeout, in seconds. This defaults to 3 seconds if not specified.ISet the timeout, in microseconds. Mostly here for the legacy interface.Add raw command-line arguments to the configuration. These will be passed on verbatim to dzen2. The default includes no arguments.gStart dzen2 on a particular screen. Only works with versions of dzen that support the "-xs" argument.Take a screen-specific configuration and supply it with the screen ID of the currently focused screen, according to xmonad. For example, show a 100-pixel wide bar centered within the current screen, you could use *dzenConfig (onCurr (hCenter 100)) "foobar"VOf course, you can still combine these with (>=>); for example, to center the string "foobar"` both horizontally and vertically in a 100x14 box using the lovely Terminus font, you could use pterminus = "-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*" dzenConfig (onCurr (center 100 14) >=> font terminus) "foobar"2Put the top of the dzen bar at a particular pixel.3Put the left of the dzen bar at a particular pixel.Specify the font. Check out xfontsel to get the format of the String right; if your dzen supports xft, then you can supply that here, too.vCenter height sc? sets the configuration to have the dzen bar appear on screen sc with height heightF, vertically centered with respect to the actual size of that screen.hCenter width sc? sets the configuration to have the dzen bar appear on screen sc with width widthH, horizontally centered with respect to the actual size of that screen.center width height sc? sets the configuration to have the dzen bar appear on screen sc with width width and height height], centered both horizontally and vertically with respect to the actual size of that screen.dzen str timeout pipes str to dzen2 for timeout microseconds. Example usage: dzen "Hi, mom!" (5 `seconds`)dzen str args timeout pipes str to dzen2 for timeout seconds, passing args to dzen. Example usage: 3dzenWithArgs "Hi, dons!" ["-ta", "r"] (5 `seconds`)dzenScreen sc str timeout pipes str to dzen2 for timeout microseconds, and on screen sc6. Requires dzen to be compiled with Xinerama support.j$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone        k+(c) 2007 Andrea Rossato and Spencer JanssenBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone String positioneGet the Pixel value for a named color: if an invalid name is given the black pixel will be returned.zGiven a fontname returns the font structure. If the font name is not valid the default font will be loaded and returned./When initXMF gets a font name that starts with 'xft:'8 it switches to the Xft backend Example: 'xft: Sans-10'Return the string x and y o in a } , given a   and the  mentShort-hand for              l(c) 2010 Alejandro SerranoBSD-style (see xmonad/LICENSE)trupill@gmail.comunstable unportableNone  &Placement of the icon in the title bar!4An exact amount of pixels from the upper left corner"4An exact amount of pixels from the right left corner#9Centered in the y-axis, an amount of pixels from the left$:Centered in the y-axis, an amount of pixels from the right Gets the (width, height ) of an image% Return the x and y positions inside a }) to start drawing the image given its  lConverts an image represented as [[Bool]] to a series of points to be painted (the ones with True values)Displaces a point (a, b) along a vector (x, y)*Displaces a list of points along a vector x, y&Draw an image into a X surface  !"#$%& !"#$%& !"#$%& !"#$%&m(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstableportableNone+357G*,Message to dynamically modify (e.g. increasedecrease#set) the size of the window spacing-BSurround all windows by a certain number of pixels of blank space..Set spacing to given amount/ Increase spacing by given amount0Surround all windows by a certain number of pixels of blank space, and additionally adds the same amount of spacing around the edge of the screen.1tSurrounds all windows with blank space, except when the window is the only visible window on the current workspace.2Surrounds all windows with blank space, and adds the same amount of spacing around the edge of the screen, except when the window is the only visible window on the current workspace.'()*+,-./012 '()*+,-./012 -,0)1(2'*+./'()*+,-./012n$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>stable unportableNone36Give focus to the nth window of the current workspace.34343434((c) 2009 Adam Vogt <vogt.adam@gmail.com>BSD Adam Vogtunstable unportableNone+3577ImakeCursors requires a nonempty string, and each sublist must be nonempty9non-wrapping version of :non-wrapping version of < modifyLayer- is used to change the focus at a given depth=shiftModifyLayer is the same as <D, but also shifts the currently focused window to the new workspace> shiftLayer is the same as =2, but the focus remains on the current workspace.?example usages are > and =@The state is stored in the 5u layout modifier. Put this as your outermost modifier, unless you want different cursors at different times (using XMonad.Layout.MultiToggle)56789:;<=>?@456789:;<=>?@;7@58<?=>49:656789:;<=>?@o$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>stable unportableNoneCkeysMoveWindow (dx, dy) moves the window by dx pixels to the right and dy pixels down.D keysMoveWindowTo (x, y) (gx, gy)$ moves the window relative point (gx, gy) to the point (x,y), where (gx,gy): gives a position relative to the window border, i.e. gx = 0 is the left border, gx = 1 is the right border, gy = 0 is the top border, and gy = 1 the bottom border."For example, on a 1024x768 screen: keysMoveWindowTo (512,384) (1%2, 1%2) -- center the window on screen keysMoveWindowTo (1024,0) (1, 0) -- put window in the top right cornerE"keysResizeWindow (dx, dy) (gx, gy) changes the width by dx and the height by dy$, leaving the window-relative point  (gx, gy) fixed. For example: LkeysResizeWindow (10, 0) (0, 0) -- make the window 10 pixels larger to the right keysResizeWindow (10, 0) (0, 1%2) -- does the same, unless sizeHints are applied keysResizeWindow (10, 10) (1%2, 1%2) -- add 5 pixels on each side keysResizeWindow (-10, -10) (0, 1) -- shrink the window in direction of the bottom-left cornerF%keysAbsResizeWindow (dx, dy) (ax, ay) changes the width by dx and the height by dy$, leaving the screen absolute point  (ax, ay) fixed. For example: keysAbsResizeWindow (10, 10) (0, 0) -- enlarge the window; if it is not in the top-left corner it will also be moved down and to the right. ABCDEFABCDEFCDEFAB ABCDEFpB(c) 2007 Andrea Rossato 2010 Alejandro SerranoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone GBCompute the weighted average the colors of two given Pixel values.HCreate a simple window given a rectangle. If Nothing is given only the exposureMask will be set, otherwise the Just value. Use I to map and hideWindow to unmap.I Map a windowJthe list versionKunmap a windowLthe list versionMdestroy a windowNthe list versionO+Fill a window with a rectangle and a borderP`Fill a window with a rectangle and a border, and write | a number of strings to given positionsQvFill a window with a rectangle and a border, and write | a number of strings and a number of icons to given positionsNPaints a titlebar with some strings and icons drawn inside it. Not exported.PCreates a window with the possibility of setting some attributes. Not exported. GHIJKLMNOThe window where to draw Window width Window height Border widthWindow background color Border colorP The window where to drawXMonad Font for drawing Window width Window height Border widthWindow background color Border color String colorString background color String  ments Strings to be printedQ The window where to drawXMonad Font for drawing Window width Window height Border widthWindow background color Border color String colorString background color String  ments Strings to be printed Icon  Placements Icons to be printed GHIJKLMNOPQ GHIJKLMNOPQ GHIJKLMNOPQq(c) Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone+357Gc5A layout modifier to float the windows in a workspaced9A layout modifier to float all the windows in a workspaceeGiven a function to be applied to each member of a list, and a function to check a condition by processing this transformed member with the members of a list, you get the list of members that satisfy the condition.fGiven a function to be applied to each member of ta list, and a function to check a condition by processing this transformed member with something, you get the first member that satisfy the condition, or an empty list.gGet the list of elements to be deleted and the list of elements to be added to the first list in order to get the second list.&RSTUVWXYZ[\]^_`abcdefgRSTUVWXYZ[\]^_`abcdefgcdSTUVWXYZ[\]^_`abRfegRSTUVWXYZ[\]^_`abcdefgr'(c) Robert Marlow <robreim@bobturf.org>BSD3-style (see LICENSE)#Robert Marlow <robreim@bobturf.org>stableportableNonehUpdate the pointer's location to the currently focused window or empty screen unless it's already there, or unless the user was changing focus with the mousehhhhs)(c) Peter De Wachter <pdewacht@gmail.com>BSD%Peter De Wachter <pdewacht@gmail.com>unstable unportableNone3457jVCreate a new layout which automagically puts the focused window in the master area.kAn eventHook that overrides the normal focusFollowsMouse. When the mouse it moved to another window, that window is replaced as the master, and the mouse is warped to inside the new master.It prevents infinite loops when focusFollowsMouse is true (the default), and MagicFocus is in use when changing focus with the mouse.VThis eventHook does nothing when there are floating windows on the current workspace.lNpromoteWarp' allows you to specify an arbitrary pair of arguments to pass to h& when the mouse enters another window.m#Another event hook to override the focusFollowsMouse and make the pointer only follow if a given condition is satisfied. This could be used to disable focusFollowsMouse only for given workspaces or layouts. Beware that your focusFollowsMouse setting is ignored if you use this event hook.n-Disables focusFollow on the given workspaces: ijklmnijklmnjklmniijklmnt,(c) Peter De Wachter and Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone+37Gv.Increase the size of the window that has focusw=Change the size of the window that has focus by a custom zoomxSIncrease the size of the window that has focus, unless if it is the master window.yMagnifier that defaults to OffzdIncrease the size of the window that has focus by a custom zoom, unless if it is the master window.{>A magnifier that greatly magnifies just the vertical direction     opqrstuvwxyz{ opqrstuvwxyz{ vxywz{pqrstuo     opqrstuvwxyz{u(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone+357G };Get/set the number of windows in master pane (default: 1).~IGet/set the proportion of screen occupied by master pane (default: 1/2).bGet/set the proportion of remaining space in a column occupied by a slave window (default: 1/2).xGet/set the increment used when modifying masterFrac/slaveFrac by the Shrink, Expand, etc. messages (default: 3/100).@Get/set dragger and gap dimensions (default: FixedDragger 6 6).9Get/set whether the layout is mirrored (default: False).9Specifies the size of the clickable area between windows.width of a gap between windowsGwidth of the dragger itself (will overlap windows if greater than gap)(no gaps, draggers overlap window bordersMay be removed in favor of (mouseResizableTile { isMirrored = True }1|}~ !"#$%&'()*+,-./012345|}~}~|}~| }~ !"#$%&'()*+,-./012345v(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone66(c) Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357G Font nameBackground color String color&Time in seconds of the name visibility;A layout modifier to show the workspace name when switchingoA layout modifier to show the workspace name when switching. It is possible to provide a custom configuration.789:;<   789:;<w Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone=(Alternate representation for rectangles.>Top left coordinates, inclusive?Top left coordinates, inclusive@#Bottom right coorsinates, exclusiveA#Bottom right coorsinates, exclusiveThe type of placement policies7Try to place windows with as little overlap as possible!Place windows at a fixed positionPlace windows under the mouse`Apply the given placement policy, constraining the placed windows inside the screen boundaries.Same as 5, but allows specifying gaps along the screen's edgesyRepositions the focused window according to a placement policy. Works for both "real" floating windows and windows in a R-based layout.:Hook to automatically place windows when they are created.ECompute the new position of a window according to a placement policy.BZHelper: Places a Rectangle at a fixed position indicated by two Rationals inside another,CZHelper: Ensures its second parameter is contained inside the first by possibly moving it.DfReturn values are, in order: window's rectangle, other windows' rectangles and pointer's coordinates.EMain placement functionFSecond part of the algorithm: Chooses the best position in which to place a window, according to a list of free areas and an ideal position for the top-left corner. We can't use semi-open surfaces for this, so we go back to X11 Rectangles Positions etc instead.GFirst part of the algorithm: Tries to find an area in which to place a new rectangle so that it overlaps as little as possible with other rectangles already present. The first rectangles in the list will be overlapped first.HgSubtracts smaller rectangles from a total rectangle , returning a list of remaining rectangular areas.INubsg a list of rectangles, dropping all those that are already contained in another rectangle of the list.-=J>?@AKLMNBWhere the window should be placed inside the available area. See .Where windows should go.(0,0) -> top left of the screen (1,0) -> top right of the screenetcAWhere the pointer should be relative to the window's frame; see . top, right, bottom and left gapsO^The workspace with reference to which the window should be placed, and the screen's geometry.The list of floating windows.The placement strategy The screenThe other visible windowsThe pointer's position.The window to be placedBCPQRSTUVWDXYZ[\]EGpoint of the screen where windows should be placed first, if possible.screen other clientswidthheightF Free areasIdeal coordinatesWidth and height of the windowGThe total available areaThe parts already in useWidth of the rectangle to place Height of the rectangle to placeHI^_  $=J>?@AKLMNOBCPQRSTUVWDXYZ[\]EFGHI^_x(c) Spencer Janssen <spencerjanssen@gmail.com> David Roundy <droundy@darcs.net>, Andrea Rossato <andrea.rossato@unibz.it>BSD3-style (see LICENSE)(Andrea Rossato <andrea.rossato@unibz.it>unstable unportableNone+357G`abcdefghij `abcdefghijy(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone+357?Apply a horizontal reflection (left <--> right) to a layout.=Apply a vertical reflection (top <--> bottom) to a layout.kGiven an axis of reflection and the enclosing rectangle which contains all the laid out windows, transform a rectangle representing a window into its flipped counterpart.lmnokpqr lmnokpqrz(c) 2009 Max RabkinBSD-style (see xmonad/LICENSE)max.rabkin@gmail.comunstable unportableNone3457s*filter : filterM :: partition : partitionM=Construct a drawer with a simple layout of the windows inside>Construct a drawer with an arbitrary layout for windows inside ts<The portion of the screen taken up by the drawer when closed:The portion of the screen taken up by the drawer when open"Which windows to put in the drawer<The portion of the screen taken up by the drawer when closed:The portion of the screen taken up by the drawer when open"Which windows to put in the drawer#The layout of windows in the draweru ! tsu{(c) 2008 Jussi MkiBSD-style (see xmonad/LICENSE)joamaki@gmail.comunstable unportableNone37dA simple floating layout where every window is placed according to the window's initial attributes.vwxvwx| (c) Lukas MaiBSD3-style (see LICENSE)<l.mai@web.de>unstable unportableNoneJResize a floating window from whichever corner the mouse is closest to.RResize a floating window from whichever corner or edge the mouse is closest to.The window to resize.4The size of the area where only one edge is resized.The window to resize.}(c) Michael SloanBSD3-style (see LICENSE)<mgsloan@gmail.com>stable unportableNone35vManipulate the window based on discrete pick regions; the window is divided into regions by thirds along each axis.Scale/reposition the window by factors obtained from the mouse position by linear interpolation. Dragging precisely on a corner resizes that corner; dragging precisely in the middle moves the window without resizing; anything else is an interpolation between the two.EOnly resize the window, based on the window quadrant the mouse is in.Only reposition the window.XGiven an interpolation function, implement an appropriate window manipulation action.yz{|}~yz{|}~~~(c) Miikka Koskinen 2007BSD3-style (see LICENSE)arcatan@kapsi.fistable unportableNoneFind the first hidden empty workspace in a StackSet. Returns Nothing if all workspaces are in use. Function searches currently focused workspace, other visible workspaces (when in Xinerama) and hidden workspaces in this order.KFind and view an empty workspace. Do nothing if all workspaces are in use._Tag current window to an empty workspace and view it. Do nothing if all workspaces are in use.TSend current window to an empty workspace. Do nothing if all workspaces are in use.(c) Daniel Schoepe 2009BSD3-style (see LICENSE)daniel.schoepe@gmail.comunstable not portableNoneGBModify the map of state extensions by applying the given function._Apply a function to a stored value of the matching type or the initial value if there is none.Add a value to the extensible state field. A previously stored value with the same type will be overwritten. (More precisely: A value whose string representation of its type is equal to the new one's)aTry to retrieve a value of the requested type, return an initial value if there is no such value.`Remove the value from the extensible state field that has the same type as the supplied argument(c) nzeh@cs.dal.caBSD3-style (see LICENSE)nzeh@cs.dal.caunstable unportableNone+1The direction in which to look for the next match(Forward from current window or workspace)Backward from current window or workspaceBackward in historyFocuses the next window for which the given query produces the same result as the currently focused window. Does nothing if there is no focused window (i.e., the current workspace is empty).~Focuses the next window that matches the given boolean query. Does nothing if there is no such window. This is the same as  with alternate action  return ().}Focuses the next window that matches the given boolean query. If there is no such window, perform the given action instead.uAction that needs to be executed as a logHook to maintain the focus history of all windows as the WindowSet changes.(c) Christian DietrichBSD-style (as xmonad)stettberger@dokucde.deunstable unportableNone+EUsing this in the keybindings to set the actual Key Translation tableAdding this to your startupHook, to select your default Key Translation table. You also must give it all the KeymapTables you are willing to use>Append the output of this function to your keybindings with ++*The empty KeymapTable, does no translationSThe dvorak Programmers keymap, translates from us keybindings to dvorak programmers  (c) Mario Pastorelli (2012)BSD-style (see xmonad/LICENSE)pastorelli.mario@gmail.comunstable unportableNone+ Font nameBackground colorForeground colorKShowText contains the map with timers as keys and created windows as valuesUtility to modify a ShowText@Handles timer events that notify when a window should be removed>Shows a window in the center of the screen with the given text number of secondstext to display  Devin Mullins <me@twifkak.com>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNone+3457G$6Your set of options for configuring a dzenUrgencyHook.Rnumber of microseconds to display the dzen (hence, you'll probably want to use )list of extra args (as  s) to pass to dzen5The class definition, and some pre-defined instances.$An urgency reminder, as reified for /. The last value is the countdown number, for .A set of choices as to when you want to be re-notified of an urgent window. Perhaps you focused on something and you miss the dzen popup bar. Or you're AFK. Or you feel the need to be more distracted. I don't care./The interval arguments are in seconds. See the  helper.triggering once is enoughrepeat  arg1 times every  arg2 seconds repeat every  arg1" until the urgency hint is clearedA set of choices as to whenT you should (or rather, shouldn't) be notified of an urgent window. The default is 8. Prefix each of the following with "don't bug me when":the window is currently visible6the window is on the currently focused physical screenthe window is currently focused1... aww, heck, go ahead and bug me, just in case..Global configuration, applied to all types of . See  for the defaults. when to trigger the urgency hook#when to re-trigger the urgency hookCThis is the method to enable an urgency hook. It uses the default * to control behavior. To change this, use  instead.)This lets you modify the defaults set in  . An example: QwithUrgencyHookC dzenUrgencyHook { ... } urgencyConfig { suppressWhen = Focused }(Don't type the ..., you dolt.) See  for details on configuration.1A prettified way of multiplying by 60. Use like: (5 ). The default u. suppressWhen = Visible, remindWhen = Dont. Use a variation of this in your config just as you use a variation of  for your xmonad definition.pFocuses the most recently urgent window. Good for what ails ya -- I mean, your keybindings. Example keybinding: 3, ((modm , xK_BackSpace), focusUrgent)4Just makes the urgents go away. Example keybinding: 4, ((modm .|. shiftMask, xK_BackSpace), clearUrgents)PX action that returns a list of currently urgent windows. You might use it, or Q, in your custom logHook, to display the workspaces that contain urgent windows.An HOF version of *, for those who prefer that sort of thing.%Stores the list of urgency reminders.NChange the _NET_WM_STATE property by applying a function to the list of atoms.*Add an atom to the _NET_WM_STATE property./Remove an atom from the _NET_WM_STATE property.,Get the _NET_WM_STATE propertly as a [CLong]A hook which will automatically send you to anything which sets the urgent flag (as opposed to printing some sort of message. You would use this as usual, eg. *withUrgencyHook FocusHook $ myconfig { ... A hook that sets the border color of an urgent window. The color will remain until the next time the window gains or loses focus, at which point the standard border color from the XConfig will be applied. You may want to use suppressWhen = Never with this: pwithUrgencyHookC BorderUrgencyHook { urgencyBorderColor = "#ff0000" } urgencyConfig { suppressWhen = Never } ...(This should be urgentBorderColor but that breaks XMonad.Layout.Decoration.  borderColor breaks anyone using XPConfig from  XMonad.PromptC. We need to think a bit more about namespacing issues, maybe.)Flashes when a window requests your attention and you can't see it. Defaults to a duration of five seconds, and no extra args to dzen. See .Spawn a commandline thing, appending the window id to the prefix string you provide. (Make sure to add a space if you need it.) Do your crazy xcompmgr thing. For debugging purposes, really. Kurgencyhook such that windows on certain workspaces never get urgency set.)Useful for scratchpad workspaces perhaps: Omain = xmonad (withUrgencyHook (filterUrgencyHook ["NSP", "SP"]) defaultConfig)P  .  .  4  ,(c) 2007 Andrea Rossato, 2009 Jan VornbergerBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone+3457G* The default 2, with just the default methods' implementations.The ; class, defines methods used in the implementation of the  g; instance. A type instance of this class is passed to the = type in order to decorate a layout, by using these methods.The description that the  modifier will display.9Shrink the window's rectangle when applying a decoration.The decoration event hookA hook that can be used to catch the cases when the user clicks on the decoration. If you return True here, the click event will be considered as dealt with and no further processing will take place.This hook is called while a window is dragged using the decoration. The hook can be overwritten if a different way of handling the dragging is required.JThis hoook is called after a window has been dragged using the decoration.%The pure version of the main method, .Given the theme's decoration width and height, the screen rectangle, the windows stack, the list of windows and rectangles returned by the underlying layout and window to be decorated, tupled with its rectangle, produce a  D } or  E& if the window is not to be decorated.The  g(. This data type is an instance of the gG class. This data type will be passed, together with a layout, to the eN type constructor to modify the layout by adding decorations according to a .The  state component, where the list of decorated window's is zipped with a list of decoration. A list of decoration is a list of tuples, a    and a 'Maybe Rectangle'. The  5 will be displayed only if the rectangle is of type  D.A  layout modifier will handle 2, a message to dynamically change the decoration  . A  3 is a record of colors, font etc., to customize a .For a collection of  s see XMonad.Util.Themes"Color of the active window#Color of the inactive window$Color of the urgent window%(Color of the border of the active window&*Color of the border of the inactive window'(Color of the border of the urgent window(&Color of the text of the active window)(Color of the text of the inactive window*&Color of the text of the urgent window+ Font name,6Maximum width of the decorations (if supported by the )-Height of the decorations.EExtra text to appear in a window's title bar. Refer to for a use #XMonad.Layout.ImageButtonDecoration/9Extra icons to appear in a window's title bar. Inner [Bool] is a row in a icon bitmap.0A layout modifier that, with a  , a  , a V, and a layout, will decorate this layout according to the decoration style provided.For some usage examples see XMonad.Layout.DecorationMadness.1The default xmonad  . By default  handles  ^ and  [ only.sMouse focus and mouse drag are handled by the same function, this way we can start dragging unfocused windows too.\Given a window and the state, if a matching decoration is in the state return it with its () }.Initialize the L by initializing the font structure and by creating the needed decorations.BDelete windows stored in the state and release the font structure.YCreate the decoration windows of a list of windows and their rectangles, by calling the  method of the  received.YUpdate a decoration window given a shrinker, a theme, the font structure and the needed }s3True if the window is in the Stack. The  : comes second to facilitate list processing, even though w `isInStack` s won't work...;)4Given a } and a list of }s is True if the }$ is not completely contained by any } of the list.5The contrary of 4.6True is the first } is totally within the second }. The long g instance for the  type.In m< we check the state: if there is no state we initialize it. The state is gzed against the list of windows produced by the underlying layout: removed windows get deleted and new ones decorated by , which will call ( to decide if a window must be given a }5, in which case a decoration window will be created.After that we resync the updated state with the windows' list and then we process the resynced stated (as we do with a new state).aFirst we map the decoration windows, we update each decoration to reflect any decorated window's change, and we insert, in the list of windows and rectangles returned by the underlying layout, the decoration for each window. This way xmonad will restack the decorations and their windows accordingly. At the end we remove invisible/stacked windows.UMessage handling is quite simple: when needed we release the state component of the  g. Otherwise we call ", which will call the appropriate  methods to perform its tasks.J   Adistance from the left where the click happened on the decorationBdistance from the right where the click happened on the decoration !"#$%&'()*+,-./012345678>efghijklmnopqr    !"#$%&'()*+,-./01234567800 !"#$%&'()*+,-./1   8734562*    !"#$%&'()*+,-./012345678(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone37CG 9:;9:;;9: 9:;(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNoneD*The default xmonad theme, by David Roundy.E=Small decorations with a Ion3 remembrance, by Andrea Rossato.F-Don's preferred colors - from DynamicLog...;)G"Ffrom Robert Manea's prompt theme.Hdeifl's Theme, by deifl.I&oxymor00n's theme, by Tom Rauchenwald.K#Forest colours, by Kathryn AndersenL.Lake (blue/green) colours, by Kathryn AndersenM$Peacock colours, by Kathryn AndersenN)Violet-Green colours, by Kathryn AndersenO!Blue colours, by Kathryn AndersenP&Christmas colours, by Kathryn AndersenQ#Autumn colours, by Kathryn AndersenR!Fire colours, by Kathryn Andersen<=>?@ABCDEFGHIJKLMNOPQR<=>?@ABCDEFGHIJKLMNOPQRCBDEGHIFJKLMNOQRP<=>?@A<=>?@ABCDEFGHIJKLMNOPQR(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone37G!STUVWSTUVWWSTUVSTUVW(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357Z<Add simple old dwm-style decorations to windows of a layout.XYZ   !"#$%&'()*+,-./18XYZZ !"#$%&'()*+,-./1XY8  XYZ(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357].Add simple decorations to windows of a layout.[\]   !"#$%&'()*+,-./18[\]] !"#$%&'()*+,-./1[\8  [\](c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone37`dA simple floating layout where every window is placed according to the window's initial attributes.#This version is decorated with the [ style.aSame as `L, but with the possibility of setting a custom shrinker and a custom theme.^_`a   8[\^_`a `a[\^_8  ^_`a Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone+3457;GNb#The type of messages accepted by a k layoutc?Multiply the focused window's size factor by the given number.d:Set the focused window's size factor to the given number.eSSet whether the focused window should occupy all available space when it has focusfVToggle whether the focused window should occupy all available space when it has focus"Size specification for an element. The elementIts size ratioDWhether it should occupy all the available space when it has focus.gTo use the usual  :i?Class for equivalence relations. Must be transitive, reflexive.kA layout that arranges its windows in a horizontal row, and allows to change the relative size of each element independently.hFunction to compare elements for equality, a real Eq instance might not be what you want in some casesUElement specs. The zipper is so we know what the focus is when we handle a messagelk8 layout for laying out elements which are instances of  . Perfect for  s.m[ZoomRow layout with a custom equality predicate. It should of course satisfy the laws for  , and you should also make sure that the layout never has to handle two "equal" elements at the same time (it won't do any huge damage, but might behave a bit strangely).n5Increase the size of the focused window. Defined as Zoom 1.5o5Decrease the size of the focused window. Defined as  Zoom (2/3)p2Reset the size of the focused window. Defined as ZoomTo 1bcdefghijklm  nop   bcdefghijklmnopklbcdefnopmijghbcdefghijklm  nop   (c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone357r3Add very simple decorations to windows of a layout.qr   !"#$%&'()*+,-./18[\]qrrqqr(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357Gstuvwxyz{ stuvwxyz{ wxyz{tuvsstuvwxyz{(c) 2012 kedals0BSD3-style (see LICENSE)Dal <kedasl0@gmail.com>unstable unportableNone+AHelper to group workspaces. Multiply workspace by screens number.`Create workscreen list from workspace list. Group workspaces to packets of screens number size.$Initial configuration of workscreensView workscreen of index  WorkscreenIdR. If current workscreen is asked workscreen, workscreen's workspaces are shifted.5Shift a window on the first workspace of workscreen  WorkscreenId.|}~ |}~ |}~ |}~(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone+(c) Spencer Janssen 2009BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable not portableNone+The first time r is executed on a particular command, that command is executed. Subsequent invocations for a command do nothing. !" !"(c) Braden Shepherdson 2008BSD-style (as xmonad)Braden.Shepherdson@gmail.comunstable unportableNone+Master   that must be in your  xmonad.hs  .Appends the given   to the permanent dynamic  .Modifies the permanent   with an arbitrary function.Creates a one-shot  6. Note that you have to specify the two parts of the  + separately. Where you would usually write: "className =? "example" --> doFloatyou must call  as 7oneShotHook dynHooksRef (className =? "example) doFloat #$%&'#$%&' Ben Boeckel <mathstuf@gmail.com>BSD-style (see LICENSE) Ben Boeckel <mathstuf@gmail.com>unstable unportableNone+This  * will selectively apply a hook as set by  and .hookNext name True8 arranges for the next spawned window to have the hook name applied, hookNext name False cancels it.hookAllNew name True, arranges for new windows to have the hook name applied, hookAllNew name False cancels it@Query what will happen at the next ManageHook call for the hook name..Whether the next window will trigger the hook name.*Whether new windows will trigger the hook name.()*+,-./0  ()*+,-./0 Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone+This  + will selectively float windows as set by  and .floatNext TrueI arranges for the next spawned window to be sent to the floating layer, floatNext False cancels it.floatAllNew True= arranges for new windows to be sent to the floating layer, floatAllNew False cancels it,Whether the next window will be set floating(Whether new windows will be set floating 1   1!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone+A combinator to add full  ! debugging in a single operation. A combinator to add triggerable  K debugging in a single operation. Specify a key sequence as a string in M syntax; press this key before opening the window to get just that logged.Place this at the start of a  P, or possibly other places for a more limited view. It will show the current StackSet5 state and the new window, and set a flag so that manageDebugLogHook will display the final StackSet state.pNote that the initial state shows only the current workspace; the final one shows all workspaces, since your   might use e.g. , manageDebug$ only if the user requested it with debugNextManagedWindow.If  manageDebug. has set the debug-stack flag, show the stack..Request that the next window to be managed be  manageDebugl-ed. This can be used anywhere an X action can, such as key bindings, mouse bindings (presumably with ), 2, etc. 345345(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone+ 6789 6789(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone37G:;<=:;<=1(c) 2009 Nils Schweinsberg, 2015 Evgeny KurnevskyBSD3-style (see LICENSE)!Nils Schweinsberg <mail@n-sch.de>unstable unportableNone+357Add one single X () action to a screen cornerAdd a list of (ScreenCorner, X ()) tuplesHandle screen corner events>?@ABCDE   >?@ABCDE(c) Anton Pirogov, 2014BSD3'Anton Pirogov <anton.pirogov@gmail.com>unstable unportableNone+3Complete wallpaper configuration passed to the hookCWhere the wallpapers reside (if empty, will look in ~/.wallpapers/)1List of the wallpaper associations for workspacesRepresents a wallpaperSingle, fixed wallpaper'Random wallpaper from this subdirectoryFhinternal. to use XMonad state for memory in-between log-hook calls and remember PID of old external callBdefault configuration. looks in ~/.wallpapers/ for WORKSPACEID.jpgereturns the default association list (maps name to name.jpg, non-alphanumeric characters are omitted)GAdd this to your log hook with the workspace configuration as argument.G"Picks a random element from a listHeget absolute picture path of the given wallpaper picture or select a random one if it is a directoryITake a path to a picture, return (width, height) if the path is a valid picture (requires imagemagick tool identify to be installed)Jcomplete unset fields to default values (wallpaper directory = ~/.wallpapers, expects a file "NAME.jpg" for each workspace named NAME)KKGets a list of geometry rectangles and filenames, builds and sets wallpaperFLGHIJMNKOPQRST  FLGHIJMNKOPQRST(c) Christian Wills 2014 BSD3-style (see LICENSE)cwills.dev@gmail.comunstable not portableNone+When  is executed with a command String and a name String3 respectively. The command string is spawned with @ (as long as the name chosen hasn't been used already) and the Handle? returned is saved in Xmonad's state associated with the name String. Attempts to retrieve a Handle_ to a pipe previously stored in Xmonad's state associated with the given string via a call to a. If the given string doesn't exist in the map stored in Xmonad's state Nothing is returned. UVWXUVWX(c) Miikka Koskinen 2007BSD3-style (see LICENSE)arcatan@kapsi.fistable unportableNoneSwap the focused window with the master window. If focus is in the master, swap it with the next window in the stack. Focus stays in the master..(c) Spencer Janssen <spencerjanssen@gmail.com>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>stable unportableNone+Stop managing the currently focused window..(c) Spencer Janssen <spencerjanssen@gmail.com>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone xLookup the index of a workspace id in the user's config, return Nothing if that workspace does not exist in the config.YaCompare Maybe's differently, so Nothing (i.e. workspaces without indexes) come last in the order^A comparison function for WorkspaceId, based on the index of the tags in the user's config.PA simple comparison function that orders workspaces lexicographically by tag.xA comparison function for Xinerama based on visibility, workspace and screen id. It produces the same ordering as .A comparison function like *, but uses physical locations for screens.LCreate a workspace sorting function from a workspace comparison function.QSort several workspaces according to their tags' indices in the user's config.)Sort workspaces lexicographically by tag.QSort serveral workspaces for xinerama displays, in the same order produced by Z: first visible workspaces, sorted by screen, then hidden workspaces, sorted by tag.Like *, but uses physical locations for screens.YZ  YZ:(c) 2007, 2008 Joachim Breitner <mail@joachim-breitner.de>BSD+Joachim Breitner <mail@joachim-breitner.de>unstable unportableNoneFAdd EWMH functionality to the given config. See above for an example.EInitializes EwmhDesktops and advertises EWMH support to the X serversNotifies pagers and window lists, such as those in the gnome-panel of the current state of workspaces and windows.Generalized version of ewmhDesktopsLogHook that allows an arbitrary user-specified function to transform the workspace list (post-sorting)aIntercepts messages from pagers and similar applications and reacts on them. Currently supports:)_NET_CURRENT_DESKTOP (switching desktops)0_NET_WM_DESKTOP (move windows to other desktops)J_NET_ACTIVE_WINDOW (activate another window, changing workspace if needed)Generalized version of ewmhDesktopsEventHook that allows an arbitrary user-specified function to transform the workspace list (post-sorting)An event hook to handle applications that wish to fullscreen using the _NET_WM_STATE protocol. This includes users of the gtk_window_fullscreen() function, such as Totem, Evince and OpenOffice.org.Note this is not included in .[\]^_`ab[\]^_`ab(c) Daniel Schoepe (2009)BSD3-style (see LICENSE))Daniel Schoepe <daniel.schoepe@gmail.com>unstable unportableSafe+Two-dimensional directions:UpDownRightLeftOne-dimensional directions:.(C) 2007 Andrea Rossato, 2015 Evgeny KurnevskyBSD3*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone4;NDThe class prompt types must be an instance of. In order to create a prompt you need to create a data type, without parameters, and make it an instance of this class, by implementing a simple method, U, which will be used to print the string to be displayed in the command line window.4This is an example of a XPrompt instance definition: E instance XPrompt Shell where showXPrompt Shell = "Run: "TThis method is used to print the string to be displayed in the command line window.This method is used to generate the next completion to be printed in the command line when tab is pressed, given the string presently in the command line and the list of completion. This function is not used when in multiple modes (because alwaysHighlight in XPConfig is True)TThis method is used to generate the string to be passed to the completion function.This method is used to process each completion in order to generate the string that will be compared with the command presently displayed in the command line. If the prompt is using ) for implementing  (the default implementation), this method is also used to generate, from the returned completion, the string that will form the next command line when tab is pressed.When the prompt has multiple modes, this is the function used to generate the autocompletion list. The argument passed to this function is given by 4 The default implementation shows an error message.When the prompt has multiple modes (created with mkXPromptWithModes), this function is called when the user picks an item from the autocompletion list. The first argument is the prompt (or mode) on which the item was picked The first string argument is the autocompleted item's text. The second string argument is the query made by the user (written in the prompt's buffer). See XMonadActions Launcher.hs for a usage example.FontBackground color Font color,Font color of a highlighted completion entry2Background color of a highlighted completion entry Border color Border width Position:  or zAlways highlight an item, overriden to True with multiple modes. This implies having *one* column of autocompletions only. Window height;Just x: maximum number of rows to show in completion window)The number of history entries to be saved8a filter to determine which history entries to remember(Mapping from key combinations to actions"Key that should trigger completion7Key to change mode (when the prompt has multiple modes)&The text by default in the prompt line7Just x: if only one completion remains, auto-select it,QOnly show list of completions when Tab was pressed and delay by x microsecondsMGiven the typed string and a possible completion, is the completion valid? )Sets the input string to the given value.PReturns the current input string. Intented for use in custom keymaps where the  ) or similar can't be used to retrieve it.Same as 3, except that the action function can have type  String -> X a , for any a&, and the final action returned by  will have type  X (Maybe a). Nothingr is yielded if the user cancels the prompt (by e.g. hitting Esc or Ctrl-G). For an example of use, see the  module.Creates a prompt given:a prompt type, instance of the  class.a prompt configuration (! can be used as a starting point)a completion function ('T can be used to create a completions function given a list of possible completions)>an action to be run: the action must take a string and return  S ()+Creates a prompt with multiple modes given:A non-empty list of modesA prompt configuration7The created prompt allows to switch between modes with  in confS. The modes are instances of XPrompt. See XMonad.Actions.Launcher for more detailsThe argument supplied to the action to execute is always the current highlighted item, that means that this prompt overrides the value  for its configuration to True.crRemoves numlock and capslock from a keymask. Duplicate of cleanMask from core, but in the XP monad instead of X.rDefault key bindings for prompts. Click on the "Source" link to the right to see the complete list. See also . A variant of  which lets you specify a custom predicate for identifying non-word characters, which affects all the word-oriented commands (move/kill word). The default is d'. For example, by default a path like  foo/bar/bazM would be considered as a single word. You could use a predicate like (\c -> isSpace c || c == '/')C to move through or delete components of the path one at a time.~A keymap with many emacs-like key bindings. Click on the "Source" link to the right to see the complete list. See also . A variant of  which lets you specify a custom predicate for identifying non-word characters, which affects all the word-oriented commands (move/kill word). The default is d'. For example, by default a path like  foo/bar/bazM would be considered as a single word. You could use a predicate like (\c -> isSpace c || c == '/')C to move through or delete components of the path one at a time.Quit.1Kill the portion of the command before the cursor>Kill the portion of the command including and after the cursor#Kill the next/previous word, using d; as the default predicate for non-word characters. See .Kill the next/previous word, given a predicate to identify non-word characters. First delete any consecutive non-word characters; then delete consecutive word characters, stopping just before the next non-word character.For example, by default (using ) a path like  foo/bar/bazJ would be deleted in its entirety. Instead you can use something like 'killWord' (\c -> isSpace c || c == '/')/ to delete the path one component at a time.!Put the cursor at the end of line#Put the cursor at the start of linee-Flush the command string and reset the offsetf)Insert a character at the cursor position=Insert the current X selection string at the cursor position. )Remove a character at the cursor position!move the cursor one position" Move the cursor one word, using d; as the default predicate for non-word characters. See #.#Move the cursor one word, given a predicate to identify non-word characters. First move past any consecutive non-word characters; then move to just before the next non-word character.%Fills a  with a rectangle and a border&{Creates a window with the attribute override_redirect set to True. Windows Managers should not touch this kind of windows.'gThis function takes a list of possible completions and returns a completions function to be used with (gThis function takes a list of possible completions and returns a completions function to be used with 8. If the string is null it will return all completions.)Given the prompt type, the command line and the completion list, return the next completion in the list for the last word of the command line. This is the default  implementation.*An alternative ~ implementation: given a command and a completion list, get the next completion in the list matching the whole command line.+3Given a maximum length, splits a list into sublists,NGets the last word of a string or the whole string if formed by only one word-rSkips the last word of the string, if the string is composed by more then one word. Otherwise returns the string.//4 provides a canned completion function much like  getShellComplt; you pass it to mkXPrompt, and it will make completions work from the query history stored in ~/.xmonad/history.0Like /S but only uses history data from Prompts whose name satisfies the given predicate.1(Sort a list and remove duplicates. Like 2:, but trades off laziness and stability for efficiency.2Functions to be used with the  setting. 2% will remove all duplicate entries. 3E will only remove duplicate elements immediately next to each other.3Functions to be used with the  setting. 2% will remove all duplicate entries. 3E will only remove duplicate elements immediately next to each other.4MInitializes a new HistoryMatches structure to be passed to historyUpMatching5Retrieve the next history element that starts with the current input. Pass it the result of initMatches when creating the prompt. Example:  .. ((modMask,xK_p), shellPrompt . myPrompt =<< initMatches) .. myPrompt ref = def { promptKeymap = M.union [((0,xK_Up), historyUpMatching ref) ,((0,xK_Down), historyDownMatching ref)] (promptKeymap def) , .. }6Retrieve the next history element that starts with the current input. Pass it the result of initMatches when creating the prompt. Example:  .. ((modMask,xK_p), shellPrompt . myPrompt =<< initMatches) .. myPrompt ref = def { promptKeymap = M.union [((0,xK_Up), historyUpMatching ref) ,((0,xK_Down), historyDownMatching ref)] (promptKeymap def) , .. }ghijklmnopqrstuvwxyz{|}~     cef !"#$%&'()*+,-./0123456X      !"#$%&'()*+,-./0123456X    ! "# $&%'()*,-+.1/023456fghijklmnopqrstuvwxyz{|}~     cef !"#$%&'()*+,-./0123456%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNone789789978789$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone@Add a new workspace with the given name, or do nothing if a workspace with the given name already exists; then switch to the newly created workspace.AQSame as addWorkspace, but adds the workspace to the end of the list of workspacesBAdds a new workspace with the given name to the current list of workspaces. This function allows the user to pass a function that inserts an element into a list at an arbitrary spot.CaPrompt for the name of a new workspace, add it if it does not already exist, and switch to it.DPrompt for the name of a new workspace, appending it to the end of the list of workspaces if it does not already exist, and switch to it.EAdd a new hidden workspace with the given name, or do nothing if a workspace with the given name already exists. Takes a function to insert the workspace at an arbitrary spot in the list.FsAdd a new hidden workspace with the given name, or do nothing if a workspace with the given name already exists.G7Remove the current workspace if it contains no windows.HRemove the current workspace.=Remove workspace with specific tag if it contains no windows.I#Remove workspace with specific tag.JRemove the current workspace after an operation if it is empty and hidden. Can be used to remove a workspace if it is empty when leaving it. The operation may only change workspace once, otherwise the workspace will not be removed.KLike JM but use a list of sticky workspaces, whose entries will never be removed.Remove the hidden workspace with the given tag from the StackSet, if it exists. All the windows in that workspace are moved to the current workspace.:;<=>?@ABCDEFGHIJK:;<=>?@ABCDEFGHIJK@CADBHIGJKFE:?;<=>:;<=>?@ABCDEFGHIJK(c) Brent Yorgey 2009BSD-style (see LICENSE)<byorgey@gmail.com> experimental unportableNone+ NAdd a new workspace group of the given name, mapping to an explicitly specified association between screen IDs and workspace names. This function could be useful for, say, creating some standard workspace groups in your startup hook.O.Add a new workspace group with the given name.P+Give a name to the current workspace group.QDelete the named workspace group from the list of workspace groups. Note that this has no effect on the workspaces involved; it simply forgets the given name.R-View the workspace group with the given name.-View the given workspace on the given screen.:Find the workspace which is currently on the given screen.S%Prompt for a workspace group to view.T2Prompt for a name for the current workspace group.U'Prompt for a workspace group to forget.LMNOPQRSTU LMNOPQRSTU MNOPQRSTULLMNOPQRSTU%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNoneVWVWWVVW(c) Peter J. JonesBSD3-style (see LICENSE) Peter Jones <pjones@devalot.com>unstable not portableNone+Internal project state.X4Details about a workspace that represents a project.ZWorkspace name.[Working directory.\Optional start-up hook.^1Add dynamic projects support to the given config.(Log hook for tracking workspace changes.0Start-up hook for recording configured projects._!Find a project based on its name.`SFetch the current project (the one being used for the currently active workspace).aSwitch to the given project.b}Prompt for a project name and then switch to it. Automatically creates a project if a new name is returned from the prompt.c8Shift the currently focused window to the given project.dYPrompts for a project name and then shifts the currently focused window to that project.Prompt for a project name.eRename the current project.fActivate a project by updating the working directory and possibly running its start-up hook. This function is automatically invoked when the workspace changes.Default project.XYZ[\]^_`abcdefXYZ[\]^_`abcdefXYZ[\]^bdeac_`fXYZ[\]^_`abcdef(C) 2012 Carlos Lpez-CameyNone; public domain<c.lopez@kmels.net>unstableNoneuCreates an autocompletion function for a programm given the program's name and a list of args to send to the command.l%Creates a prompt with the given modesm]Create a list of modes based on : a list of extensions mapped to actions the path to hoogleUses the program hoogle to search for functionsUses the command calc" to compute arithmetic expressionsghijklmghijklmmghijkl ghijklm(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNonetAsk the shell environment for the value of a variable in XMonad's environment, with a default value. In order to setF an environment variable (eg. combine with a prompt so you can modify  $HTTP_PROXY" dynamically), you need to use .wAsk the shell what browser the user likes. If the user hasn't defined any $BROWSER, defaults to returning "firefox", since that seems to be the most common X web browser. Note that if you don't specify a GUI browser but a textual one, that'll be a problem as w will be called by functions expecting to be able to just execute the string or pass it to a shell; so in that case, define $BROWSER as something like "xterm -e elinks" or as the name of a shell script doing much the same thing. xLike wX, but should be of a text editor. This gets the $EDITOR variable, defaulting to "emacs".nopqrstuvwx nopqrstuvwx nopqrsuwxtvnopqrstuvwxNoneJA customized prompt indicating we are searching, and the name of the site.Escape the search string so search engines understand it. Only digits and ASCII letters are not encoded. All non ASCII characters which are encoded as UTF8Given an already defined search engine, extracts its transformation function, making it easy to create compound search engines. For an instance you can use  use google\ to get a function which makes the same transformation as the google search engine would.~Given a browser, a search engine's transformation function, and a search term, perform the requested search in the browser.Given a base URL, create the y that escapes the query and appends it to the base. You can easily define a new engine locally using exported functions without needing to modify XMonad.Actions.Search: ;myNewEngine = searchEngine "site" "http://site.com/search="The important thing is that the site has a interface which accepts the escaped query string as part of the URL. Alas, the exact URL to feed searchEngine varies from site to site, often considerably, so there's no general way to cover this.Generally, examining the resultant URL of a search will allow you to reverse-engineer it if you can't find the necessary URL already described in other projects such as Surfraw. If your search engine is more complex than this (you may want to identify the kind of input and make the search URL dependent on the input or put the query inside of a URL instead of in the end) you can use the alternative  function. (searchFunc :: String -> String searchFunc s | "wiki:" `isPrefixOf` s = "http://en.wikipedia.org/wiki/" ++ (escape $ tail $ snd $ break (==':') s) | "http://" `isPrefixOf` s = s | otherwise = (use google) s myNewEngine = searchEngineF "mymulti" searchFunc searchFuncY here searches for a word in wikipedia if it has a prefix of "wiki:" (you can use the  function to escape any forbidden characters), opens an address directly if it starts with "http://" and otherwise uses the provided google search engine. You can use other engines inside of your own through the 5 function as shown above to make complex searches.LThe user input will be automatically escaped in search engines created with , K, however, completely depends on the transformation function passed to it. This function wraps up a search engine and creates a new one, which works like the argument, but goes directly to a URL if one is given rather than searching. .myIntelligentGoogleEngine = intelligent googleMNow if you search for http://xmonad.org it will directly open in your browser SremoveColonPrefix "foo://bar" ~> "//bar" removeColonPrefix "foo//bar" ~> "foo//bar"Connects a few search engines into one. If the search engines' names are "s1", "s2" and "s3", then the resulting engine will use s1 if the query is s1:word, s2 if you type s2:word and s3 in all other cases.Example: JmultiEngine = intelligent (wikipedia !> mathworld !> (prefixAware google))Now if you type "wiki:Haskell" it will search for "Haskell" in Wikipedia, "mathworld:integral" will search mathworld, and everything else will fall back to google. The use of intelligent will make sure that URLs are opened directly. DMakes a search engine prefix-aware. Especially useful together with . It will automatically remove the prefix from a query so that you don't end up searching for google:xmonad if google is your fallback engine and you explicitly add the prefix. Changes search engine's name Like , but for use with the output from a Prompt; it grabs the Prompt's result, passes it to a given searchEngine and opens it in a given browser. Like k, but in this case, the string is not specified but grabbed from the user's response to a prompt. Example: 3, ((modm, xK_g), promptSearch greenXPConfig google)[This specializes "promptSearchBrowser" by supplying the browser argument as supplied by w from XMonad.Prompt.Shell. Like , but for use with the X selection; it grabs the selection, passes it to a given searchEngine and opens it in a given browser.Like , but for use with the X selection; it grabs the selection, passes it to a given searchEngine and opens it in the default browser . Example: 3, ((modm .|. shiftMask, xK_g), selectSearch google)[This specializes "selectSearchBrowser" by supplying the browser argument as supplied by w from XMonad.Prompt.Shell. 3yz{|}~0yz{|}~0yz~|}{1yz{|}~(c) Spencer JanssenBSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone+:Get the current Spawner or create one if it doesn't exist.9Provides a manage hook to react on process spawned with ,  etc.Replacement for Shell prompt (XMonad.Prompt.Shell3) which launches application on current workspace.Replacement for Shell prompt (XMonad.Prompt.Shell1) which launches application on given workspace.Replacement for  52 which launches application on current workspace.Replacement for  50 which launches application on given workspace.=Spawn an application and apply the manage hook when it opens. Dfunction to stop accumulation of entries for windows that never set  _NET_WM_PID $(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>unstable unportableNone Eset multiple tags for a window at once (overriding any previous tags)hset a tag for a window (overriding any previous tags) writes it to the "_XMONAD_TAGS" window propertyJread all tags of a window reads from the "_XMONAD_TAGS" window property check a window for the given tagadd a tag to the existing ones(remove a tag from a window, if it existsremove all tagsMove the focus in a group of windows, which share the same given tag. The Global variants move through all workspaces, whereas the other ones operate only on the current workspaceMove the focus in a group of windows, which share the same given tag. The Global variants move through all workspaces, whereas the other ones operate only on the current workspaceMove the focus in a group of windows, which share the same given tag. The Global variants move through all workspaces, whereas the other ones operate only on the current workspaceMove the focus in a group of windows, which share the same given tag. The Global variants move through all workspaces, whereas the other ones operate only on the current workspace+apply a pure function to windows with a tag+apply a pure function to windows with a tag! (C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone*(c) 2007 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone+357G (c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357zAdd, on the top of the screen, a simple bar of tabs to a given | layout, with the default theme and the default shrinker.Same of [, but with the possibility of setting a custom shrinker, a custom theme and the position:  or .18stuvwxyz{ 18(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone7A P layout with the xmonad default decoration, default theme and default shrinker. Here you can find a screen shot: Ehttp://code.haskell.org/~arossato/xmonadShots/circleSimpleDefault.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A O layout with the xmonad simple decoration, default theme and default shrinker. Here you can find a screen shot: Bhttp://code.haskell.org/~arossato/xmonadShots/circleSimpleDeco.png Similar to circleSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme.A  layout with the xmonad default decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Nhttp://code.haskell.org/~arossato/xmonadShots/circleSimpleDefaultResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A  layout with the xmonad simple decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Khttp://code.haskell.org/~arossato/xmonadShots/circleSimpleDecoResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A Q layout with the xmonad DwmStyle decoration, default theme and default shrinker. Here you can find a screen shot: Fhttp://code.haskell.org/~arossato/xmonadShots/circleSimpleDwmStyle.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A O layout with the xmonad tabbed decoration, default theme and default shrinker. Here you can find a screen shot: Dhttp://code.haskell.org/~arossato/xmonadShots/circleSimpleTabbed.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.An cP layout with the xmonad default decoration, default theme and default shrinker. Here you can find a screen shot: Hhttp://code.haskell.org/~arossato/xmonadShots/accordionSimpleDefault.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.An cO layout with the xmonad simple decoration, default theme and default shrinker. Here you can find a screen shot: Ehttp://code.haskell.org/~arossato/xmonadShots/accordionSimpleDeco.png Similar to accordionSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme.An c layout with the xmonad default decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Similar to K but with the possibility of setting a custom shrinker and a custom theme.An c layout with the xmonad simple decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Similar to K but with the possibility of setting a custom shrinker and a custom theme.An cQ layout with the xmonad DwmStyle decoration, default theme and default shrinker. Here you can find a screen shot: Ihttp://code.haskell.org/~arossato/xmonadShots/accordionSimpleDwmStyle.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.An cO layout with the xmonad tabbed decoration, default theme and default shrinker. Here you can find a screen shot: Ghttp://code.haskell.org/~arossato/xmonadShots/accordionSimpleTabbed.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A ^P layout with the xmonad default decoration, default theme and default shrinker. Here you can find a screen shot: Chttp://code.haskell.org/~arossato/xmonadShots/tallSimpleDefault.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A ^O layout with the xmonad simple decoration, default theme and default shrinker. Here you can find a screen shot: @http://code.haskell.org/~arossato/xmonadShots/tallSimpleDeco.png Similar to tallSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme.A ^ layout with the xmonad default decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Lhttp://code.haskell.org/~arossato/xmonadShots/tallSimpleDefaultResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A ^ layout with the xmonad simple decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Ihttp://code.haskell.org/~arossato/xmonadShots/tallSimpleDecoResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A ^Q layout with the xmonad DwmStyle decoration, default theme and default shrinker. Here you can find a screen shot: Dhttp://code.haskell.org/~arossato/xmonadShots/tallSimpleDwmStyle.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A ^O layout with the xmonad tabbed decoration, default theme and default shrinker. Here you can find a screen shot: Bhttp://code.haskell.org/~arossato/xmonadShots/tallSimpleTabbed.png Similar to K but with the possibility of setting a custom shrinker and a custom theme._A 'Mirror Tall' layout with the xmonad default decoration, default theme and default shrinker. Here you can find a screen shot: Ihttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleDefault.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.^A 'Mirror Tall' layout with the xmonad simple decoration, default theme and default shrinker. Here you can find a screen shot: Fhttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleDeco.png Similar to mirrorTallSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme.A 'Mirror Tall' layout with the xmonad default decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Rhttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleDefaultResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.A 'Mirror Tall' layout with the xmonad simple decoration, default theme and default shrinker, but with the possibility of moving windows with the mouse, and resize/move them with the keyboard. Here you can find a screen shot: Ohttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleDecoResizable.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.`A 'Mirror Tall' layout with the xmonad DwmStyle decoration, default theme and default shrinker. Here you can find a screen shot: Jhttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleDwmStyle.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.^A 'Mirror Tall' layout with the xmonad tabbed decoration, default theme and default shrinker. Here you can find a screen shot: Hhttp://code.haskell.org/~arossato/xmonadShots/mirrorTallSimpleTabbed.png Similar to K but with the possibility of setting a custom shrinker and a custom theme.dA simple floating layout where every window is placed according to the window's initial attributes. Here you can find a screen shot: Chttp://code.haskell.org/~arossato/xmonadShots/floatSimpleSimple.png#This version is decorated with the  style. Here you can find a screen shot: Dhttp://code.haskell.org/~arossato/xmonadShots/floatSimpleDefault.pngSame as L, but with the possibility of setting a custom shrinker and a custom theme.#This version is decorated with the X5. Note that this is a keyboard only floating layout. Here you can find a screen shot: Ehttp://code.haskell.org/~arossato/xmonadShots/floatSimpleDwmStyle.pngSame as L, but with the possibility of setting a custom shrinker and a custom theme.#This version is decorated with the TabbedDecoration+ style. | Mouse dragging is somehow weird. Here you can find a screen shot: Chttp://code.haskell.org/~arossato/xmonadShots/floatSimpleTabbed.pngSame as L, but with the possibility of setting a custom shrinker and a custom theme.: ;18;18: (c) 2007 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>stable unportableNonewGiven an XPrompt configuration and a file path, prompt the user for a line of text, and append it to the given file. Append a string to a file.      (C) 2008 Luis CabellosBSD3zhen.sydow@gmail.comunstable unportableNone AGiven an application and its parameters, launch the application.  yGet the user's response to a prompt an launch an application using the input as command parameters of the application.              (C) 2015 Antoine BeauprBSD3$Antoine Beaupr <anarcat@debian.org>unstable unportableNone  Customized 2 prompt that will ask to confirm the given string  Prompt the user to confirm a given action. We offer no completion and simply ask to confirm (ENTER) or cancel (ESCAPE). The actual key handling is done by mkXPrompt.  '      (C) 2008 Juraj HercekBSD3juhe_xmonad@hck.skunstable unportableNone Function P starts the prompt with list of all executable files in directory specified by ef. The name of the prompt is taken from the last element of the path. If you specify root directory - / - as the path, name Root:6 will be used as the name of the prompt instead. The  parameter can be used to customize visuals of the prompt. The runner parameter specifies the function used to run the program - see usage for more information Function  does the same as 0 except the name of the prompt is specified by   parameter.(c) 2007 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>stable unportableNoneGiven a prompt configuration and some prompt text, create an X action which pops up a prompt waiting for user input, and returns whatever they type. Note that the type of the action is X (Maybe String)Q, which reflects the fact that the user might cancel the prompt (resulting in Nothing), or enter an input string s (resulting in Just s). The same as /, but with a completion function. The type  ComplFunction is String -> IO [String], as defined in  XMonad.Prompt. The '& utility function, also defined in  XMonad.PromptO, is useful for creating such a function from a known list of possibilities.A combinator for hooking up an input prompt action to a function which can take the result of the input prompt and produce another action. If the user cancels the input prompt, the second function will not be run.The astute student of types will note that this is actually a very general combinator and has nothing in particular to do with input prompts. If you find a more general use for it and want to move it to a different module, be my guest.(c) 2007 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>stable unportableNonePrompt the user for a recipient, subject, and body, and send an email via the GNU 'mail' utility. The second argument is a list of addresses for autocompletion.(c) 2007 Valery V. VorotyntsevBSD3-style (see LICENSE)+Valery V. Vorotyntsev <valery.vv@gmail.com>(non-portable (uses "manpath" and "bash")None&Query for manual page to be displayed.0Run a command using shell and return its output.XXX Merge into ?(Ask "gurus" whether evaluate (length ...)% approach is better/more idiomatic.)  +(c) 2014 Igor Babuschkin, Antoine R. DumontBSD3-style (see LICENSE)'Antoine R. Dumont <eniotna.t@gmail.com>unstable unportableNone  6Default password store folder in $HOME/.password-store!Compute the password store's location. Use the PASSWORD_STORE_DIR environment variable to set the password store. If empty, return the password store located in user's home."A pass prompt factory3A prompt to retrieve a password from a given entry.A prompt to generate a password for a given entry. This can be used to override an already stored entry. (Beware that no confirmation is asked)XA prompt to remove a password for a given entry. (Beware that no confirmation is asked)#Select a password.$uGenerate a 30 characters password for a given entry. If the entry already exists, it is updated with a new password.%+Remove a password stored for a given entry.&JRetrieve the list of passwords from the password storage 'passwordStoreDir'() !"#$%&*+'() !"#$%&*+/(c) Joachim Breitner <mail@joachim-breitner.de>BSD+Joachim Breitner <mail@joachim-breitner.de>unstable unportableNone+357G,E(Initial x pixel, initial y pixel, final x pixel, final y pixel).-6(Direction, height/width, initial pixel, final pixel).SetStruts is a message constructor used to set or unset specific struts, regardless of whether or not the struts were originally set. Here are some example bindings:Show all gaps: R ,((modm .|. shiftMask ,xK_b),sendMessage $ SetStruts [minBound .. maxBound] [])Hide all gaps: R ,((modm .|. controlMask,xK_b),sendMessage $ SetStruts [] [minBound .. maxBound])Show only upper and left gaps: c ,((modm .|. controlMask .|. shiftMask,xK_b),sendMessage $ SetStruts [U,L] [minBound .. maxBound])7Hide the bottom keeping whatever the other values were: M ,((modm .|. controlMask .|. shiftMask,xK_g),sendMessage $ SetStruts [] [D])7These are removed from the currently set struts before  are added..imessage sent to ensure that caching the gaps won't give a wrong result because a new dock has been added %Message type which can be sent to an #* layout modifier to alter its behavior.$]Detects if the given window is of type DOCK and if so, reveals it, but does not manage it.%.Checks if a window is a DOCK or DESKTOP window&SWhenever a new dock appears, refresh the layout immediately to avoid the new dock./6Gets the STRUT config, if present, in xmonad gap order'^Goes through the list of windows and find the gap so that all STRUT settings are satisfied.(KAdjust layout automagically: don't cover up any docks, status bars, etc.)Adjust layout automagically: don't cover up docks, status bars, etc. on the indicated sides of the screen. Valid sides are U (top), D (bottom), R (right), or L (left).0Invertible conversion.1Invertible conversion.2Do the two ranges overlap?#Precondition for every input range (x, y): x  y.A range (x, y)( is assumed to include every pixel from x to y. ,3-.4 !"#567$%&/'()80192:;<= !"#$%&'()$%#()& !"',3-.4 !"#567$%&/'()80192:;<=&(c) Don Stewart <dons@cse.unsw.edu.au>BSD3-style (see LICENSE)"Don Stewart <dons@cse.unsw.edu.au>unstable unportableNone4G)*The *K type allows the user to customize the formatting of status information.,8how to print the tag of the currently focused workspace-Hhow to print tags of visible but not focused workspaces (xinerama only).=how to print tags of hidden workspaces which contain windows/,how to print tags of empty hidden workspaces02format to be applied to tags of urgent workspaces.1Rseparator to use between different log sections (window name, layout, workspaces)2'separator to use between workspace tags3window title format4escape / sanitizes input to 35layout name format6how to order the different log sections. By default, this function receives a list with three formatted strings, representing the workspaces, the layout, and the current window title, respectively. If you have specified any extra loggers in 8l, their output will also be appended to the list. To get them in the reverse order, you can just use ppOrder = reverseW. If you don't want to display the current layout, you could use something like "ppOrder = \(ws:_:t:_) -> [ws,t] , and so on.7"how to sort the workspaces. See XMonad.Util.WorkspaceCompare for some useful sorts.8ologgers for generating extra information such as time and date, system load, battery status, and so on. See XMonad.Util.Loggers# for examples, or create your own!9applied to the entire formatted string in order to output it. Can be used to specify an alternative output method (e.g. write to a pipe instead of stdout), and/or to perform some last-minute formatting.:<Run xmonad with a dzen status bar set to some nice defaults. 7main = xmonad =<< dzen myConfig myConfig = def { ... }_The intent is that the above config file should provide a nice status bar with minimal effort.OIf you wish to customize the status bar format at all, you'll have to use the < function instead.uThe binding uses the XMonad.Hooks.ManageDocks module to automatically handle screen placement for dzen, and enables 'mod-b' for toggling the menu bar.;>Run xmonad with a xmobar status bar set to some nice defaults. 9main = xmonad =<< xmobar myConfig myConfig = def { ... }#This works pretty much the same as : function above.<Modifies the given base configuration to launch the given status bar, send status information to that bar, and allocate space on the screen edges for the bar.=Write a string to a property on the root window. This property is of type UTF8_STRING. The string must have been processed by encodeString (dynamicLogString does this).>>Write a string to the _XMONAD_LOG property on the root window.>6Helper function which provides ToggleStruts keybinding?VAn example log hook, which prints status information to stdout in the default format: 1 2 [3] 4 7 : full : titlepThat is, the currently populated workspaces, the current workspace layout, and the title of the focused window.$To customize the output format, see @.@_Format the current status using the supplied pretty-printing format, and write it to stdout.A The same as @, except it simply returns the status as a formatted string without actually printing it to stdout, to allow for further processing, or use in some application other than a status bar.BFormat the workspace information, given a workspace sorting function, a list of urgent windows, a pretty-printer format, and the current WindowSet.C5Workspace logger with a format designed for Xinerama:  [1 9 3] 2 7}where 1, 9, and 3 are the workspaces on screens 1, 2 and 3, respectively, and 2 and 7 are non-visible, non-empty workspaces.At the present time, the current layout and window title are not shown. The xinerama workspace format shown above can be (mostly) replicated using @ by setting 7 to getSortByXineramaRule from XMonad.Util.WorkspaceCompare. For example, xdef { ppCurrent = dzenColor "red" "#efebe7" , ppVisible = wrap "[" "]" , ppSort = getSortByXineramaRule }E0Wrap a string in delimiters, unless it is empty.F/Pad a string with a leading and trailing space.G3Trim leading and trailing whitespace from a string.H>Limit a string to a certain length, adding "..." if truncated.?bOutput a list of strings, ignoring empty ones and separating the rest with the given separator.IXUse dzen escape codes to output a string with given foreground and background colors.JEscape any dzen metacharacters.K"Strip dzen formatting or commands.LZUse xmobar escape codes to output a string with given foreground and background colors.M&Strip xmobar markup, specifically the  fc,  icon and  action" tags and the matching tags like  /fc.O0The default pretty printing options, as seen in ?.P/Settings to emulate dwm's statusbar, dzen only.QSome nice xmobar defaults.RUThe options that sjanssen likes to use with xmobar, as an example. Note the use of L and the record update on .SDThe options that byorgey likes to use with dzen, as another example..*+,-./0123456789:;<)the command line to launch the status barthe pretty printing options0the desired key binding to toggle bar visibilitythe base config=>>?@ABCDEleft delimiterright delimiter output stringFGH? separatorfields to outputI1foreground color: a color name, or #rrggbb formatbackground color output stringJKL1foreground color: a color name, or #rrggbb formatbackground color output stringM@Ntags with all  tag... /tag removedOPQRSA+*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS+:;<?C=>@A*+,-./0123456789OPQRSEFGHLMNIJKBD*+,-./0123456789:;<=>>?@ABCDEFGH?IJKLM@NOPQRSA(c) 2009 Daniel WagnerBSD3<daniel@wagner-home.com>unstable unportableNone]In case you don't know statically how many screens there will be, you can call this in main before starting xmonad. For example, part of my config reads main = do nScreens <- countScreens xmonad $ def { ... workspaces = withScreens nScreens (workspaces def), ... }^|This turns a naive pretty-printer into one that is aware of the independent screens. That is, you can write your pretty printer to behave the way you want on virtual workspaces; this function will convert that pretty-printer into one that first filters out physical workspaces on other screens, then converts all the physical workspaces on this screen to their virtual names.!For example, if you have handles hLeft and hRight; for bars on the left and right screens, respectively, and ppB is a pretty-printer function that takes a handle, you could write }logHook = let log screen handle = dynamicLogWithPP . marshallPP screen . pp $ handle in log 0 hLeft >> log 1 hRight_Take a pretty-printer and turn it into one that only runs when the current workspace is one associated with the given screen. The way this works is a bit hacky, so beware: the 9V field of the input will not be invoked if either of the following conditions is met: The 79 of the input returns an empty list (when not given one).The 6' of the input returns the exact string "\0".For example, you can use this to create a pipe which tracks the title of the window currently focused on a given screen (even if the screen is not current) by doing something like this: ppFocus s = whenCurrentOn s def { ppOrder = \(_:_:title:_) -> [title] , ppOutput = appendFile ("focus" ++ show s) . (++ "\n") }eSequence a few of these pretty-printers to get a log hook that keeps each screen's title up-to-date.`If vSort is a function that sorts s with virtual names, then marshallSort s vSort is a function which sorts Qs with physical names in an analogous way -- but keeps only the spaces on screen s.aConvert the tag of the  from a U to a T.bConvert the tag of the  from a T to a U.TUVWXYZ[,The number of screens to make workspaces for#The desired virtual workspace names/A list of all internal physical workspace names\]^_`abTUVWXYZ[\]^_`abUTZ[\^_]VWXYab`TUVWXYZ[\]^_`ab'(c) Jan-David Quesel <quesel@gmail.org>BSD3-style (see LICENSE)noneunstable unportableNone+BStuff for linking workspacesCuSwitch to the given workspace in a non greedy way, stop if we reached the first screen | we already did switching onDSwitch to the workspace that matches the current one, executing switches for that workspace as well. | The function switchWorkspaceNonGreedy' will take of stopping if we reached the first workspace again.ECInsert a mapping between t1 and t2 or remove it was already presentF8Insert a mapping between t1 and t2 and display a messagek"Remove all maps between workspacesl/remove all matching regarding a given workspacemToggle the currently displayed workspaces as matching. Starting from the one with focus | a linked list of workspaces is created that will later be iterated by switchToMatching.BGcdefghiHjCDEFIklmJK cdefghijklm jklmicdefghBGcdefghiHjCDEFIklmJK(c) Nicolas PouillardBSD-style (see LICENSE)/Nicolas Pouillard <nicolas.pouillard@gmail.com>unstable unportableNone+n+Here is the topic space configuration area.p1This mapping associate a directory to each topic.qfThis mapping associate an action to trigger when switching to a given topic which workspace is empty.r!This is the default topic action.sThis is the default topic.tThis setups the maximum depth of topic history, usually 10 is a good default since we can bind all of them using numeric keypad.uu is just an alias for e" but should points to a directory.vv is just an alias for w An alias for flip replicateM_yEReturns the list of last focused workspaces the empty list otherwise.zGiven a n, the last focused topic, and a predicate that will select topics that one want to keep, this function will set the property of last focused topics.{)Reverse the list of "last focused topics"|This function is a variant of BA which takes a topic configuration and a pretty-printing record *c. It will show the list of topics sorted historically and highlighting topics with urgent windows.}wGiven a prompt configuration and a topic configuration, triggers the action associated with the topic given in prompt.~WGiven a configuration and a topic, triggers the action associated with the given topic.5Trigger the action associated with the current topic.Switch to the given topic.8Switch to the Nth last focused topic or failback to the s.UShift the focused window to the Nth last focused topic, or fallback to doing nothing.WReturns the directory associated with current topic returns the empty string otherwise.NCheck the given topic configuration for duplicates topics or undefined topics.L$Display the given message using the xmessage program.MNOnopqrstuvwxyz{|}~LPQnopqrstuvwxyz{|}~vunopqrstxyz{|}~wMNOnopqrstuvwxyz{|}~LPQw (c) Ben Boeckel 2012BSD-style (as xmonad)mathstuf@gmail.comunstable unportableNone+ RSTUV&The PP to use if the screen is focusedThe PP to use otherwiseWXY RSTUVWXY(c) Brent Yorgey, Wirt WolffBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone" is just a convenient synonym for X (Maybe String).Get the current volume with aumix. !http://jpj.net/~trevor/aumix.htmlGet the battery status (percent charge and charging/discharging status). This is an ugly hack and may not work for some people. At some point it would be nice to make this more general/have fewer dependencies (assumes  /usr/bin/acpi and sed are installed.)Get the current date and time, and format them via the given format string. The format used is the same as that used by the C library function strftime; for example, date "%a %b %d" might display something like  Tue Feb 190. For more information see something like  ?http://www.cplusplus.com/reference/clibrary/ctime/strftime.html.FGet the load average. This assumes that you have a utility called /usr/bin/uptime and that you have sedn installed; these are fairly common on GNU/Linux systems but it would be nice to make this more general. Create a ! from an arbitrary shell command.3Get a count of filtered files in a directory. See  and  source for usage examples.xGet a count of unread mails in a maildir. For maildir format details, to write loggers for other classes of mail, see  "http://cr.yp.to/proto/maildir.html and .&Get a count of new mails in a maildir.+Get the title (name) of the focused window.#Get the name of the current layout.&Get the name of the current workspace.+Use a string formatting function to edit a f string. For example, to create a tag function to prefix or label loggers, as in 'tag: output', use: UtagL l = onLogger $ wrap (l ++ ": ") "" tagL "bat" battery tagL "load" loadAvgQIf you already have a (String -> String) function you want to apply to a logger: revL = onLogger trim,See formatting utility source code for more  usage examples.3Wrap a logger's output in delimiters, unless it is  X (Nothing) or  X (Just ""). Some examples:  wrapL " | " " | " (date "%a %d %b") -- ' | Tue 19 Feb | ' wrapL "bat: " "" battery -- ' bat: battery_logger_output'IMake a logger's output constant width by padding with the given string, even if the logger is  X (Nothing) or  X (Just ""). Useful to reduce visual noise as a title logger shrinks and grows, to use a fixed width for a logger that sometimes becomes Nothing, or even to create fancy spacers or character based art effects.It fills missing logger output with a repeated character like ".", ":" or pattern, like " -.-". The cycling padding string is reversed on the left of the logger output. This is mainly useful with AlignCenter.Create a "spacer" logger, e.g. logSp 3 -- loggerizes ' '#. For more complex "spacers", use  with return Nothing.GPad a logger's output with a leading and trailing space, unless it is  X (Nothing) or  X (Just "").3Limit a logger's length, adding "..." if truncated.CColor a logger's output with dzen foreground and background colors. % dzenColorL "green" "#2A4C3F" batteryEColor a logger's output with xmobar foreground and background colors. + xmobarColorL "#6A5ACD" "gray6" loadAverageZ!directory in which to count files,predicate to match if file should be counted%AlignCenter, AlignRight, or AlignLeft,String to cycle to pad missing logger outputBFixed length to output (including invisible formatting characters)Z5(c) Konstantin Sobolev <konstantin.sobolev@gmail.com>BSD-style (see LICENSE)1Konstantin Sobolev <konstantin.sobolev@gmail.com>unstable unportableNoneGNamed scratchpads configuration%Single named scratchpad configurationScratchpad nameCommand used to run application)Query to find already running applicationOManage hook called for application window, use it to define the placement. See  nonFloating, defaultFloating and customFloating.Manage hook that makes the window non-floatingEManage hook that makes the window floating with the default placement@Manage hook that makes the window floating with custom placement[,Finds named scratchpad configuration by name\<Runs application which should appear in specified scratchpad+Action to pop up specified named scratchpad)Manage hook to use with named scratchpads{Transforms a workspace list containing the NSP workspace into one that doesn't contain it. Intended for use with logHooks.FTransforms a pretty-printer into one not displaying the NSP workspace.A simple use could be: DlogHook = dynamicLogWithPP . namedScratchpadFilterOutWorkspace $ def$Here is another example, when using  XMonad.Layout.IndependentScreens. If you have handles hLeft and hRight; for bars on the left and right screens, respectively, and ppB is a pretty-printer function that takes a handle, you could write logHook = let log screen handle = dynamicLogWithPP . namedScratchpadFilterOutWorkspacePP . marshallPP screen . pp $ handle in log 0 hLeft >> log 1 hRight[\Named scratchpads configurationScratchpad name]^Named scratchpads configuration[\]^(c) Braden Shepherdson 2008BSD-style (as xmonad)Braden.Shepherdson@gmail.comunstable unportableNoneDAction to pop up the terminal, for the user to bind to a custom key.BAction to pop up the terminal, with a directly specified terminal.Action to pop up any program with the user specifying how to set its resource to "scratchpad". For example, with gnome-terminal: PscratchpadSpawnActionCustom "gnome-terminal --disable-factory --name scratchpad"jThe ManageHook, with the default rectangle: Half the screen wide, a quarter of the screen tall, centered.The ManageHook, with a user-specified StackSet.RationalRect, e.g., for a terminal 4/10 of the screen width from the left, half the screen height from the top, and 6/10 of the screen width by 3/10 the screen height, use: 5scratchpadManageHook (W.RationalRect 0.4 0.5 0.6 0.3)zTransforms a workspace list containing the SP workspace into one that doesn't contain it. Intended for use with logHooks.+The configuration, to retrieve the terminalName of the terminal program5Command to spawn a program with resource "scratchpad"_ User-specified screen rectangle.`_`(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNoneaa.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNonebb.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNoneTLaunch the "Run Application" dialog. gnome-panel must be running for this to work.Register xmonad with gnome.  'dbus-send'4 must be in the $PATH with which xmonad is started.This action reduces a delay on startup only only if you have configured gnome-session>=2.26: to start xmonad with a command as such: \gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type stringcc.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNonedede!(c) Brandon S Allbery KF8NH, 2014BSDallbery.b@gmail.comunstable unportableNoneSLaunch the "Run Application" dialog. mate-panel must be running for this to work.Register xmonad with mate.  'dbus-send'4 must be in the $PATH with which xmonad is started.This action reduces a delay on startup only if you have configured mate-session to start xmonad with a command such as (check local documentation): Rdconf write /org/mate/desktop/session/required_components/windowmanager "'xmonad'"((the extra quotes are required by dconf)ff/(c) Ivan Miljenovic <Ivan.Miljenovic@gmail.com>BSDnoneunstable unportableNoneggNone3;N>*>< (c) Lukas MaiBSD3-style (see LICENSE)<l.mai@web.de>unstable unportableNone moveHook endHookH is a mouse button event handler. It collects mouse movements, calling moveHook9 for each update; when the button is released, it calls endHook.A utility function on top of  . It uses a hP to look up the mouse gesture, then executes the corresponding action (if any).A callback generator for . 0 returns two callback functions for passing to . The move hook will collect mouse movements (and return the current gesture as a list); the end hook will return a list of the completed gesture, which you can access with  u.ijklijkl&(c) 2011 Norbert Zeh <nzeh@cs.dal.ca>BSD3-style (see LICENSE)Norbert Zeh <nzeh@cs.dal.ca>unstable unportableNone+37GIN0m%Shorthand for the tedious screen type8Stores the configuration of directional navigation. The  instance uses line navigation for the tiled layer and for navigation between screens, and center navigation for the float layer. No custom navigation strategies or rectangles for unmapped windows are defined for individual layouts./default navigation strategy for the tiled layer'navigation strategy for the float layer'strategy for navigation between screens association list of customized navigation strategies for different layouts in the tiled layer. Each pair is of the form ("layout description", navigation strategy). If there is no pair in this list whose first component is the name of the current layout, the  strategy is used.;list associating functions to calculate rectangles for unmapped windows with layouts to which they are to be applied. Each pair in this list is of the form ("layout description", function), where the function calculates a rectangle for a given unmapped window from the screen it is on and its window ID. See  #Finer_Points for how to use this.n9Score that indicates how general a navigation strategy is$Encapsulates the navigation strategyo;A shorthand for workspace-rectangle pairs. Reduces typing.p8A shorthand for window-rectangle pairs. Reduces typing.q!A rectangle paired with an object Line navigation. To illustrate this navigation strategy, consider navigating to the left from the current window. In this case, we draw a horizontal line through the center of the current window and consider all windows that intersect this horizontal line and whose right boundaries are to the left of the left boundary of the current window. From among these windows, we choose the one with the rightmost right boundary. Center navigation. Again, consider navigating to the left. Then we consider the cone bounded by the two rays shot at 45-degree angles in north-west and south-west direction from the center of the current window. A window is a candidate to receive the focus if its center lies in this cone. We choose the window whose center has minimum L1-distance from the current window center. The tie breaking strategy for windows with the same distance is a bit complicated (see  #Technical_Discussion) but ensures that all windows can be reached and that windows with the same center are traversed in their order in the window stack, that is, in the order   and   would traverse them. Convenience function for enabling Navigation2D with typical keybindings. Takes a Navigation2DConfig, an (up, left, down, right) tuple, a mapping from modifier key to action, and a bool to indicate if wrapping should occur, and returns a function from XConfig to XConfig. Example: v navigation2D def (xK_w, xK_a, xK_s, xK_d) [(mod4Mask, windowGo), (mod4Mask .|. shiftMask, windowSwap)] False myConfig fConvenience function for enabling Navigation2D with typical keybindings, using the syntax defined in b . Takes a Navigation2DConfig, an (up, left, down, right) tuple, a mapping from key prefix to action, and a bool to indicate if wrapping should occur, and returns a function from XConfig to XConfig. Example: _ navigation2DP def ("w", "a", "s", "d") [("M-", windowGo), ("M-S-", windowSwap)] False myConfig Convenience function for adding keybindings. Takes an (up, left, down, right) tuple, a mapping from key prefix to action, and a bool to indicate if wrapping should occur, and returns a function from XConfig to XConfig. Example: y additionalNav2DKeys (xK_w, xK_a, xK_s, xK_d) [(mod4Mask, windowGo), (mod4Mask .|. shiftMask, windowSwap)] False myConfigJConvenience function for adding keybindings, using the syntax defined in b . Takes an (up, left, down, right) tuple, a mapping from key prefix to action, and a bool to indicate if wrapping should occur, and returns a function from XConfig to XConfig. Example: f additionalNav2DKeysP def ("w", "a", "s", "d") [("M-", windowGo), ("M-S-", windowSwap)] False myConfigIModifies the xmonad configuration to store the Navigation2D configurationSwitches focus to the closest window in the other layer (floating if the current window is tiled, tiled if the current window is floating). Closest means that the L1-distance between the centers of the windows is minimized. Moves the focus to the next window in the given direction and in the same layer as the current window. The second argument indicates whether navigation should wrap around (e.g., from the left edge of the leftmost screen to the right edge of the rightmost screen).Swaps the current window with the next window in the given direction and in the same layer as the current window. (In the floating layer, all that changes for the two windows is their stacking order if they're on the same screen. If they're on different screens, each window is moved to the other window's screen but retains its position and size relative to the screen.) The second argument indicates wrapping (see ).rMoves the current window to the next screen in the given direction. The second argument indicates wrapping (see ).iMoves the focus to the next screen in the given direction. The second argument indicates wrapping (see ).Swaps the workspace on the current screen with the workspace on the screen in the given direction. The second argument indicates wrapping (see ).Maps each window to a fullscreen rect. This may not be the same rectangle the window maps to under the Full layout or a similar layout if the layout respects statusbar struts. In such cases, it may be better to use .Maps each window to the rectangle it would receive if it was the only window in the layout. Useful, for example, for determining the default rectangle for unmapped windows in a Full layout that respects statusbar struts.r>Acts on the appropriate layer using the given action functionss?Returns the list of windows on the currently visible workspacestUReturns the current rectangle of the given window, Nothing if the window isn't mappedu3Acts on the screens using the given action functionv+Determines whether a given window is mappedw1Finds the window closest to the given window and focuses it. Ties are broken by choosing the first window in the window stack among the tied windows. (The stack order is the one produced by integrate'ing each visible workspace's window stack and concatenating these lists for all visible workspaces.)x)Implements navigation for the tiled layery)Implements navigation for the float layerz%Implements navigation between screens{Implements line navigation. For layouts without overlapping windows, there is no need to break ties between equidistant windows. When windows do overlap, even the best tie breaking rule cannot make line navigation feel natural. Thus, we fairly arbtitrarily break ties by preferring the window that comes first in the window stack. (The stack order is the one produced by integrate'ing each visible workspace's window stack and concatenating these lists for all visible workspaces.)|Implements center navigation}:Swaps the current window with the window given as argument~$Calculates the center of a rectangle!Shorthand for integer conversions7Functions to choose the subset of windows to operate on7Functions to choose the subset of windows to operate on=Returns the list of visible workspaces and their screen rectsCreates five copies of each (window/workspace, rect) pair in the input: the original and four offset one desktop size (desktop = collection of all screens) to the left, to the right, up, and down. Wrap-around at desktop edges is implemented by navigating into these displaced copies.|Calculates the offsets for window/screen coordinates for the duplication of windows/workspaces that implements wrap-around.uReturns the list of screens sorted primarily by their centers' x-coordinates and secondarily by their y-coordinates..Calculates the L1-distance between two points.8mnopq     rXChooses which layer to operate on, relative to the current window (same or other layer)The action for the tiled layerThe action for the float layer,The action if the current workspace is empty+Should navigation wrap around screen edges?stuShould wrapping be used?vwxyz{|}~,The window set, used to get the desktop size,Should wrapping be used? Do nothing if not.+Input set of (window/workspace, rect) pairs          1mnopq     rstuvwxyz{|}~d(c) 2007 David Roundy <droundy@darcs.net>, Devin Mullins <me@twifkak.com>Devin Mullins <me@twifkak.com>None     %(c) 2007 David Roundy, Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone357G$.A tabbed layout with the default xmonad Theme.(This is a minimal working configuration: Yimport XMonad import XMonad.Layout.Tabbed main = xmonad def { layoutHook = simpleTabbed }&5A bottom-tabbed layout with the default xmonad Theme.'5A bottom-tabbed layout with the default xmonad Theme.(3A side-tabbed layout with the default xmonad Theme.)3A side-tabbed layout with the default xmonad Theme.*3A side-tabbed layout with the default xmonad Theme.+3A side-tabbed layout with the default xmonad Theme.,UA layout decorated with tabs and the possibility to set a custom shrinker and theme..cA layout decorated with tabs at the bottom and the possibility to set a custom shrinker and theme.0UA layout decorated with tabs and the possibility to set a custom shrinker and theme.1UA layout decorated with tabs and the possibility to set a custom shrinker and theme.2UA layout decorated with tabs and the possibility to set a custom shrinker and theme.3UA layout decorated with tabs and the possibility to set a custom shrinker and theme.4VA layout modifier that uses the provided shrinker and theme to add tabs to any layout.6dA layout modifier that uses the provided shrinker and theme to add tabs to the bottom of any layout.8bA layout modifier that uses the provided shrinker and theme to add tabs to the side of any layout.9bA layout modifier that uses the provided shrinker and theme to add tabs to the side of any layout.!"#$%&'()*+,-./0123456789:;7   !"#$%&'()*+,-./18!"#$%&'()*+,-./0123456789:;7$,4%-5&.6(09)18'/7*2;+3: !"#$%&'()*+,-./1!"8  #!"#$%&'()*+,-./0123456789:;*(c) 2007 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNone+357CGB$Apply action with destination window%<=>?@ABCDEFGHIJ<=>?@ABCDEFGHIJIJ>?@ABCDFGEH=<<=>?@ABCDEFGHIJ$(c) David Roundy <droundy@darcs.net>BSD-style (see LICENSE)noneunstable unportableNone3457GKLKLLKKL5(c) Konstantin Sobolev <konstantin.sobolev@gmail.com>BSD-style (see LICENSE)1Konstantin Sobolev <konstantin.sobolev@gmail.com>unstable unportableNone+3457GOSwap window between panesP5Swap window between panes in the N-th nested ComboP.  SwapWindowN 0 equals to SwapWindow MNOPQMNOPQQMNOP MNOPQs(c) 2013 Ben Weitzman <benweitzman@gmail.com> 2015 Anton Pirogov <anton.pirogov@gmail.com>BSD3-style (see LICENSE)$Ben Weitzman <benweitzman@gmail.com>unstable unportableNone$+357GR%Message to move nodes inside the treeU@Message to cyclically select the parent node instead of the leafWLMessage for swapping the left child of a split with the right child of splitY=Message for rotating a split (horizontal/vertical) in the BSP[0Message for resizing one of the cells in the BSP_^Message to balance the tree in some way (Balance retiles the windows, Equalize changes ratios)b^Message for rotating the binary tree around the parent node of the window to the left or righteHan empty BinarySpacePartition to use as a default for adding windows to.RSTUVWXYZ[\]^_`abcde      !"#$%&'()*+,-./0123RSTUVWXYZ[\]^_`abcdeeYZWX[\]^bcd_`aUVRSThRSTUVWXYZ[\]^_`abcde      !"#$%&'()*+,-./0123'(c) Norbert Zeh <norbert.zeh@gmail.com>BSD3#Norbert Zeh <norbert.zeh@gmail.com> experimentalportableNone357f-Rotation between consecutive split directionsi5Layouts with geometrically decreasing window sizes. k and i split the screen into a rectangle for the first window and a rectangle for the remaining windows, which is split recursively to lay out these windows. Both layouts alternate between horizontal and vertical splits."In each recursive step, the split m determines the placement of the remaining windows relative to the current window: to the left, to the right, above or below. The split direction of the first split is determined by the first layout parameter. The split direction of the second step is rotated 90 degrees relative to the first split direction according to the second layout parameter of type f. So, if the first split is % and the second layout parameter is g, then the second split is N.For the k layout, the same f is used for computing the split direction of each step from the split direction of the previous step. For example, parameters  and g! produces the direction sequence , N, , , , N, , , ...For the i layout, the f alternates between g and h) in each step. For example, parameters  and h! produce the direction sequence , , , , ... because  is the h rotation of  and  is the g rotation of .In each split, the current rectangle is split so that the ratio between the size of the rectangle allocated to the current window and the size of the rectangle allocated to the remaining windows is the third layout parameter. This ratio can be altered using  and ~ messages. The former multiplies the ratio by the fourth layout parameter. The latter divides the ratio by this parameter.l{ does not alternate between horizontal and vertical splits and simply splits in the direction given as its first argument.Parameters for both i and k:First split directionFirst split chiralitygSize ratio between rectangle allocated to current window and rectangle allocated to remaining windows9Factor by which the size ratio is changed in response to  or  messagesThe parameters for l' are the same, except that there is no f parameter.45fghijkl6789:;<=>? fghijkl ijklfgh45fghijkl6789:;<=>?(c) 2008 Brent YorgeyBSD3<byorgey@gmail.com>unstable unportableNone+357G m-Messages which can be sent to a gap modifier.nToggle all gaps.oToggle a single gap.p-Increase a gap by a certain number of pixels.qDecrease a gap.rThe gap state. The first component is the configuration (which gaps are allowed, and their current size), the second is the gaps which are currently active.srA manual gap configuration. Each side of the screen on which a gap is enabled is paired with a size in pixels.t&Add togglable manual gaps to a layout.uPAdd togglable manual gaps to a layout, explicitly specifying the initial states.mnopqr@sABCDEt3The gaps to allow, paired with their initial sizes.The layout to modify.u+The gaps to allow and their initial states.The layout to modify.FGmnopqrsturstumnopq mnopqr@sABCDEtuFG$(c) David Roundy <droundy@darcs.net>BSDnoneunstable unportableNone357@G y(layoutHintsWithPlacement (rx, ry) layout will adapt the sizes of a layout's windows according to their size hints, and position them inside their originally assigned area according to the rx and ryp parameters. (0, 0) places the window at the top left, (1, 0) at the top right, (0.5, 0.5) at the center, etc.zlayoutHintsToCenter layout applies hints, sliding the window to the center of the screen and expanding its neighbors to fill the gaps. Windows are never expanded in a way that increases overlap.layoutHintsToCenterv only makes one pass at resizing the neighbors of hinted windows, so with some layouts (ex. the arrangement with two Mirror Tall stacked vertically), layoutHintsToCenter+ may leave some gaps. Simple layouts like Tall are unaffected.HplaceRectangle (rx, ry) r0 r: will return a new rectangle with the same dimensions as r, but positioned inside of r0/ as specified by the (rx, ry) parameters (see y).I(Leave the opposite edges where they wereJin what direction is the second window from the first that can expand if the first is shrunk, assuming that the root window is fully covered: one direction for a common edge two directions for a common cornerKMTrue whenever two edges touch. not (Set.null $ adjacent x y) ==> touching x yL!starting top left going clockwise{IEvent hook that refreshes the layout whenever a window changes its hints.MBTrue if the window's current size does not satisfy its size hints.vNwOxyzHPQRSITJKULVWXY{MZ[vwxyz{xyzwv{vNwOxyzHPQRSITJKULVWXY{MZ[(c) 2009 Adam VogtBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone+3457@G} send a message to all sublayouts~YGroupMsg take window parameters to determine which group the action should be applied to*free the focused window from its tab stack0separate the focused group into singleton groups+merge the first group into the second group3make one large group, keeping the parameter focusedzused to the window named in the first argument to the second argument's group, this may be replaced by a combination of  and 8the sublayout with the given window will get the message\Groups assumes this invariant: M.keys gs == map W.focus (M.elems gs) (ignoring order) All windows in the workspace are in the Map2The keys are visible windows, the rest are hidden.FThis representation probably simplifies the internals of the modifier.]mmessages are handled when running the layout, not in the handleMessage, I'm not sure that this is necessary^{how many NextLayout messages to send to newly populated layouts. If there is no corresponding index, then don't send any._)The sublayouts and the stacks they manage#The main layout modifier arguments: 5subLayout advanceInnerLayouts innerLayout outerLayout advanceInnerLayoutsWhen a new group at index n? in the outer layout is created (even with one element), the  innerLayoutE is used as the layout within that group after being advanced with advanceInnerLayouts !! n a9 messages. If there is no corresponding element in the advanceInnerLayouts list, then  innerLayout is not given any a messages. innerLayout1The single layout given to be run as a sublayout. outerLayout@The layout that determines the rectangles given to each group.Ex. The second group is ^, the third is Circle, all others are tabbed with: myLayout = addTabs shrinkText def $ subLayout [0,1,2] (Simplest ||| Tall 1 0.2 0.5 ||| Circle) $ Tall 1 0.2 0.5 ||| Full subTabbed is a use of  with 4 to show decorations.defaultSublMapZ is an attempt to create a set of keybindings like the defaults ones but to be used as a submap( for sending messages to the sublayout.merge the window that would be focused by the function when applied to the W.Stack of all windows, with the current group removed. The given window should be focused by a sublayout. Example usage: 2withFocused (sendMessage . mergeDir W.focusDown') pullGroup,  pushGroupw allow you to merge windows or groups inheriting the position of the current window (pull) or the other window (push). pushWindow and  pullWindowa move individual windows between groups. They are less effective at preserving window positions. pullGroup,  pushGroupw allow you to merge windows or groups inheriting the position of the current window (pull) or the other window (push). pushWindow and  pullWindowa move individual windows between groups. They are less effective at preserving window positions. pullGroup,  pushGroupw allow you to merge windows or groups inheriting the position of the current window (pull) or the other window (push). pushWindow and  pullWindowa move individual windows between groups. They are less effective at preserving window positions. pullGroup,  pushGroupw allow you to merge windows or groups inheriting the position of the current window (pull) or the other window (push). pushWindow and  pullWindowa move individual windows between groups. They are less effective at preserving window positions.Apply a function on the stack belonging to the currently focused group. It works for rearranging windows and for changing focus.2Send a message to the currently focused sublayout.`/update Group to follow changes in the workspaceajrearrange the windowset to put the groups of tabs next to eachother, so that the stack of tabs stays put.b[focusWindow'. focus an element of a stack, is Nothing if that element is absent. See also cdrestore the default layout for each group. It needs the X monad to switch the default layout to a specific one (handleMessage NextLayout))|}~\e]^_fg`ahbijkdlmnop|}~~|}|}~\e]^_fg`ahbijkdlmnop(c) 2013 Dmitri IouchtchenkoBSD3-style (see LICENSE)+Dmitri Iouchtchenko <johnnyspoon@gmail.com>unstable unportableNone+q*Workspaces in reverse-chronological order.A  E that keeps track of the order in which workspaces have been viewed.A list of workspace tags in the order they have been viewed, with the most recent first. No duplicates are present, but not all workspaces are guaranteed to appear, and there may be workspaces that no longer exist.r Cons the  onto the s? if it is not already there, or move it to the front if it is.stqrustqruz(c) Joachim Breitner <mail@joachim-breitner.de>, Nelson Elhage <nelhage@mit.edu> (`toggleWS' function)BSD3-style (see LICENSE)+Joachim Breitner <mail@joachim-breitner.de>unstable unportableNone8What type of workspaces should be included in the cycle?cycle through empty workspaces"cycle through non-empty workspaces$cycle through non-visible workspaces.cycle through non-empty non-visible workspacescycle through all workspacescycle through workspaces in the same group, the group name is all characters up to the first separator character or the end of the tag=cycle through workspaces satisfying an arbitrary predicateSwitch to the next workspace.!Switch to the previous workspace..Move the focused window to the next workspace.2Move the focused window to the previous workspace.-Toggle to the workspace displayed previously.AToggle to the previous workspace while excluding some workspaces. M-- Ignore the scratchpad workspace while toggling: ("M-b", toggleWS' ["NSP"])v` a workspace, or if already there, view the previously displayed workspace ala weechat. Change  greedyView to  toggleOrView& in your workspace bindings as in the w faq at  @http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions. For more flexibility see .Allows ignoring listed workspace tags (such as scratchpad's "NSP"), and running other actions such as view, shift, etc. For example: !import qualified XMonad.StackSet as W import XMonad.Actions.CycleWS -- toggleOrView for people who prefer view to greedyView toggleOrView' = toggleOrDoSkip [] W.view -- toggleOrView ignoring scratchpad and named scratchpad workspace toggleOrViewNoSP = toggleOrDoSkip ["NSP"] W.greedyViewList difference (\\b) for workspaces and tags. Removes workspaces matching listed tags from the given workspace list.xRIgnoring the skips, find the best candidate for the last viewed hidden workspace.y4Convert a WSType value to a predicate on workspaces.UView the next workspace in the given direction that satisfies the given condition.uMove the currently focused window to the next workspace in the given direction that satisfies the given condition.|Using the given sort, find the next workspace in the given direction of the given type, and perform the given action on it.Given a function s! to sort workspaces, a direction dir, a predicate p on workspaces, and an integer n,, find the tag of the workspace which is n1 away from the current workspace in direction dirF (wrapping around if necessary), among those workspaces, sorted by s, which satisfy p.4For some useful workspace sorting functions, see XMonad.Util.WorkspaceCompare.IFor ideas of what to do with a workspace tag once obtained, note that  and  are implemented by applying (>>= (windows . greedyView)) and (>>= (windows . shift))$, respectively, to the output of .View next screenView prev screenGet the  dQ places over. Example usage is a variation of the the default screen keybindings: V -- mod-{w,e}, Switch to previous/next Xinerama screen -- mod-shift-{w,e}, Move client to previous/next Xinerama screen -- [((m .|. modm, key), sc >>= screenWorkspace >>= flip whenJust (windows . f)) | (key, sc) <- zip [xK_w, xK_e] [(screenBy (-1)),(screenBy 1)] , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]$Swap current screen with next screen(Swap current screen with previous screen/Move focused window to workspace on next screen/Move focused window to workspace on prev screen&xz{|y}~xz{|y}~(c) Brent Yorgey 2009BSD-style (see LICENSE)<byorgey@gmail.com> experimental unportableNone+ 1Extensible state storage for the workspace order.4Lift a Map function to a function on WSOrderStorage.wUpdate the ordering storage: initialize if it doesn't yet exist; add newly created workspaces at the end as necessary.XA comparison function which orders workspaces according to the stored dynamic ordering.9Sort workspaces according to the stored dynamic ordering.OSwap the current workspace with another workspace in the stored dynamic order..Swap the given workspace with the current one.3Swap the two given workspaces in the dynamic order.View the next workspace of the given type in the given direction, where "next" is determined using the dynamic workspace order.Same as  , but using  greedyView instead of view.Shift the currently focused window to the next workspace of the given type in the given direction, using the dynamic workspace order.wDo something with the nth workspace in the dynamic order. The callback is given the workspace's tag as well as the  of the workspace itself. "(c) Devin Mullins <me@twifkak.com>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNoneKSwaps the currently focused workspace with the given workspace tag, via swapWorkspaces.Say  swapTo Next or  swapTo Prev- to move your current workspace. This is an X ()2 so can be hooked up to your keybindings directly.Takes two workspace tags and an existing XMonad.StackSet and returns a new one with the two corresponding workspaces' tags swapped.!(c) Tomas Janousek <tomi@nomi.cz>BSD3-style (see LICENSE)Tomas Janousek <tomi@nomi.cz> experimental unportableNone+ Workspace names container.+Returns a function that maps workspace tag "t" to "t:name"% for workspaces with a name, and to "t" otherwise.NSets the name of a workspace. Empty string makes the workspace unnamed again.,Sets the name of the current workspace. See .;Prompt for a new name for the current workspace and set it.Modify XMonad.Hooks.DynamicLog;'s pretty-printing format to show workspace names as well.See  . This is the same with names.;Swap with the previous or next workspace of the given type.See  &. This is almost the same with names.!Swap names of the two workspaces.Same behavior than @ excepted it acts on the workspace name provided by this module.    J(c) Hans Philipp Annen <haphi@gmx.net>, Mischa Dieterle <der_m@freenet.de>BSD3-style (see LICENSE)"Hans Philipp Annen <haphi@gmx.net>stable unportableNoneMRotate the windows in the current stack, excluding the first one (master).MRotate the windows in the current stack, excluding the first one (master).<The actual rotation, as a pure function on the window stack.,Rotate all the windows in the current stack.,Rotate all the windows in the current stack.<The actual rotation, as a pure function on the window stack.$(c) Wirt Wolff <wirtwolff@gmail.com>BSD3-style (see LICENSE) Wirt Wolff <wirtwolff@gmail.com>unstable unportableNoneCycle through a finite list of window stacks with repeated presses of a key while a modifier key is held down. For best results use the same mod key + key combination as the one used to invoke the "bring from below" action. You could use cycleStacks' with a different stack permutations function to, for example, cycle from one below to one above to two below, etc. instead of in order. You are responsible for having it generate a finite list, though, or xmonad may hang seeking its length.mGiven a stack element and a stack, shift or insert the element (window) at the currently focused position.!The opposite rotation on a Stack.:Rotate windows through the focused frame, excluding the "next" window. With, e.g. TwoPane, this allows cycling windows through either the master or slave pane, without changing the other frame. When the master is focused, the window below is skipped, when a non-master window is focused, the master is skipped. The focused rotation on a stack."The unfocused rotation on a stack. xA list of modifier keys used when invoking this action. As soon as one of them is released, the final switch is made.OKey used to shift windows from below the current choice into the current frame.Key used to shift windows from above the current choice into the current frame. If it's the same as the first key, it is effectively ignored.=A function to a finite list of permutations of a given stack.'A list of modifier keys used to invoke N. As soon as any is released, we're no longer cycling on the [Stack Window]"Key used to select a "next" stack.&Key used to select a "previous" stack.   ((c) Michal Janeczek <janeczek@gmail.com>BSD3-style (see LICENSE)$Michal Janeczek <janeczek@gmail.com>unstable unportableNoneCycle through most recent workspaces with repeated presses of a key, while a modifier key is held down. The recency of workspaces previewed while browsing to the target workspace is not affected. That way a stack of most recently used workspaces is maintained, similarly to how many window managers handle window switching. For best effects use the same modkey+key combination as the one used to invoke this action.Cycle through a finite list of WindowSets with repeated presses of a key, while a modifier key is held down. For best effects use the same modkey+key combination as the one used to invoke this action.xA list of modifier keys used when invoking this action. As soon as one of them is released, the final switch is made.3Key used to switch to next (less recent) workspace.Key used to switch to previous (more recent) workspace. If it's the same as the nextWorkspace key, it is effectively ignored.=A function used to create a list of WindowSets to choose fromA list of modifier keys used when invoking this action. As soon as one of them is released, the final WindowSet is chosen and the action exits.EKey used to preview next WindowSet from the list of generated optionsKey used to preview previous WindowSet from the list of generated options. If it's the same as nextOption key, it is effectively ignored. Public domain<gwern0@gmail.com>unstable unportableNoneIf windows that satisfy the query exist, apply the supplied function to them, otherwise run the action given as second parameter.jThe same as ifWindows, but applies a ManageHook to the first match instead and discards the other matchesaction is an executable to be run via  (of XMonad.Util.Run) if the Window cannot be found. Presumably this executable is the same one that you were looking for. Note that this does not go through the shell. If you wish to run an arbitrary IO action (such as spawnV, which will run its String argument through the shell), then you will want to use  directly. See ?. If the Window can't be found, quietly give up and do nothing.{ queries all Windows based on a boolean provided by the user. Currently, there are 3 such useful booleans defined in XMonad.ManageHook: , , . Each one tests based pretty much as you would think. ManageHook also defines several operators, the most useful of which is (=?). So a useful test might be finding a Windowo whose class is Firefox. Firefox 3 declares the class "Firefox", so you'd want to pass in a boolean like (className =? "Firefox").If the boolean returns TrueZ on one or more windows, then XMonad will quickly make visible the first result. If no Window@ meets the criteria, then the first argument comes into play.qThe first argument is an arbitrary IO function which will be executed if the tests fail. This is what enables  to use : it simply runs the desired program if it isn't found. But you don't have to do that. Maybe you want to do nothing if the search fails (the definition of ), or maybe you want to write to a log file, or call some prompt function, or something crazy like that. This hook gives you that flexibility. You can do some cute things with this hook. Suppose you want to do the same thing for Mutt which you just did for Firefox - but Mutt runs inside a terminal window? No problem: you search for a terminal window calling itself "mutt", and if there isn't you run a terminal with a command to run Mutt! Here's an example (borrowing  runInTerm from XMonad.Util.Run): O, ((modm, xK_m), raiseMaybe (runInTerm "-title mutt" "mutt") (title =? "mutt"))%A manage hook that raises the window.See  and .. Version that allows cycling through matches.See  and .. Version that allows cycling through matches.See .  is an alternative version that allows cycling through the matching windows. If the focused window matches the query the next matching window is raised. If no matches are found the function f is executed.Given a function which gets us a String, we try to raise a window with that classname, or we then interpret that String as a executable name. and  grab $BROWSER and $EDITOR respectively and they either take you to the specified program's window, or they try to run it. This is most useful if your variables are simple and look like "firefox" or "emacs".  and  grab $BROWSER and $EDITOR respectively and they either take you to the specified program's window, or they try to run it. This is most useful if your variables are simple and look like "firefox" or "emacs". If the window is found the window is focused and the third argument is called otherwise, the first argument is called See  for an example. If a window matching the second argument is found, the window is focused and the third argument is called; otherwise, the first argument is called. lif the window is found the window is focused and set to master otherwise, the first argument is called. IraiseMaster (runInTerm "-title ghci" "zsh -c 'ghci'") (title =? "ghci") ^If the window is found the window is focused and set to master otherwise, action is run. 4runOrRaiseMaster "firefox" (className =? "Firefox"))! C(C) 2008 Justin BognerBSD3mail@justinbogner.comunstable unportableNone g(c) David Roundy <droundy@darcs.net>, Ivan Veselov <veselov@gmail.com>, Lanny Ripple <lan3ny@gmail.com>BSD3-style (see LICENSE)???unstable unportableNoneG 'Copy the focused window to a workspace.*Copy the focused window to all workspaces.(Copy an arbitrary window to a workspace.runOrCopy will run the provided shell command unless it can find a specified window in which case it will copy the window to the current workspace. Similar to (i.e., stolen from) XMonad.Actions.WindowGo.=Copy a window if it exists, run the first argument otherwise.Remove the focused window from this workspace. If it's present in no other workspace, then kill it instead. 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).Kill all other copies of focused window (if they're present). 'All other' means here 'copies which are not on the current workspace'.DA list of hidden workspaces containing a copy of the focused window.8Get a list of tuples (tag, [Window]) for each workspace.8Get tags with copies of the focused window (if present.)  None(c) Dougal StantonBSD3-style (see LICENSE)<dougal@dougalstanton.net>stable unportableNone@Resize (floating) window with optional aspect ratio constraints..(c) Spencer Janssen <spencerjanssen@gmail.com>BSD-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNoneCStarts dmenu on the current screen. Requires this patch to dmenu: 5http://www.jcreigh.com/dmenu/dmenu-3.2-xinerama.patch*Run dmenu to select an option from a list.like # but also takes the command to run.Like 1 but also takes a list of command line arguments.Like # but also takes the command to run.Like 1 but also takes a list of command line arguments.9Run dmenu to select an entry from a map based on the key.Devin Mullins <me@twifkak.com>BSD-style (see LICENSE)Devin Mullins <me@twifkak.com>stable unportableNone Default menu commandjPops open a dmenu with window titles. Choose one, and you will be taken to the corresponding workspace.Pops open a dmenu with window titles. Choose one, and you will be taken to the corresponding workspace. This version takes a list of arguments to pass to dmenu.Pops open an application with window titles given over stdin. Choose one, and you will be taken to the corresponding workspace.Pops open an application with window titles given over stdin. Choose one, and you will be taken to the corresponding workspace. This version takes a list of arguments to pass to dmenu.Pops open a dmenu with window titles. Choose one, and it will be dragged, kicking and screaming, into your current workspace.Pops open a dmenu with window titles. Choose one, and it will be dragged, kicking and screaming, into your current workspace. This version takes a list of arguments to pass to dmenu.Pops open an application with window titles given over stdin. Choose one, and it will be dragged, kicking and screaming, into your current workspace.Pops open an application with window titles given over stdin. Choose one, and it will be dragged, kicking and screaming, into your current workspace. This version allows arguments to the chooser to be specified.7Brings the specified window into the current workspace.VCalls dmenuMap to grab the appropriate Window, and hands it off to action if found.#A map from window names to Windows.Returns the window name as will be listed in dmenu. Lowercased, for your convenience (since dmenu is case-sensitive). Tagged with the workspace ID, to guarantee uniqueness, and to let the user know where he's going.    )Clemens Fruhwirth <clemens@endorphin.org>BSD-style (see LICENSE))Clemens Fruhwirth <clemens@endorphin.org>unstable unportableNone35CNuA function taking the search string and a list of elements, and returning a potentially rearranged list of elements.That is ! if you are selecting a  , or  if you are selecting a  . The catch-all instance HasColorizer a uses the  and  colors.The * instance gives a basic configuration for #/, with the colorizer chosen based on the type.If you want to replace the   field, use & instead of # to avoid ambiguous type variables.We enforce an ordering such that we will always get the same result. If the elements position changes from call to call of gridselect, then the shown positions will also change when you search for the same string. This is especially the case when using gridselect for showing and switching between workspaces, as workspaces are usually shown in order of last visited. The chosen ordering is "how deep in the haystack the needle is" (number of characters from the beginning of the string and the needle).Embeds a key handler into the X event handler that dispatches key events to the key handler, while non-key event go to the standard handler.When the map contains (KeySym,KeyMask) tuple for the given event, the associated action in the map associated shadows the default key handler8Closes gridselect returning the element under the cursor'Closes gridselect returning no element.)Sets the absolute position of the cursor.)Moves the cursor by the offsets specified9Apply a transformation function the current search stringBy default gridselect used the defaultNavigation action, which binds left,right,up,down and vi-style h,l,j,k navigation. Return quits gridselect, returning the selected element, while Escape cancels the selection. Slash enters the substring search mode. In substring search mode, every string-associated keystroke is added to a search string, which narrows down the object selection. Substring search mode comes back to regular navigation via Return, while Escape cancels the search. If you want that navigation style, add  as  to your  object. This is done by & automatically.This navigation style combines navigation and search into one mode at the cost of losing vi style navigation. With this style, there is no substring search submode, but every typed character is added to the substring search.{Navigation submode used for substring search. It returns to the first argument navigation style when the user hits Return. Default colorizer for Strings!.Colorize a window depending on it's className."TA colorizer that picks a color inside a range, and depending on the window's class.XCreates a mix of two colors according to a ratio (1 -> first color, 0 -> second color).Generates a Double from a string, trying to achieve a random distribution. We create a random seed from the sum of all characters in the string, and use it to generate a ratio between 0 and 1#Brings up a 2D grid of elements in the center of the screen, and one can select an element with cursors keys. The selected element is returned.$Like  gridSelect: but with the current windows and their titles as elements%Brings up a 2D grid of windows in the center of the screen, and one can select a window with cursors keys. The selected window is then passed to a callback function.&5Builds a default gs config from a colorizer function.'0Brings selected window to the current workspace.(@Switches to selected window's workspace and focuses that window.)0Select an application to spawn from a given list**Select an action and run it in the X monad+CSelect a workspace and view it using the given function (normally w or v)HAnother option is to shift the current window to the selected workspace: 9gridselectWorkspace (\ws -> W.greedyView ws . W.shift ws),5Select a workspace and run an arbitrary action on it.-1A rearranger that leaves the elements unmodified..A generator for rearrangers that append a single element based on the search string, if doing so would not be redundant (empty string or value already present).U      !"Beginning of the color rangeEnd of the color rangeBackground of the active windowInactive text colorActive text color#$%&'()*+,-..      !"#$%&'()*+,-..     &#$%'(+,)*! "-.=        !"#$%&'()*+,-.(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone////(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone0+A function intended to be plugged into the  of a decoration. It will intercept clicks on the buttons of the decoration and invoke the associated action. To actually see the buttons, you will need to use a theme that includes them. See 1 below.1"Intended to be used together with 0 . See above.2+A function intended to be plugged into the  of a decoration. It will check if the window has been dragged onto another screen and shift it there. The PositionStore is also updated accordingly, as this is designed to be used together with  XMonad.Layout.PositionStoreFloat.012012012012(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone35734344334B(c) Jan Vornberger 2009 Alejandro Serrano 2010BSD3-style (see LICENSE)trupill@gmail.comunstable not portableNone3576+A function intended to be plugged into the  of a decoration. It will intercept clicks on the buttons of the decoration and invoke the associated action. To actually see the buttons, you will need to use a theme that includes them. See 7 below.5678567887655678B(c) Jan Vornberger 2009 Alejandro Serrano 2010BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone357 9:;<=9:;<=;<=:9 9:;<=WDevin Mullins <me@twifkak.com> Andrea Rossato <andrea.rossato@unibz.it>BSD-style (see LICENSE)XDevin Mullins <me@twifkak.com> Andrea Rossato <andrea.rossato@unibz.it>unstable unportableNoneiPops open a prompt with window titles. Choose one, and you will be taken to the corresponding workspace.ABrings a copy of the specified window into the current workspace. >?@A>?@A?@A>>?@A(c) David Glasser 2007BSD3glasser@mit.edustableportableNoneB Create a  from String,s to xmonad actions from a list of pairs.CDGenerate a list of commands to switch to/send windows to workspaces.D:Generate a list of commands dealing with multiple screens.E$A nice pre-defined list of commands.FqGiven a list of command/action pairs, prompt the user to choose a command and return the corresponding action.G!Given the name of a command from EY, return the corresponding action (or the null action if the command is not found).BCDEFGBCDEFGBFGCDEBCDEFG=(c) Peter Olson 2013 and Andrea Rossato and David Roundy 2007BSD-style (see xmonad/LICENSE)polson2@hawk.iit.eduunstable unportableNoneHExecutes a command of the list when receiving its index via a special ClientMessageEvent (indexing starts at 1). Sending index 0 will ask xmonad to print the list of command numbers in stderr (so that you can read it in ~/.xsession-errors). Uses 'XMonad.Actions.Commands#defaultCommands as the default. ;main = xmonad def { handleEventHook = serverModeEventHook } exmonadctl 0 # tells xmonad to output command list xmonadctl 1 # tells xmonad to switch to workspace 1ITserverModeEventHook' additionally takes an action to generate the list of commands.J_Executes a command of the list when receiving its name via a special ClientMessageEvent. Uses 'XMonad.Actions.Commands#defaultCommands as the default. >main = xmonad def { handleEventHook = serverModeEventHookCmd } 5xmonadctl run # Tells xmonad to generate a run promptK=Additionally takes an action to generate the list of commandsLListens for an atom, then executes a callback function whenever it hears it. A trivial example that prints everything supplied to it on xmonad's standard out: [main = xmonad def { handleEventHook = serverModeEventHookF "XMONAD_PRINT" (io . putStrLn) } 'xmonadctl -a XMONAD_PRINT "hello world"HIJKLHIJKLHIJKLHIJKL(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNoneO+An xmonad prompt with a custom command listMNOMNONOMMNO$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone+357GQQA message to jump to a particular layout , specified by its description string..A reimplementation of the combinator of the same name from the xmonad core, providing layout choice, and the ability to support P messages.:PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PQRST6PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Roman CheplyakaBSD3-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNoneoIf the current layout is in the list, cycle to the next layout. Otherwise, apply the first layout from list.(c) Andrea Rossato 2007BSD3-style (see LICENSE)andrea.rossato@unibz.itstableportableNone%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNone(c) Spencer Janssen 2007BSD3-style (see LICENSE)NoneGAThe xmonad key bindings. Add, modify or remove key bindings here.F(The comment formatting character is used when generating the manpage) Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone7>ILN4Configuration data for the "tiled tab groups" layout Compare two Group(s by comparing the ids of their layouts.(Increase the width of the focused column(Decrease the width of the focused column%Reset the width of the focused columneToggle whether the currently focused column should take up all available space whenever it has focus)Increase the heigth of the focused window)Decrease the height of the focused window&Reset the height of the focused windowbToggle whether the currently focused window should take up the whole column whenever it has focus+Increase the number of master groups by one+Decrease the number of master groups by oneShrink the master areaExpand the master area,Rotate the available outer layout algorithms%418"81  Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedstable unportableNone7IN A layout inspired by wmii'Increase the width of the focused group&Decrease the size of the focused group2Reset the size of the focused group to the defaultVToggle whether the currently focused group should be maximized whenever it has focus.(Rotate the layouts in the focused group.3Switch the focused group to the "maximized" layout.0Switch the focused group to the "tabbed" layout.0Switch the focused group to the "column" layout. 18 81 (c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone4        +(c) 2014 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNoneFSchedule a task to take place after the current dragging is completed.Take an action if the current dragging can be considered a click, supposing the drag just started before this function is called. A drag is considered a click if it is completed within 300 ms.\Take an action if the current dragging is completed within a certain time (in milliseconds.)The task to schedule.<The action to take if the dragging turned out to be a click.KMaximum time of dragging for it to be considered a click (in milliseconds.)<The action to take if the dragging turned out to be a click.@The action to take if the dragging turned out to not be a click.+(c) 2009 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNoneResize the window by each edge independently to snap against the closest part of other windows or the edge of the screen. Use the location of the mouse over the window to decide which edges to snap. In corners, the two adjoining edges will be snapped, along the middle of an edge only that edge will be snapped. In the center of the window all edges will snap. Intended to be used together with XMonad.Actions.FlexibleResize or !XMonad.Actions.FlexibleManipulate.yResize the window by each edge independently to snap against the closest part of other windows or the edge of the screen.zMove a window by both axises in any direction to snap against the closest part of other windows or the edge of the screen.iMove a window in the specified direction until it snaps against another window or the edge of the screen.dGrow the specified edge of a window until it snaps against another window or the edge of the screen.fShrink the specified edge of a window until it snaps against another window or the edge of the screen. 4How big the middle snap area of each axis should be.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.EThe maximum distance to snap. Use Nothing to not impose any boundary.The window to move and resize.The edges to snap.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.EThe maximum distance to snap. Use Nothing to not impose any boundary.The window to move and resize.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.EThe maximum distance to snap. Use Nothing to not impose any boundary.The window to move.%What direction to move the window in.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.The window to move.  What edge of the window to grow.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.The window to grow."What edge of the window to shrink.rThe distance in the orthogonal axis to look for windows to snap against. Use Nothing to snap against every window.The window to shrink.  (C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstableportableSafe(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstableportableSafe'(C) 2007 Don Stewart and Andrea RossatoBSD3andrea.rossato@unibz.itunstableportableSafe(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstableportableSafe !"#$%&$%'()*++,-. / 0 1 2 3 4 5 6 7 8 9 : ; 7<<=>?@ABCDEFGHHIIJKLMNOPQRSTUVWXXYZ[[\]]^_`abcdeffghijklmnopqrstuvwxxyz{||}~    !!!!!""##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%&&&&'((((((((()))))))))* * * * * ***********++++++++ +!+"+#+$+%+&+'+(,),),*,*,+,,,-,.,-/-0-1.2 3 4/5/60718191:1;1<1=1>1?2@3A4B4B5C5D5E5F6G6H6I6J66K6L6M6M6N6O6P6Q6R7S7S7]7T7U8V8V99999: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?{?|@}@~@~@@@@@@ @ @@@AAAAABBCCCCCCCCCCDDDDEEEEEEEEEEEEFFGGGGGGGHHHHHHHHIIIIIJJJJJJJJKKKKLLLLLLMMMMMNNNNOOOOOOPQQQRRRRRSSSSSSSSSTTUUVVVVVVVVVVVVVVVVVVWWWWWWWDWW W W W W WWWWWWWWWWWWWWWWWWW W!W"W#W$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5Y6Y7Y8Y9Y:Y;Y<Y=Y=Y>Y?Y@YAYBYYCYDZEZFZGZH[I[J[K\L\L\M\N\O\P]Q]R]S]T]U^V_W_X_Y_Z_[_\_]`^`_a`babbbcbdbebfb bgbhbicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~ccccccccccccccccccccc^cccddddddddeeee e eeeeeeeeeeeeeffffffffffffgggggggg>ggggggghhhhhijjjjkkkkkkkkkkkkkkkkkkkkklllllllmmmmmmmmmmmmnn     oXooooopppppppppp p!q"q#q$q%q&q'q(q)q*q+q,q-q.q/q0q1q2q3q4q5q6q7r8s9s:s;s<s=s>t?t@tAtBtCtDt]tEtFtGtHtItJuKuNuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZv[\]^_`abcdewwfwgwhwiwjwkwlwmwnxoxpxqxrxsytytyuyuyvywyxzyzzz{z|z}z~zz{{||}}}}}~~~&'>p      !"##$%&'()*+,-.//01234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrsstuvwxyz{|}~3      !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>A?@eABCDEFGHIJKLMNOPQRSTUVWXYZ[\X]^_`abcdefghijklmnopqrstuvwxyz{|}~DE       !"#$%&'()*+,-./0123456789:;<=>?@3A4  BCDEF G HIJKLMNOPQRSTUVWXYZ[\]^_`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 O= P Q R S T U V W X Y Z [ \( ] ^( ] _ M ` a b c dQ e f gV h i j k l m n o p q r s t u vZ\ w x y z z { { | } ~          d      J     h              o                }                                      ( ]     ! ! ! ! ! ! ! ! ! " " " " " # # ## #              % % % %  % % % % % % % % % % %% % % % %% % % % % % % % % % & &,& ( ( ( ) () ()'  !()()* * "* #* $, %, , , , , , , , , &, '- (- )0 *0 +0 ,0 -0 .0 /00 000 10 20 3 C 41 52 62 73 83 93 :3 ;3 <3 = > ?3 @3 73 A3 B3 C3 D3 E F G H3 I3 I3 J3 K3 L3 M3 N3 O3 O3 P3 Q3 R3 S3 T3 U3 V3 W3 X3 Y3 Z3 [3 \3 ]3 ^3 _3 `3 a33 b3 c3 d3 e3 f3 g3 h3 i3 j3 k3 l3 m3 n3 o3 p3 q3 r3 s3 t3 u3 v3 w3 x3 y3 z3 {3 |3 }3 ~3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5C5 5 6 6 6!6 7T7 7 8 8 9                                                                             = () () () () () >        ?v?x? ? ? ? ? @ @ @ @ @}@ @ @ @ @ @ @ @ AA A B B B B B B !B rBB "C #C $C %C &C &C 'C (C )C *C +C ,C -C .C /C 0C 1CC 2C 3C 4C 5C 6C C C 7C 8C 9D :D ;D <D =DDDD >D ?EE @G AGG BG CG DH EH EH FH GH HH IH JH KI LI MII NI OJ PJ QJ RJ SJ TJ UJ UJ VJ WJ XJ YJJ ZJJ [J \J ]J ^J _J `K aK bK cK dK dKK eK fL gM hM iM jMM kM lNNN mN nN oN pN qO rOO sO tO uO vO wRRR xR yS zS {(() |V }V ~V V V V V V V V V V V (  C  C ( WX%X&X'X X X X X Y Y Y ()   \ \ \ \ \ \ ()z] ] ] ] ] ] _ _ _ b b b b b b b b b b b b b b b b  C ()   c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c  C        C  C  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&FGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[\]\^\_\`\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\{\{\|\}\~\\\\\s      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~C                                                                                                              ! " # $ % & '() * + , - . / 0 C1 C2 C3 C4 C  C5 C6 C7 C8 C9 C: C; C< C= C> ? @ A B C D E F G H"#I FJK FJL$MN$MO$MP$MQ$MR$%$%$%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({(|(}(~((((((((((((((((((((((( ] ( ]( ]( ] a( ]( ] `( ] M( ]( ] ( ]( ]( ]( ]( ]( ]L( ]L( ]( ]( ]( ]( ]( ]()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() ()()()() ()()()()()()()()()'()()()()()()()()()()()()()()()()()eeeeeeeeeeeeffgggghj jjjkllllmmmmmmmmmmn((     oooppqqqq q!q"q#q$q%q&q'q(q)q*q+q,r-r.r/s9ss0t1t2t3t4t]t5t6t7t8t9t:t;t<t=u>u?u@uAuBuCuDuEuFuGuHuIuJuuKuLuMuNuOuPuQuRu Mu `u auSuTuUuVuWuXuYvZ[\]^_`wawbwcwdwewfwgwhwiwwjwkwlwmwnwowpwqwrwswtwuwvw wwwxwywzw{w Sww|w}w~wxxxrxxx`xxxxxyyvyyyyyyzzzz{{{}}}}}}0} }/}~~ MO TUVWUVW      !""#$%&'()*()+,-./012345566789:;<=>?@;ABCDEFGHIIJKLMNOPQRSTUvVWXYZ[\]^_`abcdefghijklmno pqrstuvwxyzN{|}~|+)QY Mmoq      !""#$%&'()*+,-./012345678O9:s;<= O>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@abcdefXg>hijklm_noapbqrstuvwxyz{v|}~~   L 3 4pq! 5U(      (( !"#$%&' ()*+,-,./0123456789:;()y()x<=>?@ABCDEFGHIJKfLMNOPQRSTUVWXYZ[\]^_`abcdce`abfghijklmnopqrstuvwxyz{|}~xmona_EwPZS380ziwJoRAgEu4Yl5XMonad.Util.PasteXMonad.Util.DzenXMonad.Util.RunXMonad.Actions.WorkspaceCursorsXMonad.Actions.SearchXMonad.Util.LoggersXMonad.Layout.ShowWNameXMonad.Util.WindowStateXMonad.Hooks.ICCCMFocusXMonad.Util.StringPropXMonad.Util.ReplaceXMonad.Util.CustomKeysXMonad.Layout.ThreeColumnsXMonad.Layout.StackTileXMonad.Layout.SpiralXMonad.Layout.RoledexXMonad.Layout.ResizableTileXMonad.Layout.PerWorkspaceXMonad.Layout.PerScreenXMonad.Layout.OneBigXMonad.Layout.MultiToggleXMonad.Layout.MultiColumnsXMonad.Layout.MosaicAltXMonad.Layout.MosaicXMonad.Layout.LayoutBuilderXMonad.Layout.IfMaxXMonad.Layout.HintedGridXMonad.Layout.SimplestXMonad.Layout.GridVariantsXMonad.Layout.FixedColumnXMonad.Layout.DishesXMonad.Util.InvisibleXMonad.Layout.CrossXMonad.Layout.ColumnXMonad.Layout.CircleXMonad.Util.StackXMonad.Layout.GroupsXMonad.Hooks.XPropManageXMonad.Hooks.ScriptXMonad.Hooks.InsertPositionXMonad.Hooks.FadeInactiveXMonad.Hooks.FadeWindowsXMonad.Util.WindowPropertiesXMonad.Layout.LayoutBuilderPXMonad.Util.RemoteWindowsXMonad.Hooks.SetWMNameXMonad.Hooks.DynamicPropertyXMonad.Util.DebugWindowXMonad.Hooks.DebugStackXMonad.Hooks.DebugKeyEventsXMonad.Hooks.DebugEventsXMonad.Layout.TwoPaneXMonad.Layout.LayoutScreensXMonad.Layout.HintedTileXMonad.Layout.ToggleLayoutsXMonad.Layout.SquareXMonad.Layout.GridXMonad.Util.CursorXMonad.Config.BepoXMonad.Config.AzertyXMonad.Layout.AccordionXMonad.Layout.LayoutModifierXMonad.Layout.NoBordersXMonad.Layout.BoringWindows XMonad.Layout.DraggingVisualizerXMonad.Layout.AutoMasterXMonad.Layout.AvoidFloatsXMonad.Layout.CenteredMasterXMonad.Layout.RenamedXMonad.Layout.NamedXMonad.Layout.MessageControlXMonad.Layout.HiddenXMonad.Layout.IMXMonad.Layout.LimitWindowsXMonad.Layout.Master#XMonad.Layout.MultiToggle.InstancesXMonad.Layout.OnHostXMonad.Layout.TrackFloatingXMonad.Layout.MinimizeXMonad.Hooks.MinimizeXMonad.Hooks.RestoreMinimizedXMonad.Layout.MaximizeXMonad.Actions.WarpXMonad.Actions.UpdateFocusXMonad.Actions.SubmapXMonad.Util.NamedActionsXMonad.Hooks.ManageHelpersXMonad.Layout.FullscreenXMonad.Layout.MonitorXMonad.Actions.WithAllXMonad.Util.TimerXMonad.Layout.StoppableXMonad.Actions.RandomBackgroundXMonad.Actions.PromoteXMonad.Actions.PhysicalScreensXMonad.Actions.PerWorkspaceKeysXMonad.Actions.NoBordersXMonad.Util.EZConfigXMonad.Config.PrimeXMonad.Actions.MessageFeedbackXMonad.Layout.Groups.HelpersXMonad.Actions.OnScreenXMonad.Actions.PlaneXMonad.Util.XSelectionXMonad.Actions.SimpleDateXMonad.Util.NamedWindowsXMonad.Util.FontXMonad.Util.ImageXMonad.Layout.SpacingXMonad.Actions.FocusNthXMonad.Actions.FloatKeysXMonad.Util.XUtilsXMonad.Layout.WindowArrangerXMonad.Actions.UpdatePointerXMonad.Layout.MagicFocusXMonad.Layout.Magnifier XMonad.Layout.MouseResizableTileXMonad.Hooks.WorkspaceByPosXMonad.Hooks.PlaceXMonad.Layout.DragPaneXMonad.Layout.ReflectXMonad.Layout.DrawerXMonad.Layout.SimplestFloatXMonad.Actions.FlexibleResize!XMonad.Actions.FlexibleManipulate!XMonad.Actions.FindEmptyWorkspaceXMonad.Util.ExtensibleStateXMonad.Actions.GroupNavigationXMonad.Actions.KeyRemapXMonad.Actions.ShowTextXMonad.Hooks.UrgencyHookXMonad.Layout.DecorationXMonad.Actions.MouseResizeXMonad.Util.ThemesXMonad.Layout.BorderResizeXMonad.Layout.DwmStyleXMonad.Layout.SimpleDecorationXMonad.Layout.SimpleFloatXMonad.Layout.ZoomRow XMonad.Layout.NoFrillsDecorationXMonad.Layout.ResizeScreenXMonad.Actions.Workscreen"XMonad.Hooks.CurrentWorkspaceOnTopXMonad.Util.SpawnOnceXMonad.Hooks.DynamicHooksXMonad.Hooks.ToggleHookXMonad.Hooks.FloatNextXMonad.Hooks.ManageDebugXMonad.Util.PositionStore XMonad.Layout.PositionStoreFloatXMonad.Hooks.ScreenCornersXMonad.Hooks.WallpaperSetterXMonad.Util.SpawnNamedPipeXMonad.Actions.DwmPromoteXMonad.Actions.DeManageXMonad.Util.WorkspaceCompareXMonad.Hooks.EwmhDesktopsXMonad.Util.Types XMonad.PromptXMonad.Prompt.Workspace XMonad.Actions.DynamicWorkspaces%XMonad.Actions.DynamicWorkspaceGroupsXMonad.Prompt.DirectoryXMonad.Actions.DynamicProjectsXMonad.Actions.LauncherXMonad.Prompt.ShellXMonad.Actions.SpawnOnXMonad.Actions.TagWindowsXMonad.Prompt.SshXMonad.Prompt.ThemeXMonad.Layout.WorkspaceDirXMonad.Layout.TabBarDecorationXMonad.Layout.DecorationMadnessXMonad.Prompt.AppendFileXMonad.Prompt.AppLauncherXMonad.Prompt.ConfirmPromptXMonad.Prompt.DirExecXMonad.Prompt.InputXMonad.Prompt.EmailXMonad.Prompt.ManXMonad.Prompt.PassXMonad.Hooks.ManageDocksXMonad.Hooks.DynamicLog XMonad.Layout.IndependentScreensXMonad.Actions.LinkWorkspacesXMonad.Actions.TopicSpaceXMonad.Hooks.DynamicBarsXMonad.Util.NamedScratchpadXMonad.Util.ScratchpadXMonad.Hooks.PositionStoreHooksXMonad.Config.DesktopXMonad.Config.GnomeXMonad.Config.KdeXMonad.Config.MateXMonad.Config.XfceXMonad.Config.DmwitXMonad.Actions.MouseGesturesXMonad.Actions.Navigation2DXMonad.Actions.WindowNavigationXMonad.Layout.TabbedXMonad.Layout.WindowNavigationXMonad.Layout.ComboXMonad.Layout.ComboP"XMonad.Layout.BinarySpacePartitionXMonad.Layout.DwindleXMonad.Layout.GapsXMonad.Layout.LayoutHintsXMonad.Layout.SubLayoutsXMonad.Hooks.WorkspaceHistoryXMonad.Actions.CycleWS$XMonad.Actions.DynamicWorkspaceOrderXMonad.Actions.SwapWorkspacesXMonad.Actions.WorkspaceNamesXMonad.Actions.RotSlavesXMonad.Actions.CycleWindowsXMonad.Actions.CycleRecentWSXMonad.Actions.WindowGoXMonad.Prompt.RunOrRaiseXMonad.Actions.CopyWindowXMonad.Config.Sjanssen XMonad.Actions.ConstrainedResizeXMonad.Util.DmenuXMonad.Actions.WindowBringerXMonad.Actions.GridSelectXMonad.Actions.WindowMenuXMonad.Layout.DecorationAddonsXMonad.Layout.ButtonDecoration#XMonad.Layout.ImageButtonDecoration&XMonad.Layout.WindowSwitcherDecorationXMonad.Prompt.WindowXMonad.Actions.CommandsXMonad.Hooks.ServerModeXMonad.Prompt.XMonadXMonad.Layout.LayoutCombinators#XMonad.Actions.CycleSelectedLayoutsXMonad.Config.ArossatoXMonad.Prompt.LayoutXMonad.Config.DroundyXMonad.Layout.Groups.ExamplesXMonad.Layout.Groups.WmiiXMonad.Actions.BluetileCommandsXMonad.Config.BluetileXMonad.Actions.AfterDragXMonad.Actions.FloatSnap XMonad.ConfigdefXMonad.Layout.Layout Accordion Data.ListelemData.MapMapXMonad.Actions.SinkAllmkKeyMapXMonad.Operations sendMessage XMonad.UtilEZConfigpprWindowSetXineramaInput System.PosixputEnvRunXMonad.StackSetfocusUp focusDownmkKeymapswapToswapWithCurrentworkspacePromptXMonad.Doc.DevelopingXMonad.Doc.ExtendingXMonad.Doc.Configuring XMonad.DocX11_95VgzoSWlB182wdRadPHRwGraphics.X11.Types noModMaskbase Control.Monad>=>GHC.IO.Handle.Text hPutStrLnhPutStr Data.FoldabletoList Data.OldList isPrefixOf Data.Functor<$>datad_CgDdtafiXY68XlqDb5IqXwData.Default.Classmtl_KMpng31YRYc5JfMWFZ3FCUControl.Monad.State.Classputgetxmona_7x3MSrQCgrOFrsAUHfFOb7 XMonad.Coreatom_WM_TAKE_FOCUS StateQuerygetQuery runStateQuery catchQuery StringProp setStringProp getStringPropgetStringListPropsetStringListPropreplace customKeyscustomKeysFromThreeCol ThreeColMidthreeColNMaster threeColDelta threeColFrac StackTile SpiralWithDir DirectionEastSouthWestNorthRotationCWCCWspiral spiralWithDirRoledex ResizableTall_nmaster_delta_frac_slaves MirrorResize MirrorShrink MirrorExpand PerWorkspace onWorkspace onWorkspaces modWorkspace modWorkspaces PerScreenifWiderOneBigHListHConsEOT MultiToggleToggle Transformer transformmkToggle mkToggle1??singleMultiColmultiCol MosaicAltParamsParamHandleWindowAltshrinkWindowAltexpandWindowAlt tallWindowAlt wideWindowAltresetAltMosaicAspectTallerWiderResetSlopeModmosaic changeMaster changeFocusedSubBox SubMeasureAbsRel IncLayoutNLayoutNlayoutNlayoutR layoutAllabsBoxrelBoxIfMaxifMaxGrid GridRatio defaultRatioarrangeSimplestTallGridChangeMasterGridGeom IncMasterRows IncMasterCols SetMasterRows SetMasterColsSetMasterFraction OrientationTBLR SplitGridChangeGridGeom SetGridAspectChangeGridAspect FixedColumnDishes InvisibleI whenIJust fromIMaybeCross crossPropcrossInc simpleCrossColumnCircleZipperemptyZ singletonZ fromIndextoIndexfromTagstoTags insertUpZ insertDownZswapUpZ swapDownZ swapMasterZfocusUpZ focusDownZ focusMasterZ getFocusZgetIZsortZsortByZmapZmapZ_mapZMmapZM_ onFocusedZ onFocusedZMonIndexZ onIndexZMfilterZfilterZ_deleteFocusedZ deleteIndexZfoldrZfoldlZfoldrZ_foldlZ_elemZgetImapEmapE_mapEMmapEM_fromEtagBy ModifySpec GroupsMessage ToEnclosingToGroup ToFocusedToAllRefocusModifyGroupsGroupGgLayoutgZipperWithIDgroupsameIDonLayoutonZipperswapUpswapDown swapMaster swapGroupUp swapGroupDownswapGroupMaster focusMaster focusGroupUpfocusGroupDownfocusGroupMastermoveToNewGroupUpmoveToNewGroupDown moveToGroupUpmoveToGroupDown splitGroup XPropMatchpmXpmPxPropManageHookexecScriptHookFocusNewerOlderPositionMasterEndAboveBelowinsertPosition setOpacityfadeOutfadeInfadeIffadeInactiveLogHookfadeInactiveCurrentWSLogHook isUnfocusedisUnfocusedOnCurrentWSfadeOutLogHookFadeHookOpacityopaque transparent transparencyopacityfadeTo translucencefadeBy invisiblesoliddoS idFadeHook isFloatingfadeWindowsLogHookfadeWindowsEventHookPropertyTitle ClassNameResourceRoleMachineAndOrNotConst hasPropertyfocusedHasPropertyallWithPropertypropertyToQuery getProp32 getProp32sLayoutPProxy Predicate alwaysTruecheckPredicatelayoutP isLocalWindow manageRemote manageRemoteG setWMName takeFocusX takeTopFocusdynamicPropertyChange dynamicTitle debugWindow debugStackdebugStackFulldebugStackLogHookdebugStackFullLogHookdebugStackEventHookdebugStackFullEventHookdebugStackStringdebugStackFullStringdebugKeyEventsdebugEventsHookTwoPane FixedLayout layoutScreenslayoutSplitScreen fixedLayout AlignmentTopLeftCenter BottomRightWideTall HintedTilenmasterdeltafrac alignment orientation ToggleLayout ToggleLayouts toggleLayoutsSquaresetDefaultCursor bepoConfigbepoKeys azertyConfig azertyKeysModifiedLayoutLayoutModifier modifyLayoutmodifyLayoutWithUpdate handleMesshandleMessOrMaybeModifyItpureMess redoLayout pureModifierhookunhookmodifierDescriptionmodifyDescriptionWithUnion Difference Intersection AmbiguityCombine OnlyFloatNever EmptyScreenOtherIndicatedScreen SetsAmbiguoushiddensConfigurableBorder SmartBorder WithBorder noBorders withBorder smartBorders lessBorders BoringWindows UpdateBoring BoringMessageReplaceMerge markBoring clearBoring boringWindows boringAutoDraggingVisualizerMsgDraggingWindowDraggingStoppedDraggingVisualizerdraggingVisualizer AutoMaster autoMasterAvoidFloatItemMsgAvoidFloatAddItemAvoidFloatRemoveItemAvoidFloatToggleItem AvoidFloatMsgAvoidFloatToggle AvoidFloatSetAvoidFloatClearItems avoidFloats avoidFloats'TopRightMasterCenteredMaster centerMastertopRightMasterRenameCutLeftCutRightAppendPrepend CutWordsLeft CutWordsRight AppendWords PrependWordsChainrenamednamednameTailEscapedMessageEscapeUnEscapeIgnoreescapeunEscapeignore HiddenMsg HideWindowPopNewestHiddenWindowPopOldestHiddenWindow hiddenWindows hideWindowpopOldestHiddenWindowpopNewestHiddenWindowIM AddRosterwithIMgridIM Selection LimitWindows increaseLimit decreaseLimitsetLimit limitWindows limitSlice limitSelect AddMaster multimasteredmastered fixMasteredStdTransformersFULLNBFULLMIRROR NOBORDERS SMARTBORDERSOnHostonHostonHostsmodHostmodHostsUseTransientFor TrackFloatinguseTransientFor trackFloating MinimizeMsgRestoreMinimizedWinRestoreNextMinimizedWinMinimizeminimizeminimizeWindowminimizeEventHookRestoreMinimizedrestoreMinimizedEventHookMaximizeRestoreMaximizemaximizemaximizeWithPaddingmaximizeRestoreCorner UpperLeft UpperRight LowerLeft LowerRightbanish banishScreen warpToWindow warpToScreenfocusOnMouseMoveadjustEventInputsubmap submapDefault NamedActionHasName sendMessage'spawn' submapName^++^ showKmSimpleshowKmxMessage addDescrKeys addDescrKeys'defaultKeysDescr separatorsubtitlenoNameoneNameaddNameMatchMaybeManageHookSideSCNCCESESWNENWC composeOne/=?<==?-->>-?>> currentWsisKDETrayWindow isInProperty isFullscreenisDialogpid transientTo transience transience'maybeToDefinite doRectFloat doFullFloat doFloatDep doFloatAt doSideFloat doCenterFloat doHideIgnoreFullscreenFloatFullscreenFocusFullscreenFullFullscreenMessage AddFullscreenRemoveFullscreenFullscreenChangedfullscreenSupportfullscreenFullfullscreenFullRectfullscreenFocusfullscreenFocusRectfullscreenFloatfullscreenFloatRectfullscreenEventHookfullscreenManageHookfullscreenManageHookWithMonitorMessage ToggleMonitor ShowMonitor HideMonitorToggleMonitorNamedShowMonitorNamedHideMonitorNamedMonitorproprectvisiblename persistentmonitor manageMonitorsinkAllwithAll'withAllkillAllTimerId startTimer handleTimer Stoppablemarkdelaytimer stoppable RandomColorRGBHSV randomBg'randomBgpromotePhysicalScreenP getScreen viewScreen sendToScreenonNextNeighbouronPrevNeighbour chooseActionbindOn toggleBorderadditionalKeysadditionalKeysP removeKeys removeKeysPadditionalMouseBindingsremoveMouseBindings mkNamedKeymapparseKey checkKeymapRemovableClass=- SummableClass=+ SettableClass=:UpdateableClass=.ArrPrime>> ifThenElsexmonadnothingnormalBorderColorfocusedBorderColorterminalmodMask borderWidthfocusFollowsMouseclickJustFocuses manageHookhandleEventHook workspaceslogHook startupHook clientMaskrootMaskkeys mouseBindingswithWorkspaceswsNameswsKeys wsActions wsSetName withScreenssKeyssActions onScreens addLayout resetLayout startWithapplyapplyIOsend tryMessage tryMessage_ tryInOrder tryInOrder_smsendSMsendSM_toggleFocusFloatFocusNew FocusCurrentFocusTagFocusTagVisibleonScreen onScreen' viewOnScreengreedyViewOnScreen onlyOnScreentoggleOnScreentoggleGreedyOnScreenrunProcessWithInputrunProcessWithInputAndWaitseconds safeSpawn safeSpawnProg unsafeSpawn runInTerm safeRunInTerm spawnPipeLinesGConfLimitsFiniteCircularLinearToLeftToUpToRightToDown planeKeys planeShift planeMove getSelectionpromptSelectionsafePromptSelectiontransformPromptSelectiontransformSafePromptSelectionpasteSelection pasteString pasteCharsendKey sendKeyWindowdate DzenConfig dzenConfigchomptimeoutaddArgsxScreenonCurrxyfontvCenterhCentercenterdzen dzenWithArgs dzenScreen NamedWindowgetNameunNamewithNamedWindowAlign AlignCenter AlignRight AlignLeftAlignRightOffset XMonadFontCoreUtf8Xft stringToPixel initCoreFontreleaseCoreFont initUtf8FontreleaseUtf8FontinitXMF releaseXMF textWidthXMFtextExtentsXMFstringPositionprintStringXMFfi Placement OffsetLeft OffsetRight CenterLeft CenterRight iconPositiondrawIconSmartSpacingWithEdge SmartSpacingSpacingWithEdge ModifySpacingSpacingspacing setSpacing incSpacingspacingWithEdge smartSpacingsmartSpacingWithEdgefocusNth focusNth'WorkspaceCursorsCursors makeCursorsgetFocusnoWrapUp noWrapDown focusDepth modifyLayershiftModifyLayer shiftLayer modifyLayer'workspaceCursorskeysMoveWindowkeysMoveWindowTokeysResizeWindowkeysAbsResizeWindow averagePixelscreateNewWindow showWindow showWindows hideWindows deleteWindow deleteWindows paintWindow paintAndWritepaintTextAndIconsWindowArrangerWindowArrangerMsg DeArrangeArrange IncreaseLeft IncreaseRight IncreaseUp IncreaseDown DecreaseLeft DecreaseRight DecreaseUp DecreaseDownMoveLeft MoveRightMoveUpMoveDown SetGeometry windowArrangewindowArrangeAll listFromListmemberFromListdiff updatePointer MagicFocus magicFocus promoteWarp promoteWarp' followOnlyIfdisableFollowOnWS Magnifier MagnifyMsg MagnifyMore MagnifyLessToggleOn ToggleOff magnifier magnifiercz magnifier' magnifierOff magnifiercz'maximizeVerticalMouseResizableTile masterFrac slaveFrac fracIncrement draggerType isMirrored DraggerType FixedDraggergapWidth draggerWidthBordersDragger MRTMessage ShrinkSlave ExpandSlavemouseResizableTilemouseResizableTileMirroredworkspaceByPos SWNConfigSWNCswn_font swn_bgcolor swn_colorswn_fade ShowWName showWName showWName'defaultSWNConfigsmart simpleSmartfixed underMouseinBoundswithGaps placeFocused placeHookpurePlaceWindowDragType HorizontalVerticalDragPanedragPaneREFLECTYREFLECTXReflect reflectHoriz reflectVert ReflectedDrawer simpleDrawerdraweronLeftonRightonToponBottom SimplestFloat simplestFloatmouseResizeWindowmouseResizeEdgeWindowdiscretelinearresizeposition mouseWindowviewEmptyWorkspacetagToEmptyWorkspacesendToEmptyWorkspacemodifygetsremoveForwardBackwardHistorynextMatchWithThis nextMatch nextMatchOrDo historyHook KeymapTable setKeyRemapsetDefaultKeyRemapbuildKeyRemapBindings emptyKeyRemapdvorakProgrammerKeyRemapShowTextConfigSTCst_fontst_bgst_fgdefaultSTConfighandleTimerEvent flashTextStdoutUrgencyHookSpawnUrgencyHookBorderUrgencyHookurgencyBorderColor FocusHookDzenUrgencyHookdurationargs NoUrgencyHook UrgencyHook urgencyHookInterval RemindWhenDont RepeatedlyEvery SuppressWhenVisibleOnScreenFocused UrgencyConfig suppressWhen remindWhenwithUrgencyHookwithUrgencyHookCminutes urgencyConfig focusUrgent clearUrgents readUrgents withUrgents focusHookborderUrgencyHookdzenUrgencyHookspawnUrgencyHookstdoutUrgencyHookfilterUrgencyHookDefaultShrinkerShrinkershrinkIt CustomShrinkDefaultDecorationDecorationStyle describeDecoshrinkdecorationEventHookdecorationCatchClicksHookdecorationWhileDraggingHookdecorationAfterDraggingHookpureDecorationdecorate DecorationOrigWinDecorationState DecorationMsgSetThemeTheme activeColor inactiveColor urgentColoractiveBorderColorinactiveBorderColorurgentBorderColoractiveTextColorinactiveTextColorurgentTextColorfontName decoWidth decoHeightwindowTitleAddonswindowTitleIcons decoration defaultThemefindWindowByDecoration isInStack isVisible isInvisibleisWithin shrinkWhile shrinkText MouseResizeMR mouseResize ThemeInfoTI themeName themeAuthorthemeDescriptiontheme ppThemeInfo listOfThemes xmonadTheme smallClean donaldTheme robertTheme deiflThemeoxymor00nTheme wfarrThemekavonForestThemekavonLakeThemekavonPeacockThemekavonVioGreenThemekavonBluesThemekavonChristmasThemekavonAutumnThemekavonFireTheme BorderResizeBRRectWithBorders BorderInfo borderResizeDwmStyleDwmdwmStyleSimpleDecorationSimple simpleDeco SimpleFloatSF simpleFloat simpleFloat' ZoomMessageZoomZoomToZoomFullZoomFullToggleClassEQEQFeqZoomRowzoomRow zoomRowWithzoomInzoomOut zoomResetNoFrillsDecoration noFrillsDeco ResizeMode ResizeScreen WithNewScreenresizeHorizontalresizeVerticalresizeHorizontalRightresizeVerticalBottomwithNewRectangle Workscreen workscreenIdexpandWorkspace fromWorkspaceconfigWorkscreenviewWorkscreenshiftToWorkscreencurrentWorkspaceOnTop spawnOncedynamicMasterHookaddDynamicHookupdateDynamicHook oneShotHook toggleHook toggleHook'hookNexttoggleHookNext hookAllNewtoggleHookAllNewwillHook willHookNextwillHookAllNewwillHookNextPPwillHookAllNewPP runLogHook floatNextHook floatNexttoggleFloatNext floatAllNewtoggleFloatAllNew willFloatNextwillFloatAllNewwillFloatNextPPwillFloatAllNewPPdebugManageHookdebugManageHookOn manageDebugmaybeManageDebugmanageDebugLogHookdebugNextManagedWindow PositionStore getPosStoremodifyPosStoreposStoreInsertposStoreRemove posStoreQuery posStoreMovePositionStoreFloatpositionStoreFloat ScreenCorner SCUpperLeft SCUpperRight SCLowerLeft SCLowerRightaddScreenCorneraddScreenCornersscreenCornerEventHookscreenCornerLayoutHook WallpaperConfwallpaperBaseDir wallpapers WallpaperList Wallpaper WallpaperFix WallpaperDirdefWallpaperConf defWPNameswallpaperSetterspawnNamedPipe getNamedPipe dwmpromotedemanage WorkspaceSortWorkspaceCompare getWsIndex getWsComparegetWsCompareByTaggetXineramaWsComparegetXineramaPhysicalWsComparemkWsSortgetSortByIndex getSortByTaggetSortByXineramaRulegetSortByXineramaPhysicalRuleewmhewmhDesktopsStartupewmhDesktopsLogHookewmhDesktopsLogHookCustomewmhDesktopsEventHookewmhDesktopsEventHookCustom Direction2DUD Direction1DNextPrevHistoryMatches XPPositionTopBottomXPrompt showXPromptnextCompletioncommandToCompletecompletionToCommandcompletionFunction modeActionXPMode ComplFunctionXPTypeXPTXPConfigXPCbgColorfgColorfgHLightbgHLight borderColorpromptBorderWidthalwaysHighlightheight maxComplRows historySize historyFilter promptKeymap completionKey changeModeKey defaultText autoCompleteshowCompletionOnTabsearchPredicateXPStateXPdefaultXPConfig greenXPConfig amberXPConfigsetInputgetInputmkXPromptWithReturn mkXPromptmkXPromptWithModesdefaultXPKeymapdefaultXPKeymap'emacsLikeXPKeymapemacsLikeXPKeymap' setSuccesssetDonequit killBefore killAfterkillWord killWord' endOfLine startOfLine deleteString moveCursormoveWord moveWord' moveHistory fillDrawablemkUnmanagedWindowmkComplFunFromListmkComplFunFromList'getNextOfLastWordgetNextCompletionsplitInSubListsAt getLastWord skipLastWord breakAtSpacehistoryCompletionhistoryCompletionPuniqSortdeleteAllDuplicatesdeleteConsecutive initMatcheshistoryUpMatchinghistoryDownMatchingWor withWorkspacerenameWorkspacerenameWorkspaceByNametoNthWorkspacewithNthWorkspaceselectWorkspace addWorkspaceappendWorkspaceaddWorkspaceAtaddWorkspacePromptappendWorkspacePromptaddHiddenWorkspaceAtaddHiddenWorkspaceremoveEmptyWorkspaceremoveWorkspaceremoveWorkspaceByTagremoveEmptyWorkspaceAfterremoveEmptyWorkspaceAfterExcept WSGPrompt WSGroupId addRawWSGroup addWSGroupaddCurrentWSGroup forgetWSGroup viewWSGrouppromptWSGroupViewpromptWSGroupAddpromptWSGroupForgetDirdirectoryPromptProject projectNameprojectDirectoryprojectStartHook ProjectNamedynamicProjects lookupProjectcurrentProject switchProjectswitchProjectPromptshiftToProjectshiftToProjectPromptrenameProjectPromptactivateProjectExtensionActionsLauncherConfigbrowser pathToHooglelauncherPromptdefaultLauncherModesShell shellPromptprompt safePrompt unsafePrompt getShellCompl getCommandssplit getBrowser getEditor SearchEngineNameSiteQueryBrowserSearchusesearch searchEngine searchEngineFamazonalpha codesearchdebdebbtsdebpts dictionarygooglehackagehoogleimagesimdbisohuntluckymaps mathworld openstreetmapscholarstackage thesaurus wikipedia wiktionaryyoutubewayback vocabulary duckduckgomulti intelligent!> prefixAware namedEnginepromptSearchBrowser promptSearchselectSearchBrowser selectSearchSpawner manageSpawnmanageSpawnWithGCshellPromptHere shellPromptOn spawnHerespawnOn spawnAndDo TagPromptsetTagsgetTagshasTagaddTagdelTagunTag focusUpTaggedfocusDownTaggedfocusUpTaggedGlobalfocusDownTaggedGlobal withTaggedPwithTaggedGlobalP withTaggedwithTaggedGlobal withFocusedP shiftHere shiftToScreen tagPrompt tagDelPromptSsh sshPrompt ThemePrompt themePrompt WorkspaceDir workspaceDir changeDirTabBarDecorationTabBar simpleTabBartabBarcircleSimpleDefault circleDefaultcircleSimpleDeco circleDecocircleSimpleDefaultResizablecircleDefaultResizablecircleSimpleDecoResizablecircleDecoResizablecircleSimpleDwmStylecircleDwmStylecircleSimpleTabbed circleTabbedaccordionSimpleDefaultaccordionDefaultaccordionSimpleDeco accordionDecoaccordionSimpleDefaultResizableaccordionDefaultResizableaccordionSimpleDecoResizableaccordionDecoResizableaccordionSimpleDwmStyleaccordionDwmStyleaccordionSimpleTabbedaccordionTabbedtallSimpleDefault tallDefaulttallSimpleDecotallDecotallSimpleDefaultResizabletallDefaultResizabletallSimpleDecoResizabletallDecoResizabletallSimpleDwmStyle tallDwmStyletallSimpleTabbed tallTabbedmirrorTallSimpleDefaultmirrorTallDefaultmirrorTallSimpleDecomirrorTallDeco mirrorTallSimpleDefaultResizablemirrorTallDefaultResizablemirrorTallSimpleDecoResizablemirrorTallDecoResizablemirrorTallSimpleDwmStylemirrorTallDwmStylemirrorTallSimpleTabbedmirrorTallTabbedfloatSimpleSimple floatSimplefloatSimpleDefault floatDefaultfloatSimpleDwmStyle floatDwmStylefloatSimpleTabbed floatTabbed AppendFileappendFilePrompt Application AppPrompt launchApp EnterPrompt confirmPromptDirExec dirExecPromptdirExecPromptNamed InputPrompt inputPromptinputPromptWithCompl?+ emailPromptMan manPromptgetCommandOutput passPromptpassGeneratePromptpassRemovePrompt SetStruts addedStruts removedStruts ToggleStruts ToggleStrut AvoidStruts manageDocks checkDockdocksEventHookcalcGap avoidStruts avoidStrutsOnPP ppCurrent ppVisibleppHiddenppHiddenNoWindowsppUrgentppSepppWsSepppTitleppTitleSanitizeppLayoutppOrderppSortppExtrasppOutputxmobar statusBarxmonadPropLog' xmonadPropLog dynamicLogdynamicLogWithPPdynamicLogString pprWindowSetdynamicLogXineramawrappadtrimshorten dzenColor dzenEscape dzenStrip xmobarColor xmobarStripxmobarStripTags defaultPPdzenPPxmobarPP sjanssenPP byorgeyPPPhysicalWorkspaceVirtualWorkspacemarshall unmarshall unmarshallS unmarshallW workspaces'onCurrentScreen countScreens marshallPP whenCurrentOn marshallSortmarshallWindowSpaceunmarshallWindowSpace MessageConfigmessageFunction foregroundalertedForeground backgrounddefaultMessageConfswitchWSremoveAllMatchingsunMatchtoggleLinkWorkspaces TopicConfig topicDirs topicActionsdefaultTopicAction defaultTopicmaxTopicHistoryTopic>*>defaultTopicConfiggetLastFocusedTopicssetLastFocusedTopicreverseLastFocusedTopicstopicActionWithPrompt topicActioncurrentTopicAction switchTopicswitchNthLastFocusedshiftNthLastFocusedcurrentTopicDircheckTopicConfigDynamicStatusBarCleanupDynamicStatusBardynStatusBarStartupdynStatusBarEventHookmultiPPLogger aumixVolumebatteryloadAvglogCmd logFileCount maildirUnread maildirNewlogTitle logLayout logCurrentonLoggerwrapL fixedWidthLlogSppadLshortenL dzenColorL xmobarColorLNamedScratchpadsNamedScratchpadNScmdquery nonFloatingdefaultFloatingcustomFloatingnamedScratchpadActionallNamedScratchpadActionnamedScratchpadManageHook!namedScratchpadFilterOutWorkspace#namedScratchpadFilterOutWorkspacePPscratchpadSpawnActionscratchpadSpawnActionTerminalscratchpadSpawnActionCustomscratchpadManageHookDefaultscratchpadManageHookscratchpadFilterOutWorkspacepositionStoreManageHookpositionStoreEventHook desktopConfigdesktopLayoutModifiers gnomeConfiggnomeRun gnomeRegister kdeConfig kde4Config mateConfigmateRun mateRegister xfceConfig PPrintablePPrintpprintoutputOfgeomMean arithMean namedNumbers splitColonparse modVolume centerMousestatusBarMouse withScreen makeLauncherlauncher termLauncher viewShiftfloatAll sinkFocusshowMod volumeDzenaltMaskbrightdarkfullscreen43on169fullscreenMPlayer operationOn viewFullOn centerWineOnrecord dmwitConfigmain keyBindingsatSchoolanyMaskpipeName xmobarCommandallPPscolorppFocus ppWorkspaces $fPPrintMap$fPPrintScreenId$fPPrintWord64 $fPPrintChar$fPPrintWord32 $fPPrintInt32$fPPrintInteger$fPPrintScreen $fPPrintInt$fPPrintLayout$fPPrintStackSet$fPPrintScreen0$fPPrintScreenDetail$fPPrintWorkspace $fPPrintStack$fPPrintRectangle $fPPrint[] $fPPrintMaybe$fPPrintPPrintable$fShowPPrintable mouseGestureH mouseGesture mkCollectNavigation2DConfigdefaultTiledNavigationfloatNavigationscreenNavigationlayoutNavigationunmappedWindowRect Navigation2DlineNavigationcenterNavigation navigation2D navigation2DPadditionalNav2DKeysadditionalNav2DKeysPwithNavigation2DConfigdefaultNavigation2DConfig switchLayerwindowGo windowSwapwindowToScreenscreenGo screenSwapfullScreenRectsingleWindowRectWNStateWNActionWNGoWNSwapwithWindowNavigationwithWindowNavigationKeysgoswapTabbedDecorationTabbed TabbarShown simpleTabbedsimpleTabbedAlwayssimpleTabbedBottomsimpleTabbedBottomAlwayssimpleTabbedLeftsimpleTabbedRightsimpleTabbedLeftAlwayssimpleTabbedRightAlwaystabbed tabbedAlways tabbedBottomtabbedBottomAlways tabbedLeft tabbedRighttabbedLeftAlwaystabbedRightAlwaysaddTabs addTabsAlways addTabsBottomaddTabsBottomAlways addTabsRight addTabsLeftaddTabsRightAlwaysaddTabsLeftAlwaysWindowNavigationWNConfigNavigateGoSwapMoveApplyMoveWindowToWindownoNavigateBorders navigateColornavigateBrightnessdefaultWNConfigwindowNavigationconfigurableNavigation CombineTwo combineTwo CombineTwoP SwapWindow SwapWindowN combineTwoPSelectMoveNode SelectNodeMoveNode FocusParentRotateResizeDirectional ExpandTowards ShrinkFrom MoveSplit TreeBalanceBalanceEqualize TreeRotateRotateLRotateRemptyBSP ChiralityDwindleSpiralSqueeze GapMessage ToggleGaps ToggleGapIncGapDecGapGapsGapSpecgapsgaps'LayoutHintsToCenter LayoutHints layoutHintslayoutHintsWithPlacementlayoutHintsToCenterhintsEventHook BroadcastGroupMsgUnMerge UnMergeAllMergeAllMigrate WithGroup SubMessage Sublayout subLayout subTabbeddefaultSublMapmergeDir pullGroup pushGroup pullWindow pushWindowonGrouptoSublworkspaceHistoryHookworkspaceHistoryWSTypeEmptyWS NonEmptyWSHiddenWSHiddenNonEmptyWSAnyWS WSTagGroupWSIsnextWSprevWS shiftToNext shiftToPrevtoggleWS toggleWS' toggleOrViewtoggleOrDoSkipskipTagsmoveToshiftTodoTo findWorkspace nextScreen prevScreenscreenByswapNextScreenswapPrevScreenshiftNextScreenshiftPrevScreengetWsCompareByOrdergetSortByOrderswapWith moveToGreedyswapWorkspacesgetWorkspaceNamessetWorkspaceNamesetCurrentWorkspaceNameworkspaceNamesPPswapTo'workspaceNamePrompt rotSlavesUp rotSlavesDown rotSlaves'rotAllUp rotAllDownrotAll'cycleRecentWindows cycleStacks' shiftToFocus' rotOpposite rotOpposite' rotFocusedUprotFocusedDown rotFocused'rotUnfocusedUprotUnfocusedDown rotUnfocused'rotUprotDown cycleRecentWScycleWindowSets ifWindowsifWindow runOrRaiseraise raiseMaybe raiseHookrunOrRaiseNext raiseNextraiseNextMaybe raiseBrowser raiseEditor raiseAndDorunOrRaiseAndDo raiseMasterrunOrRaiseMasterRunOrRaisePromptrunOrRaisePromptcopy copyToAll copyWindow runOrCopykill1killAllOtherCopieswsContainingCopiessjanssenConfig dmenuXineramadmenumenumenuArgsmenuMap menuMapArgsdmenuMapgotoMenu gotoMenuArgs gotoMenu' gotoMenuArgs' bringMenu bringMenuArgs bringMenu'bringMenuArgs' bringWindow windowMap RearrangerTwoD TwoDState TwoDPosition HasColorizerdefaultColorizerGSConfig gs_cellheight gs_cellwidthgs_cellpadding gs_colorizergs_font gs_navigate gs_rearrangergs_originFractXgs_originFractYdefaultGSConfigmakeXEventhandlershadowWithKeymapselectcancelsetPosmovemoveNextmovePrevtransformSearchStringdefaultNavigation navNSearchsubstringSearchstringColorizer fromClassNamecolorRangeFromClassName gridselectgridselectWindowwithSelectedWindowbuildDefaultGSConfig bringSelected goToSelected spawnSelectedrunSelectedActiongridselectWorkspacegridselectWorkspace' noRearrangersearchStringRearrangerGenerator windowMenutitleBarButtonHandlerdefaultThemeWithButtonshandleScreenCrossingButtonDecoration buttonDecoImageButtonDecorationimageTitleBarButtonHandlerdefaultThemeWithImageButtonsimageButtonDecoImageWindowSwitcherDecorationWindowSwitcherDecorationwindowSwitcherDecoration#windowSwitcherDecorationWithButtons(windowSwitcherDecorationWithImageButtons WindowPromptwindowPromptGotowindowPromptBringwindowPromptBringCopy commandMapworkspaceCommandsscreenCommandsdefaultCommands runCommand runCommand'serverModeEventHookserverModeEventHook'serverModeEventHookCmdserverModeEventHookCmd'serverModeEventHookFXMonad xmonadPrompt xmonadPromptC JumpToLayoutNextLayoutNoWrapWrap NewSelect*||***||****||*****||****||** ****||*** ***||*****||******||****||****||***//***//****//*****//****//** ****//*** ***//*****//******//****//****//***|***|****|*****|****|******|******|*****|******|****|****|***/***/****/*****/****/******/******/*****/******/****/****/**|||cycleThroughLayoutsarossatoConfig layoutPromptconfigmytabTiledTabsConfigTTCvNMastervRatio vIncrementhNMasterhRatio hIncrement tabsShrinker tabsThemeGroupEQzoomRowG rowOfColumns zoomColumnIn zoomColumnOutzoomColumnResettoggleColumnFull zoomWindowIn zoomWindowOutzoomWindowResettoggleWindowFulldefaultTiledTabsConfigfullTabstallTabsmirrorTallTabsincreaseNMasterGroupsdecreaseNMasterGroupsshrinkMasterGroupsexpandMasterGroupsnextOuterLayoutwmii zoomGroupIn zoomGroupOutzoomGroupResettoggleGroupFullgroupToNextLayoutgroupToFullLayoutgroupToTabbedLayoutgroupToVerticalLayoutbluetileCommandsbluetileConfig afterDragifClickifClick'snapMagicMouseResizesnapMagicResize snapMagicMovesnapMovesnapGrow snapShrinkcatchX$fMonadStateMaybeStateQuery PropertyName packIntoQuerytypePropertyNamesetWindowPropertyGHC.BaseMaybewithStringProp customizedeleteinserttile3doLsplit3HorizontallyBy$fLayoutClassThreeColatile$fLayoutClassStackTileaRectfibsmkRatiosblend divideRectsfromRecttoRect divideRect divideRect'chop$fLayoutClassSpiralWithDira roledexLayoutdiv'$fLayoutClassRoledexWord64 XMonad.LayoutShrinkExpandsplitVerticallysplitHorizontallyBy$fLayoutClassResizableTalla$fMessageMirrorResizemkNewPerWorkspaceTmkNewPerWorkspaceF$fLayoutClassPerWorkspaceamkNewPerScreenTmkNewPerScreenF$fLayoutClassPerScreena oneBigMessage oneBigLayout calcBottomWscmastercbottomcright divideBottom divideRightshiftRshiftB$fLayoutClassOneBigafindresolve currLayout currIndex transformers MultiToggleSELunELdeEL transform'expandcollapsegeq$fLayoutClassMultiTogglea $fHListHConsw $fHListEOTw$fShowMultiToggle$fReadMultiToggle$fMessageTogglegetCol multiColNWinmultiColDefWinmultiColDeltaSize multiColSizemultiColActive$fLayoutClassMultiColaTreeNodeLeafNoneareaaspectShrinkWindowAltExpandWindowAlt TallWindowAlt WideWindowAltResetAltaltermakeTree areaSplit findSplits aspectBadness$fLayoutClassMosaicAltWord64$fMessageHandleWindowAltBranchEmpty zipRemainonHeadsplitssplitsL interleave normalize $fMonoidTree $fFunctorTree$fFoldableTree$fLayoutClassMosaica$fMessageAspect WindowNum windowNumsendSubsendBothsendNext sendFocusisFocuscalcNum splitStackcalcAreadifferentiate'$fLayoutClassLayoutNa$fMessageIncLayoutN$fLayoutClassIfMaxa. replicateSdoColumndoRectarrange'$fLayoutClassGridWord64$fLayoutClassSimplestachangeGridAspectarrangeSplitGridarrangeMasterGridarrangeAspectGrid arrangeGridsplitIntoSlabslistDifference splitEvenly resizeMasterchangeMasterGridchangeSlaveGridAspecttallGridAdapter$fLayoutClassTallGrida$fMessageChangeMasterGridGeom$fLayoutClassSplitGrida$fMessageChangeGridGeom$fLayoutClassGrida IncMasterN widthCols$fLayoutClassFixedColumnWord64dishes$fLayoutClassDishesa$fShowInvisible$fReadInvisible<%>mainRectupRects downRects topRectanglerightRectanglebottomRectangle leftRectangle$fLayoutClassCrossa columnMessage columnLayoutmkRectxn$fLayoutClassColumna circleLayout raiseFocus satellite$fLayoutClassCircleWord64 Data.EitherEitherRightLeftghc-prim GHC.ClassesOrd GHC.TypesBoolfoldrfoldlGHC.List!!TrueFalse baseLayout partitionergroupsseedWindowgenreadapt removeDeletedfindNewWindows addWindows focusGroup focusWindow applySpec onFocused_removeFocusedIDgetIDunIDUniq modifyGroups justMakeNew maybeMakeNewrefocus_moveToNewGroup$fLayoutClassGroupsWord64$fMessageGroupsMessage$fShowGroupsMessage$fLayoutClassWithIDa $fEqWithIDgetProp splitAtNull viewingWs insertDown focusLast'rationalToOpacity ManageHook Data.MonoidEndoOEmpty clampRatio$fMonoidOpacitysplitBy$fPredicatePropertyWord64$fLayoutClassLayoutPw guessHostName setRemoteProp getEWMHTitle getICCCMTitlegetDecodedStringProptryUTF8 tryCompoundsplitNulcatchX'safeGetWindowAttributessafeGetCommand getMachineString debugStackWshexvmaskdebugEventsHook'atomName atomEvent windowEventsay splitCIntForeign.C.TypesCIntclientMessages dumpProperty dumpProperty' quickFormat runDecodedumpProptrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.ReaderReaderTDecoder DecodeStateDecSvalueaccumjointDecodepropertypNamepTypewidthwindowindentlimitRawbytes withJoint withJoint'inX isCountOf withIndent dumpArray dumpArray'whenDguardR guardSize guardSize' guardTypedumpList dumpList'dumpListByMaskdumpListByMask' dumpList'' dumpString dumpSelection dumpXKlIndsdumpAtom dumpWindowdumpActiveWindowdumpInt dumpIntegersigneddump64dump32dump8dumpUTF dumpEnum' dumpPixmap dumpOLAttrs dumpMwmHints dumpMwmInfodumpEnum dumpExcept dumpExcept'dumpPiddumpTime dumpStatedumpMotifDragReceiverdumpMDropStyle dumpMDPrereg dumpMDBlocksdumpMotifEndian dumpPercent dumpWmHintsdumpBits dumpBits'mwmFuncsmwmDecos mwmInputModemwmStatemwmHintsawSource wmPlacementboolnwmOrientation nwmOriginwmStatenwmEnumgetInt'getIntinhaleeatappendfailureappend' propSimple propShortErr propSizeErr propTypeErr...twiddle$fLayoutClassTwoPaneagetWindowRectangle$fLayoutClassFixedLayoutaaligndivide$fLayoutClassHintedTileWord64$fLayoutClassToggleLayoutsa$fMessageToggleLayout splitSquare$fLayoutClassSquareaGraphics.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_cursor$fLayoutClassAccordionWord64 LayoutClass runLayoutHideReleaseResources description$fLayoutClassModifiedLayoutaunion\\ intersectGHC.ReadReadGHC.ShowShow setBorders singleton$fSetsAmbiguousAmbiguity($fLayoutModifierConfigurableBorderWord64 $fLayoutModifierWithBorderWord64 namedBoring chosenBoring hiddenBoring focusMaster'FocusUp FocusDown FocusMasterIsBoring ClearBoring#$fLayoutModifierBoringWindowsWord64$fMessageUpdateBoring$fMessageBoringMessage($fLayoutModifierDraggingVisualizerWord64$fMessageDraggingVisualizerMsgautoMess autoLayout masterHeight masterRect slaveRect divideRow$fLayoutModifierAutoMasterwmaxEmptyRectanglessplitContainersfindGaps AvoidFloatscachechosenminwminhavoidAll pruneWindows everyLower everyUpper shrinkBounds shrinkBounds' bottomEdge?:leftrighttopbottom!$fLayoutModifierAvoidFloatsWord64$fMessageAvoidFloatItemMsg$fMessageAvoidFloatMsg Positioner applyPositionplacetopRight$$fLayoutModifierTopRightMasterWord64$$fLayoutModifierCenteredMasterWord64$fLayoutModifierRenameaUE$fMessageEscapedMessage$fLayoutModifierUnEscapea$fLayoutClassIgnorew HiddenWindows hideWindowMsg popNewestMsg popOldestMsg restoreWindow#$fLayoutModifierHiddenWindowsWord64$fMessageHiddenMsgapplyIMfindM$fLayoutClassIMWord64$fLayoutModifierAddRosterWord64sliceSelnMasterstartnRest LimitChangeunLC SliceStyleFirstNSlicefirstN updateStartupdateupdateAndSelect$fLayoutModifierSelectiona$fLayoutModifierLimitWindowsa$fMessageLimitChange applyMastershiftD divideCol FixMaster$fLayoutModifierFixMasterWord64$fLayoutModifierAddMasterWord64"$fTransformerStdTransformersWord64 mkNewOnHostTelemFQDNeqFQDN mkNewOnHostF$fLayoutClassOnHosta _wasFloating _tiledFocusfocusWin%$fLayoutModifierUseTransientForWord64#$fLayoutModifierTrackFloatingWord64 MinimizeWinsetMinimizedState setMinimizedsetNotMinimized$fLayoutModifierMinimizeWord64$fMessageMinimizeMsg$fLayoutModifierMaximizeWord64$fMessageMaximizeRestorefractionwarpspawn modToStringshowName getAction keyToString smartSpace_test$fHasNameNamedAction $fHasName(,) $fHasName(,)0 $fHasName(,)1 $fHasName[] $fHasNameIO $fHasNameXXMonad.ManageHook composeAllJustNothing RationalRectfullscreenManageHook'%$fLayoutModifierFullscreenFloatWord64%$fLayoutModifierFullscreenFocusWord64$$fLayoutModifierFullscreenFullWord64$fMessageFullscreenMessage withMonitor$fLayoutModifierMonitorWord64$fMessageMonitorMessageXGraphics.X11.Xlib.ExtrasEvent signalWindowsignalLocalWindow withAllOnwithAllFilteredsigStoppableWorkspacesHook$fLayoutModifierStoppableWord64 _colorMin _colorMax_colorSaturation _colorValuetoHexrandPermutation cmpScreen getNeighbourneighbourWindowsmkNamedSubmaps readKeymapreadKeySequenceparseKeySequence parseKeyCombo parseModifier parseRegular parseSpecialkeyNames functionKeys specialKeysmultimediaKeys doKeymapCheck mkSubmaps mkSubmaps'on>>=XConfigmod4Maskrepeat ScreenConfigsKeys_ sActions_WorkspaceConfigwsNames_wsKeys_ wsActions_ MouseBindingsmAddmRemoveKeyskAddkRemoveSummableSettable$fDefaultScreenConfig$fDefaultWorkspaceConfig$fRemovableClassMouseBindings[]$fSummableClassMouseBindings[]$fRemovableClassKeys[]$fSummableClassKeys[]$fSummableClassSummabley$fUpdateableClassSummablexx$fUpdateableClassSettablexx$fSettableClasssxy++GHC.ErrerrorGHC.Primseqfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ undefinedGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo==>=negatefailfmapreturn fromIntegral realToFrac toInteger toRational<*>pureBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumReal RealFloatRealFracData.Typeable.InternalTypeable ApplicativeFoldableData.Traversable TraversableCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingRationalIOWordLTEQGTgetModifierMapping 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 eventTablexConfigureWindow killClient xQueryTreexGetWindowAttributeschangeWindowAttributesxGetTextPropertyxwcTextPropertyToTextListwcFreeStringListxCreateFontSetfreeStringList freeFontSetxwcTextExtents xwcDrawStringxwcDrawImageStringxwcTextEscapement xFetchNamexGetTransientForHintxGetWMProtocolsxSetErrorHandlerxRefreshKeyboardMappingxChangePropertyxGetWindowProperty xUnmapWindowxGetWMNormalHints xGetClassHint xGetWMHints xAllocWMHints xSetWMHints isCursorKey isFunctionKey isKeypadKeyisMiscFunctionKey isModifierKeyisPFKeyisPrivateKeypadKeyxSetSelectionOwnerxGetSelectionOwnerxConvertSelectionmkXErrorHandlergetXErrorHandler_xSetErrorHandler mapRaised xGetCommandxGetModifierMappingxFreeModifiermap ev_rr_stateRROutputPropertyNotifyEvent ev_connection ev_outputRROutputChangeNotifyEvent ev_rr_height ev_rr_width ev_rr_modeev_crtcRRCrtcChangeNotifyEvent ev_subtype RRNotifyEvent ev_mheight ev_mwidth ev_rotationev_subpixel_order ev_size_indexev_config_timestamp ev_timestampRRScreenChangeNotifyEventev_dataev_message_typeClientMessageEvent ExposeEvent ev_propstateev_atom PropertyEvent ev_property ev_target ev_selection ev_requestorev_ownerSelectionRequestev_focusev_mode CrossingEventev_countev_first_keycode ev_requestMappingNotifyEventMapNotifyEventev_from_configure UnmapEventDestroyWindowEvent MotionEvent ev_button ButtonEventev_same_screen ev_keycodeev_state ev_y_root ev_x_rootev_time ev_subwindowev_rootKeyEventMapRequestEventev_override_redirectev_eventConfigureEvent ev_value_mask ev_detailev_aboveev_border_width ev_heightev_widthev_yev_x ev_parentConfigureRequestEvent ev_windowev_event_display ev_send_event ev_serial ev_event_typeAnyEvent 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 ErrorEventGraphics.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.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 getAtomNames getAtomName internAtomGraphics.X11.Xlib.Font textWidth textExtentsdescentFromFontStructascentFromFontStructfontFromFontStruct loadQueryFont fontFromGC queryFontfreeFontGlyph FontStruct CharStructGraphics.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 queuedAlreadyflushsyncpending eventsQueued nextEvent allowEvents selectInputcheckWindowEvent 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.TypesDisplayVisualGCSetWindowAttributesvisualInfo_bitsPerRGBvisualInfo_colormapSizevisualInfo_blueMaskvisualInfo_greenMaskvisualInfo_redMaskvisualInfo_classvisualInfo_depthvisualInfo_screenvisualInfo_visualIDvisualInfo_visual VisualInfoImagePixel 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_pixelColorxRR_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 button1Maskmod5Maskmod3Maskmod2Maskmod1Mask controlMasklockMask shiftMask anyModifier mod5MapIndex mod4MapIndex mod3MapIndex mod2MapIndex mod1MapIndexcontrolMapIndex lockMapIndex shiftMapIndex lASTEventrrNotifyOutputPropertyrrNotifyOutputChangerrNotifyCrtcChangerrNotifyrrScreenChangeNotify mappingNotify clientMessagecolormapNotifyselectionNotifyselectionRequestselectionClearpropertyNotifycirculateRequestcirculateNotify resizeRequest gravityNotifyconfigureRequestconfigureNotifyreparentNotify mapRequest mapNotify unmapNotify destroyNotify createNotifyvisibilityNotifynoExposegraphicsExposeexpose keymapNotifyfocusOutfocusIn leaveNotify enterNotify motionNotify buttonRelease buttonPress keyReleasekeyPressrrOutputPropertyNotifyMaskrrOutputChangeNotifyMaskrrCrtcChangeNotifyMaskrrScreenChangeNotifyMaskownerGrabButtonMaskcolormapChangeMaskpropertyChangeMaskfocusChangeMasksubstructureRedirectMasksubstructureNotifyMaskresizeRedirectMaskstructureNotifyMaskvisibilityChangeMask 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_VoidSymbolXIDMaskAtomVisualIDTimeDrawableFontPixmapCursorColormapGContextKeyCodeKeySym 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 ImageFormat ReflectionSizeID SubpixelOrder ConnectionRROutputRRCrtcRRMode XRRModeFlagsGraphics.X11.Xlib.InternalxFreesequencemapM sequenceAtraversereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOError Text.ReadreadreadsnotElemallanyorand concatMapconcat sequence_mapM_productsumminimummaximumlengthnullfoldl1foldr1foldMapeitherunwordswordsunlineslineslex readParenreadList readsPrecatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixText.ParserCombinators.ReadPReadS Data.Bits.|.lcmgcd^^^oddevendivModquotRemdivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicateiteratescanr1scanrscanl1scanlinitlasttailhead Data.Maybemaybeuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconstid=<<mconcatmappendmemptyMonoid<$<**>/=compare<=&&||not<>maxminDefaultControl.Monad.IO.ClassMonadIOliftIOControl.Monad.Reader.Classasksreaderlocalask MonadReaderstate MonadState defaultConfigdoShiftdoIgnoredoFloatdoFgetStringPropertystringProperty classNameresourceappNametitle<||><&&>=?--><+>idHookliftXapplyMaxSizeHintapplyResizeIncHintapplyAspectHintapplySizeHints'applySizeHintsContentsapplySizeHintsmkAdjustmouseMoveWindow mouseDragfloat pointWithin pointScreen floatLocationrestart initColor cleanMaskextraModifiersisClient withFocusedscreenWorkspace setLayout updateLayoutsendMessageWithNoRefreshbroadcastMessage setFocusXfocus setTopFocus setButtonGrabrescreengetCleanedScreenInfo nubScreens containedIn tileWindow clearEventsrefreshsetInitialPropertiesrevealhide setWMStatescaleRationalRectwindowskill killWindowunmanagemanage mirrorRectsplitVerticallyBysplitHorizontallyResizeFull tallRatiotallRatioIncrement tallNMasterMirror NextLayout FirstLayout ChangeLayoutChooseuninstallSignalHandlersinstallSignalHandlerstracewhenXwhenJust recompile getXMonadDirrunOnWorkspacesxforkspawnPIDcatchIOio fromMessage readsLayout atom_WM_STATEatom_WM_DELETE_WINDOWatom_WM_PROTOCOLSgetAtomisRoot withWindowSet withDisplay userCodeDefuserCoderunXrunQueryextensibleStatenumberlockMaskdragging waitingUnmapmapped windowsetXState currentEvent mousePosition mouseFocused buttonActions keyActions focusedBorder normalBordertheRootdisplayXConf WindowSet WindowSpace WorkspaceIdSScreenId screenRectSD ScreenDetailLayout pureMessage handleMessage emptyLayout pureLayoutdoLayoutMessage SomeMessageLayoutMessages extensionType initialValueExtensionClassPersistentExtensionStateExtensionaltalt2 getFloats getWindowsifFloat focusNonFloat focusHelperfocusNonFloatUpfocusNonFloatDown focusFloatUpfocusFloatDownsetFocus toggleOrView'unsafeRunInTermshift'plane gconftool parametersunsafePromptSelection timeoutMicrocenter'detailFromScreenId$fShowNamedWindow$fOrdNamedWindow$fEqNamedWindoweconst imageDims iconToPoints movePoint movePoints shrinkRect%$fLayoutModifierSmartSpacingWithEdgea$fLayoutModifierSmartSpacinga $fLayoutModifierSpacingWithEdgea$fLayoutModifierSpacinga$fMessageModifySpacing listToStackfocusUp' focusDown' ChangeCursorsunWrapConsaddDimend changeFocuschFocusfocusTodescendonFocus modifyCursors updateXMD!$fLayoutModifierWorkspaceCursorsa$fMessageChangeCursors$fFunctorCursors$fFoldableCursorskeysAbsResizeWindow'keysResizeWindow'keysMoveResize paintWindow'mkWindowWA ArrangeAllArrangedWindowWRAWRarrangeWindowsfromAWRawrWingetAWRgetWR mkNewAWRs removeAWRsputOnTop replaceWR$fLayoutModifierWindowArrangera$fMessageWindowArrangerMsgwindowAttributesToRectanglelerpclip $fLayoutModifierMagicFocusWord64 NewLayout MagnifyMasterAllNoMasterOnOffMag unlessMasterapplyMagnifiermagnifyfit$fLayoutModifierMagnifierWord64$fMessageMagnifyMsgMRT leftFracs rightFracsdraggersfocusPos numWindowsDraggerGeometryDraggerWithWinDraggerWithRect DraggerInfo MasterDraggerLeftSlaveDraggerRightSlaveDraggerSetLeftSlaveFractionSetRightSlaveFractiondraggerGeometryadjustForMirror modifySlave replaceAtPossanitizeRectanglewithin createDragger deleteDragger handleResizecreateInputWindow mkInputWindow%$fLayoutClassMouseResizableTileWord64$fMessageMRTMessage needsMovingSWN ShowWNStatedoShow flashName$fLayoutModifierShowWNamea$fDefaultSWNConfigSmartRectanglesr_x0sr_y0sr_x1sr_y1 placeRatio checkBoundsgetNecessaryData placeSmart findSpace subtractRectscleanupSRSmartFixed UnderMouseBounds placeWindowscaler2rr stackContents screenInfogetAllRectanglesorganizeClients getPointerr2srsr2risEmptycontains sizeOrderdropIfContainedSetFrachalfHandleWidth handleColor handleEventdoLay newDragWin$fMessageSetFrac$fLayoutClassDragPanea reflectRect ReflectDirHorizVert$fTransformerREFLECTYWord64$fTransformerREFLECTXWord64$fLayoutModifierReflecta partitionM$fLayoutModifierDrawerWord64getSize $fLayoutClassSimplestFloatWord64PntpairUpmapPzipPminPfindEmptyWorkspacewithEmptyWorkspacemodifyStateExts HistoryDBfocusNextMatchOrDoorderedWindowListorderedWorkspaceList updateHistoryfltbrklrotaterotateTo$fExtensionClassHistoryDB doKeyRemapextractKeyMapping$fExtensionClassKeymapTableShowText modShowText$fDefaultShowTextConfig$fExtensionClassShowTextReminder readReminderschangeNetWMState addNetWMStateremoveNetWMState getNetWMStateWithUrgencyHookinterval remainingUrgents fromUrgents onUrgents adjustUrgentsadjustReminderscallUrgencyHook addReminder reminderHookshouldSuppresscleanupUrgentssuppressibleWindows$fUrgencyHookStdoutUrgencyHook$fUrgencyHookSpawnUrgencyHook$fUrgencyHookBorderUrgencyHook$fUrgencyHookFocusHook$fUrgencyHookDzenUrgencyHook$fUrgencyHookNoUrgencyHook$fUrgencyHook(->)$fExtensionClass[]$fExtensionClassUrgentshandleMouseFocusDraglookFor initStatereleaseResources createDecos updateDeco $fLayoutModifierDecorationWord64DecoWinDSdecoshandleDraggingInProgresscreateDecoWindow showDecos hideDecos deleteDecos updateDecos$fShrinkerDefaultShrinker$fReadDefaultShrinker$fShowDefaultShrinker$fReadCustomShrink$fShowCustomShrink#$fDecorationStyleDefaultDecorationa$fMessageDecorationMsg$fDefaultThemedeleteInputWin!$fLayoutModifierMouseResizeWord64$fReadMouseResize$fShowMouseResizenewThemeBIbWinbRectbType BorderTypeRightSideBorderLeftSideBorder TopSideBorderBottomSideBorderBorderBlueprint brBorderSize compileWrs compileWr handleGonehandleAppearedhandleSingleAppearedhandleStillTherehandleSingleStillThereupdateBorderInfocreateBorderLookupTableprepareBorders createBorderforreorder"$fLayoutModifierBorderResizeWord64$fDecorationStyleDwmStylea"$fDecorationStyleSimpleDecorationa$fLayoutClassSimpleFloatWord64ElteltratiofullzoomEq zoomRatiosEZCgetRatiolookupBy$fLayoutClassZoomRowa$fMessageZoomMessage $fEQFClassEQaNFD$$fDecorationStyleNoFrillsDecorationa$fLayoutModifierResizeScreenaWorkscreenStorage WorkscreenIdfromWorkspace'viewWorkscreen'shiftWs!$fExtensionClassWorkscreenStorage CWOTStateCWOTS$fExtensionClassCWOTState SpawnOnce unspawnOnce$fExtensionClassSpawnOnce DynamicHooks transients permanent$fExtensionClassDynamicHooks HookStatehooks_set_toggle_get_ppmodify'$fExtensionClassHookStatehookNameManageStackDebugMSD $fExtensionClassManageStackDebugPosStoreRectangle PSRectanglePS$fExtensionClassPositionStorePSFupdatePositionStore%$fLayoutClassPositionStoreFloatWord64ScreenCornerLayoutScreenCornerStatecreateWindowAtcreateWindowAt'#$fLayoutModifierScreenCornerLayouta!$fExtensionClassScreenCornerStateWCStatepickFrom getPicPath getPicRescompleteWPConfapplyWallpapergetVisibleWorkspacesgetPicPathsAndWSRects getVScreenDim needsRotation layerCommand$fDefaultWallpaperConf$fMonoidWallpaperList$fExtensionClassWCState NamedPipespipeMap$fExtensionClassNamedPipes indexComparegetXineramaWsCompare'handlesetNumberOfDesktopssetCurrentDesktopsetDesktopNames setClientListsetWindowDesktop setSupportedsetActiveWindow GHC.UnicodeisSpace flushString insertStringColumnsRowsComplWindowDim KeyStrokeXPOperationMode XPSingleModeXPMultipleModesXPSdpyrootwwinscreencomplWin complWinDim complIndex showComplWin operationModehighlightedComplgconfontScommandHistoryoffset successful numlockMaskdone currentXPMode setNextModehighlightedItemcommand setCommandsetHighlightedComplrunXP eventLoopcompletionHandlenextComplIndextryAutoCompletekeyPressHandleresetComplIndexupdateHighlightedCompl updateWindows redrawWindows createWindrawWin printPromptgetCompletionFunctiongetCompletions setComplWindestroyComplWincreateComplWingetComplWinDim drawComplWinredrawComplWinfindComplIndexprintComplList emptyHistorygetHistoryFile readHistory writeHistoryhistoryNextMatching$fDefaultXPConfig$fXPromptXPType $fShowXPType $fXPromptWorremoveEmptyWorkspaceByTagremoveWorkspace'mkCompladdHiddenWorkspace'viewWS findScreenWSWSGroupStorageWSGunWSGWSGroupwithWSG$fXPromptWSGPrompt$fExtensionClassWSGroupStorage getDirCompl notboring $fXPromptDir ProjectStatedynamicProjectsLogHookdynamicProjectsStartupHook projectPrompt defProjectprojectspreviousProject ProjectTable$fExtensionClassProjectStatecompletionFunctionWith$fXPromptHoogleMode$fXPromptCalculatorModeCalculatorModeCalcMode HoogleModeHMode hoogleModecalcModeenvcommandCompletionFunction isSpecialChar$fXPromptShellremoveColonPrefix escapeURIChar$fXPromptSearch modifySpawnerpidsRefmkPrompt$fExtensionClassSpawnersetTagwsToListwsToListGlobal focusTagged'winMap withTagged'withTaggedGlobal' tagComplListtagDelComplList$fXPromptTagPromptssh sshComplListsshComplListLocalsshComplListGlobalsshComplListFilesshComplListFile'sshComplListConfsshComplListConf' fileExists nonComment getWithPort parseHost $fXPromptSsh mapOfThemes$fXPromptThemePromptChdircleanDirscd"$fLayoutModifierWorkspaceDirWord64$fMessageChdir"$fDecorationStyleTabBarDecorationatall mirrorTalldoAppend$fXPromptAppendFilelaunch Parameters$fXPromptAppPrompt$fXPromptEnterPromptgetDirectoryExecutables$fXPromptDirExec$fXPromptInputPromptgetMansmanComplstripExt stripSuffixesrstrip $fXPromptManpasswordStoreFolderDefaultpasswordStoreFolder mkPassPromptselectPasswordgeneratePasswordremovePassword getPasswordsPass PromptLabelremoveGpgExtension $fXPromptPassRectCStrut ClearGapCachegetStrutr2cc2roverlapsavoidStrutsDirectionavoidStrutsRectCache setWorkareareduce$fLayoutModifierAvoidStrutsa$fMessageSetStruts$fMessageClearGapCache$fMessageToggleStrutstoggleStrutsKeysepByconverge $fDefaultPP WorkspaceMap switchWS'switchToMatchingtoggleMatching setMatching noMessageFnremoveMatching'toggleLinkWorkspaces'$fExtensionClassWorkspaceMapxmessage PrevTopics getPrevTopics$fExtensionClassPrevTopics$fDefaultTopicConfigDynStatusBarInfodsbInfoScreensdsbInfoHandlesupdateStatusBarsmultiPP' getScreens $fExtensionClassDynStatusBarInfo findByNamerunApplicationsomeNamedScratchpadActionscratchpadWorkspaceTagscratchpadQueryscratchpadDefaultRectpositionStoreInit desktopKeys gnomeKeyskdeKeyskde4KeysmateKeysxfceKeysconta_LKCPrTJwOTOLk4OU37YmeN Data.Map.BasePosdirgauge GeneralityWSRectWinRect actOnLayernavigableWindows windowRect actOnScreensisMappeddoFocusClosestWindowdoTiledNavigationdoFloatNavigationdoScreenNavigationdoLineNavigationdoCenterNavigationcenterOf thisLayer otherLayervisibleWorkspaces addWrapping wrapOffsets sortedScreenslDistNrunNav$fDefaultNavigation2DConfig"$fExtensionClassNavigation2DConfig$fOrdNavigation2D$fEqNavigation2DwithTargetWindow trackMovementfromCurrentPointcurrentPosition setPositioninsidemidPointnavigableTargets navigable windowRectsinrsortbyAlways WhenPlural createTabs"$fDecorationStyleTabbedDecorationaNavigationStateWNC brightnessupColor downColor leftColor rightColorsccenterdinrect&$fLayoutModifierWindowNavigationWord64$fDefaultWNConfig$fMessageNavigate$fMessageMoveWindowToWindowC2 differentiatebroadcastPrivate$fLayoutClassCombineTwoaC2PforwardToFocusedforwardIfFocused$fLayoutClassCombineTwoPWord64$fMessageSwapWindowBinarySpacePartition getOldRectsgetFocusedNodegetSelectedNodegetTreeNodeRefrefLeafrefPathrefWinsCrumb LeftCrumb RightCrumbSplitaxisAxisoppositeDirection oppositeAxistoAxis oppositeSplit increaseRatio resizeDiff numLeavesrotTree swapCrumb parentValmodifyParentValtoZippergoLeftgoRightgoUp goSiblingtoTree goToNthLeaf toggleSplits splitCurrent removeCurrent rotateCurrent swapCurrent isAllTheWayexpandTreeTowardsshrinkTreeFrom autoSizeTree resizeTreegetSplit findClosest findSplit resizeSplit goToBordernumerateflattenequalize balancedTreeoptimizeOrientationnoRefgoToNode toNodeRef nodeRefToLeaf leafToNodeRefmakeBSP makeZippersizezipperToBinarySpacePartition rectangles getNodeRectdoToNthsplitNth removeNth rotateNthswapNthgrowNthTowards shrinkNthFrom autoSizeNthresizeSplitNth rotateTreeNth equalizeNth rebalanceNth flattenLeavesnumerateLeavesmoveNodeindex adjustStack replaceStackreplaceFloating getFloating getStackSet getScreenRectwithoutFloatingunfloat changedDirs updateNodeRef renderBorders removeBorder'$fLayoutClassBinarySpacePartitionWord64$fMessageSelectMoveNode$fMessageFocusParent $fMessageSwap$fMessageRotate$fMessageResizeDirectional$fMessageTreeBalance$fMessageTreeRotate AxesGeneratorAxes changeRatiodwindlesqueeze splitRectdirAxes alternatechDir$fLayoutClassDwindlea applyGaps activeGaps toggleGaps toggleGapincGap$fLayoutModifierGapsa$fMessageGapMessageplaceRectanglegrowadjacenttouchingcorners hintsMismatchfitting applyOrder applyHints growOthercomparingEdgesonClosedIntervalcenterPlacementfreeDirscenterPlacement')$fLayoutModifierLayoutHintsToCenterWord64!$fLayoutModifierLayoutHintsWord64 delayMesssubls updateGroupupdateWs focusWindow' fromGroupsmergeNav currentStack updateWs' windowsMaybe unfocusedtoGroups fromGroups'setStack$fLayoutModifierSublayoutWord64$fMessageGroupMsg$fMessageBroadcasthistory makeFirstWorkspaceHistory $fExtensionClassWorkspaceHistory greedyViewviewlastViewedHiddenExcept wsTypeToPredswitchWorkspaceshiftBywsByfindWorkspaceGen findWsIndex switchScreen swapScreen shiftScreenByWSOrderStoragewithWSO updateOrder swapOrderWSOunWSO$fExtensionClassWSOrderStorageWorkspaceNames swapNames$fExtensionClassWorkspaceNamescycrefraiseVarRRPopenisApppidof$fXPromptRunOrRaisePrompt copyMaybe taggedWindows copiesOfOn defaultCmd actionMenu decorateNameorderElementmapmix stringToRatiounTwoD td_curpos td_availSlots td_elements td_gsconfigtd_fonttd_paneXtd_paneY td_drawingWintd_searchString td_elementmapTwoDElementMapgenerateElementmapevalTwoD diamondLayerdiamonddiamondRestrictfindInElementMap drawWinBoxupdateAllElementsgrayoutElementsupdateElementsupdateElementsWithColorizer stdHandlehsv2rgb twodigitHex decorateName'$fApplicativeTwoD$fDefaultGSConfig$fHasColorizera$fHasColorizer[]$fHasColorizerWord64 colorizerminimizeButtonOffsetmaximizeButtonOffsetcloseButtonOffset buttonSize"$fDecorationStyleButtonDecorationamenuButtonOffsetconvertToBool' convertToBool menuButton' menuButton miniButton' miniButton maxiButton' maxiButton closeButton' closeButton'$fDecorationStyleImageButtonDecorationaIWSDWSDhandleTiledDraggingInProgressperformWindowSwitching/$fDecorationStyleImageWindowSwitcherDecorationa*$fDecorationStyleWindowSwitcherDecorationadoPromptbringCopyWindowGotoBring BringCopy$fXPromptWindowPrompt$fXPromptXMonadswpassOnpassOnMwhen'$fLayoutClassNewSelecta$fMessageJumpToLayout cycleToNext myXPConfig dropFromTail dropFromHead$fShrinkerCustomShrink_tabs_tab_vert_horiz$fDefaultTiledTabsConfig$fEQFGroupEQGrouplayoutCommandsmasterAreaCommands quitCommandsactivateScreenbluetileWorkspaces bluetileKeysbluetileMouseBindingsbluetileManageHookbluetileLayoutHook doSnapMove snapResizegetSnap constructors