/B 9                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !""# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq$r$s$t%u%v%w&x&y&z&{'|'}'~'((((()****++++++++++++,,,,----...//0000111112222222222233333333344444555556666666666666666666677777888889999999999999::::::::;;;;;<<<<<=== = = = = ==================> >!>">#>$>%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@OAPAQARASATAUAVAWAXAYAZA[A\A]A^A_B`BaBbBcBdBeBfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwDxDyDzD{D|D}D~DDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJKKKKKKKKLLLLLLLLLLLLLLLLLLLLMMMM M M M M MMMMMMMMNNOOOOOOOOO O!O"O#O$O%O&O'P(P)P*P+P,P-P.P/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;Q<Q=Q>Q?Q@QAQBQCQDQEQFQGQHRIRJRKRLRMRNRORPRQRRRSRTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpTqTrTsTtTuUvUwUxUyUzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\]]]]]]]]]]]]]^^^^^^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-_._/_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`WaXaYaZa[a\a]a^a_a`aaabbcbdbebfbgbhbibjbkblbmbnbocpcqcrcsctdudvdwdxdydzd{d|d}d~ddeeeeeeeeeeeffffffffffgggggggggggggghhhhhiiiiiiiijjjjjjjjjjjkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllmnnnnnooooopppppp p p p p qqqqqqqqqqqqqqqqqqq q!r"r#r$r%r&r'r(r)r*r+r,s-s.s/s0s1s2s3s4s5s6s7s8s9s:s;s<s=s>s?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZt[t\t]t^t_t`tatbtctdtetftgthtiujukulumunvovpvqvrvswtwuwvwwxxxyxzx{x|y}z~zzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||| | | | | ||||||||||||||||||} }!}"}#}$}%}&}'}(})}*}+},~-~.~/~0~1~23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a b cdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 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 .(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. 9aCompare 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.  9 :    9 : $(c) Dmitry Bogatov <KAction@gnu.org>BSD Dmitry Bogatov <KAction@gnu.org>unstable unportableNone9:;<=ITWrapper 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) 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 property'WM_CLIENT_MACHINE property,%Does given window have this property?-+Does the focused window have this property?.1Find all existing windows with specified property/Convert property to  @  A (see XMonad.ManageHook)0Get a window property from atom1!Get a window property from string"#$%&'()*+,-./01"&*+%#$'(),-./01"#$%&'()*+,-./01" #$%&'()*+,-./01(9 )8 (c) 2016 Brandon S AllberyBSD-style (see xmonad/LICENSE)allbery.b@gmail.comunstable unportableNone4ERelease xmonad's keyboard grab, so other grabbers can do their thing.4444(c) Daniel Schoepe (2009)BSD3-style (see LICENSE))Daniel Schoepe <daniel.schoepe@gmail.com>unstable unportableSafe05Two-dimensional directions:6Up7Down8Right9Left:One-dimensional directions:56789:;<58796:;<:;<5678956789:;<&(c) Tom Smeets <tom.tsmeets@gmail.com>BSD3-style (see LICENSE)"Tom Smeets <tom.tsmeets@gmail.com>unstable unportableSafe!"FA  https://wiki.haskell.org/ZipperZipper over the  Data.Tree data structure.!Very crappy visualization of the F data structure  (tz_parents) ([*], *, [*]) ([*, *], *, []) ([], * [*, *]) | | | +-------+--------+-------+------+ +-*-+ * | | | | | | | (tz_before) (tz_current) (tz_after) * * | | | | +-*-+ * * * | | * * H/the currently focused sub-tree under the cursorIall sub-tree's to the left( of the cursor that have the same parentJall sub-tree's to the right( of the cursor that have the same parentKKlist zippers for each parent level, the first element is the current parentLGet the highlighted valueM Create a F from a list of  Bs focused on the first elementN$Convert the entire zipper back to a  CO Create a  C, from all the children of the current parentPKGo to the upper most node such that nothing is before nor above the cursorQMove to the parent nodeR0Move the cursor one level down to the first nodeSGo to the next child nodeTGo to the previous child nodeU"How many nodes are above this one?V<How many nodes are before the cursor? (on the current level)W,follow a Path specified by the list of nodesX4go to the first node next to the cursor that matchesY"Check whenther this is a leaf nodeZ"Check whenther this is a leaf node["Check whenther this the last child\#Check whenther this the first childFGHIJKLMNOPQRSTUVWXYZ[\FGHIJKLMNOPQRSTUVWXYZ[\FGHIJKLMNOPQRSTUVWXYZ[\FGHIJKLMNOPQRSTUVWXYZ[\((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  D, run an action when the  D. has been sent by the timer specified by the ]]^_]^_^_]]^_(c) Nicolas Pouillard 2009BSD-style (see LICENSE)/Nicolas Pouillard <nicolas.pouillard@gmail.com>unstable unportableNonea#Set the value of a string property.b6Get the name of a string property and returns it as a  E.c`Given a property name, returns its contents as a list. It uses the empty list as default value.dcGiven a property name and a list, sets the value of this property with the list given as argument.` Fabcd`abcd`bacd` Fabcd Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableSafeM&hCreate 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.i>Turn a stack into a list and the index of its focused element.jCreate a stack from a list of  G,-tagged values. Focus will go to the first  H* value, or if there is none, to the first  I one.kTurn a stack into an  G7-tagged list. The focused element will be tagged with  H, the others with  I.l6Insert an element before the focused one, and focus itm5Insert an element after the focused one, and focus itn.Swap the focused element with the previous oneo*Swap the focused element with the next onep+Swap the focused element with the first oneq&Move the focus to the previous elementr"Move the focus to the next elements#Move the focus to the first elementtGet the focused elementu Get the element at a given indexv$Sort a stack of elements supporting  Jw/Sort a stack with an arbitrary sorting functionxjMap a function over a stack. The boolean argument indcates whether the current element is the focused oneyx without the  A argumentzMonadic version of x{Monadic version of y|'Apply a function to the focused element}Monadic 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  A argumentDelete the focused elementDelete the ith element Analogous to  K. The  AY argument to the step functions indicates whether the current element is the focused one Analogous to  L. The  AY argument to the step functions indicates whether the current element is the focused one without the  A argument. without the  A argument..Find whether an element is present in a stack.Safe version of  MMap a function across both  Is and  Hs. The  A argument is  N in a  H,  O in a  I.Monadic version of Get the a from an  Either a aTag the element with  H if the property is true,  I otherwise+efghijklmnopqrstuvwxyz{|}~+efghijklmnopqrstuvwxyz{|}~+efghijklmnopqrstuvwxyz{|}~+efghijklmnopqrstuvwxyz{|}~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:  seconds 5.5 bypasses  P, 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  P; the name emphasizes that one is calling out to a Turing-complete interpreter which may do things one dislikes; for details, see . QOpen 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. Q   Q((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. RA 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 ++""".  R R(c) Jan Vornberger 2009BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone0replacex must be run before xmonad starts to signals to compliant window managers that they must exit and let xmonad take over.+(c) Anton Vorontsov <anton@enomsg.org> 2014BSD-style (as xmonad)"Anton Vorontsov <anton@enomsg.org>unstable unportableNoneGiven 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. S T S TNoneA  U8 to mark a window to not be shown in pagers or taskbars.An  V? action to mark a window to not be shown in pagers or taskbars. W W$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone X X%(c) 2007 Andrea Rossato, David RoundyBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNoneI+(c) 2007 Andrea Rossato and Spencer JanssenBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNoneString positioneGet the Pixel value for a named color: if an invalid name is given the black pixel will be returned. Convert a Pixel into a String.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  Y in a  Z , given a  [ and the mentShort-hand for  \ ] ](c) 2010 Alejandro SerranoBSD-style (see xmonad/LICENSE)trupill@gmail.comunstable unportableNone &Placement of the icon in the title bar4An exact amount of pixels from the upper left corner4An exact amount of pixels from the right left corner9Centered 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  Z) 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) a*Displaces a list of points along a vector x, yDraw an image into a X surface ^ _ ` a ^ _ ` aB(c) 2007 Andrea Rossato 2010 Alejandro SerranoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone BCompute the weighted average the colors of two given Pixel values.Create a simple window given a rectangle. If Nothing is given only the exposureMask will be set, otherwise the Just value. Use  to map and hideWindow to unmap. Map a windowthe list versionunmap a windowthe list versiondestroy a windowthe list version+Fill a window with a rectangle and a border`Fill a window with a rectangle and a border, and write | a number of strings to given positionsvFill a window with a rectangle and a border, and write | a number of strings and a number of icons to given positions bNPaints a titlebar with some strings and icons drawn inside it. Not exported. cPCreates a window with the possibility of setting some attributes. Not exported. The window where to draw Window width Window height Border widthWindow background color Border color 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 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 b c b c(c) Daniel Schoepe 2009BSD3-style (see LICENSE)daniel.schoepe@gmail.comunstable not portableNoneM dBModify 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 d d(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone0 e f g e f g(c) Christian Wills 2014 BSD3-style (see LICENSE)cwills.dev@gmail.comunstable not portableNone0When  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.  h i j h i j(c) Spencer Janssen 2009BSD3-style (see LICENSE)spencerjanssen@gmail.comunstable not portableNone0The first time r is executed on a particular command, that command is executed. Subsequent invocations for a command do nothing. k l m k l m(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. nISet 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. n o p    n o p .(c) Spencer Janssen <spencerjanssen@gmail.com>BSD-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone CStarts 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.                !!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNoneOutput 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.  q r s t u v w x y z { |  q r s t u v w x y z { |"(c) 2007 Valery V. VorotyntsevBSD3-style (see LICENSE)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) 2009 Collabora LtdBSD-style (see xmonad/LICENSE))Andres Salomon <dilinger@collabora.co.uk>unstable unportableNoneSet the default (root) cursorM W(C) 2007 Andrea Rossato, 2015 Evgeny Kurnevsky 2015 Sibi PrabakaranBSD3*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone:ATGPrompt will be placed in the center horizontally and in the certain place of screen vertically. If it's in the upper part of the screen, completion window will be placed below(like in ) and otherwise above(like in )eRational between 0 and 1, giving y coordinate of center of the prompt relative to the screen height.SRational between 0 and 1, giving width of the prompt relatave to the screen width.The 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.)Font; use the prefix "xft:" for TrueType fonts*Background color+ Font color,,Font color of a highlighted completion entry-2Background color of a highlighted completion entry. Border color/ Border width0 Position: , , or 1zAlways highlight an item, overriden to True with multiple modes. This implies having *one* column of autocompletions only.2 Window height3;Just x: maximum number of rows to show in completion window4)The number of history entries to be saved58a filter to determine which history entries to remember6(Mapping from key combinations to actions7"Key that should trigger completion87Key to change mode (when the prompt has multiple modes)9&The text by default in the prompt line:VJust x: if only one completion remains, auto-select it, and delay by x microseconds;2Only show list of completions when Tab was pressed<MGiven the typed string and a possible completion, is the completion valid?B)Sets the input string to the given value.CPReturns the current input string. Intented for use in custom keymaps where the  ) or similar can't be used to retrieve it.DSame as E3, except that the action function can have type  String -> X a , for any a&, and the final action returned by D 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.ECreates 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  V ()F+Creates a prompt with multiple modes given:A non-empty list of modesA prompt configuration7The created prompt allows to switch between modes with 8 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 1 for its configuration to True. rRemoves numlock and capslock from a keymask. Duplicate of cleanMask from core, but in the XP monad instead of X.GrDefault key bindings for prompts. Click on the "Source" link to the right to see the complete list. See also H.H A variant of G 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  '. 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.I~A keymap with many emacs-like key bindings. Click on the "Source" link to the right to see the complete list. See also J.J A variant of I 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  '. 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.MQuit.N1Kill the portion of the command before the cursorO>Kill the portion of the command including and after the cursorP#Kill the next/previous word, using  ; as the default predicate for non-word characters. See Q.QKill 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 P) 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.R!Put the cursor at the end of lineS#Put the cursor at the start of line -Flush the command string and reset the offset )Insert a character at the cursor positionT=Insert the current X selection string at the cursor position.U)Remove a character at the cursor positionVmove the cursor one positionW Move the cursor one word, using  ; as the default predicate for non-word characters. See X.XMove 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.ZFills 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 E]gThis function takes a list of possible completions and returns a completions function to be used with E8. 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 sublistsaNGets the last word of a string or the whole string if formed by only one wordbrSkips the last word of the string, if the string is composed by more then one word. Otherwise returns the string.dd4 provides a canned completion function much like  getShellCompl}; you pass it to mkXPrompt, and it will make completions work from the query history stored in the XMonad cache directory.eLike dS but only uses history data from Prompts whose name satisfies the given predicate.f(Sort a list and remove duplicates. Like g:, but trades off laziness and stability for efficiency.gFunctions to be used with the 5 setting. g% will remove all duplicate entries. hE will only remove duplicate elements immediately next to each other.hFunctions to be used with the 5 setting. g% will remove all duplicate entries. hE will only remove duplicate elements immediately next to each other.iMInitializes a new HistoryMatches structure to be passed to historyUpMatchingjRetrieve 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) , .. }kRetrieve 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) , .. }  !" #$%&'()*+,-./0123456789:;<= >?@A BCDEF GHIJ KLMNOPQRS TUVWXY          Z[\]^_`abcdefghi jklmn[:;< !"#$%&'(0)2<*+,-./13456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk[EDFA?@#%&'()*+,-./0123456789:;< !">GHIJMNOSRTVBCWXPQUYKL:;<$[Z\]^_ab`cfdeghijk=f  !"  #$%&'()*+,-./0123456789:;<= >?@A BCDEF GHIJ KLMNOPQRS TUVWXY          Z[\]^_`abcdefghi jklmn$(c) 2007 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>stable unportableNonerwGiven 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.q r sqrrqq r s%(C) 2015 Antoine BeauprBSD3$Antoine Beaupr <anarcat@debian.org>unstable unportableNonet Customized 2 prompt that will ask to confirm the given string uPrompt 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.t uv'E\tuutt uv&(C) 2008 Juraj HercekBSD3juhe_xmonad@hck.skunstable unportableNonex Function xP starts the prompt with list of all executable files in directory specified by  f. 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 informationy Function y does the same as x0 except the name of the prompt is specified by   parameter.w  xy zwxyxyww  xy z'%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNone}A XPType entry suitable for using with mkXPromptWithModes.{ |}Prompt.Action.  ~{|}|}{{ |}  ~((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.  1)(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) 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) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone *tAsk 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 .Ask 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  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. Like X, but should be of a text editor. This gets the $EDITOR variable, defaulting to "emacs". + , - . / *   + , - . / *,(C) 2008 Luis CabellosBSD3zhen.sydow@gmail.comunstable unportableNone 0AGiven 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. 1 2 0'<E 1 2 0-(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.)  3 4 5 6 7 8  3 4 5 6 7 8.(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone 9 : ; < = > ? @ A B C D E F 9 : ; < = > ? @ A B C D E F/(c) 2016 Joachim BreitnerBSD-style (see LICENSE)<mail@joachim-breitner.de>stableNone]Prompt the user for a unicode character to be inserted into the paste buffer of the X server. G H I J K L G H I J K L0%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNone1.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone9;<=2$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone09;<=M M M3((c) Kai Grossjohann <kai@emptydomain.de>BSD3-style (see LICENSE)?unstable unportableNone9;<=&Arguments are nmaster, delta, fraction N.tile3. Compute window positions using 3 panes  O N P  O N P4-(c) Rickard Gustafsson <acura@allyourbase.se>BSD-style (see LICENSE))Rickard Gustafsson <acura@allyourbase.se>unstable unportableNone09;<=I Q Q5$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone9;<= R R6)(c) Joe Thornber <joe.thornber@gmail.com>BSD3-style (see LICENSE)%Joe Thornber <joe.thornber@gmail.com>stableportableNone9;<=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. S T U V W X Y Z [ \ ] ^   S T U V W X Y Z [ \ ] ^7(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=8(c) tim.thelion@gmail.comBSDtim.thelion@gmail.comunstable unportableNone9;<= _ ` _ `92(c) MATSUYAMA Tomohiro <t.matsuyama.pub@gmail.com>BSD-style (see LICENSE).MATSUYAMA Tomohiro <t.matsuyama.pub@gmail.com>unstable unportableNone09;<=Inumber of master windowschange when resizing by  a,  b, , width of masterQfraction 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 c d e   c d e:(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone9;<=Structure 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.Specify one layout to use on a particular workspace, and another to use on all others. The second layout can be another call to  , and so on.kSpecify one layout to use on a particular set of workspaces, and another to use on all other workspaces.xSpecify 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. fAConstruct new PerWorkspace values with possibly modified layouts.  g!the tag of the workspace to match&layout to use on the matched workspacelayout to use everywhere elsetags of workspaces to match#layout to use on matched workspaceslayout to use everywhere elsetag of the workspace to match/the modifier to apply on the matching workspacethe base layouttags of the workspaces to match0the modifier to apply on the matching workspacesthe base layout f h g f h;(c) Edward Z. YangBSD-style (see LICENSE)<ezyang@cs.stanford.edu>unstable unportableNone9;<= i>Construct new PerScreen values with possibly modified layouts. jtarget screen width,layout to use when the screen is wide enoughlayout to use otherwise i k j i k<(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone9;<= Data type for layout l Processes Shrink/Expand messages mMain layout function n3Calculate how many windows must be placed at bottom o%Calculate rectangle for master window p&Calculate rectangle for bottom windows q%Calculate rectangle for right windows r'Divide bottom rectangle between windows s&Divide right rectangle between windows tShift rectangle right uShift rectangle bottom  l m n o p q r s t u  l m n o p q r s t u= (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone 09:;<=?AMOT$Marks the end of a transformer list. (Toggle the specified layout transformer. VA class to identify custom transformers (and look up transforming functions by type). Construct a  MultiToggle4 layout from a transformer table and a base layout. Construct a  MultiToggle5 layout from a single transformer and a base layout.RPrepend an element to a heterogeneous list. Used to build transformer tables for .(Construct a singleton transformer table.$ v w x  y z { | } ~                   v w x   y z { | } ~      0>&(c) Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNone9;<= Layout constructor. /Get which column a window is in, starting at 0.   IWindows 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. !    !?(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone09;<=M &;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..(no gaps, draggers overlap window borders/width of a gap between windows0Gwidth of the dragger itself (will overlap windows if greater than gap)5May be removed in favor of (mouseResizableTile { isMirrored = True }1% &'() * + ,-./0 1 2345 67%*+)('&,-./01234545123&'()+*,-./0%&'()*+% &'() * + ,-./0  1 2345 67@(c) 2007 James WebbBSD-style (see xmonad/LICENSE)xmonad#jwebb,sygneca,comunstable unportableNone09<=I >?@A B CDEFG HI >?@ABCDEFG >?CDEFG@AB  >?@A B CDEFG HIA#(c) 2009 Adam Vogt, 2007 James WebbBSD-style (see xmonad/LICENSE)vogt.adam<at>gmail.comunstable unportableNone09;<=M 9True to override the aspect, current index, maximum indexU 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  b message.VXThese sample functions are meant to be applied to the list of window sizes through the T message.WOApply a function to the Rational that represents the currently focused window. b and  a messages are responded to with changeFocused (*delta) or changeFocused (delta/) where delta is the first argument to U..This is exported because other functions (ex. const 1, (+1).) may be useful to apply to the current area. O PQRSTU VW XYZ[\ OPQRSTUVW PQRSTUVWO  O PQRSTU VW XYZ[\B$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone9:;<=`Modify all screens.aModify current screen._ `a bc_`ab`ab__ `a bcC$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone09;<=M fA f 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  ).ii# 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 i simply calls   on the underlying layout.j Similar to it, but this function also allows you update the state of your layout modifier(the second value in the outer tuple).If both j and n2 return a modified state of the layout modifier, n~ takes precedence. If this function returns a modified state, this state will internally be used in the subsequent call to n as well.kk 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 k.gIf you wish to possibly modify a message before it reaches the underlying layout, you should use le instead. If you do not need to modify messages or have access to the X monad, you should use m instead.The default implementation of k calls q when receiving a   or  # method (after which it returns Nothing-), and otherwise passes the message on to m.ll 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 l$ simply passes on the message to k.mmz allows you to spy on messages sent to the underlying layout, in order to possibly change the layout modifier state.The default implementation of m- ignores messages sent to it, and returns Nothing6 (causing the layout modifier to remain unchanged).nn# 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 o 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 p and o instead of n.*On empty workspaces, the Stack is Nothing.The default implementation of n calls p and then o.oo# 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 o- returns the window rectangles unmodified.pp/ is called by the default implementation of nE, 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 n, then p5 will not be called unless you explicitly call it.The default implementation of p is  return () (i.e., it has no effect).qq/ is called by the default implementation of k upon receiving a   or a   message.4The default implementation, of course, does nothing.rr$ 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).ss gives a String description for the entire layout (modifier + underlying layout). By default, it is derived from the concatenation of the r with the  c of the underlying layout, with a "smart space" in between (the space is not included if the r is empty).tThe   instance for a f defines the semantics of a h! applied to an underlying layout.fghijklmnopqrstfghknilrjmqposhijklmnopqrsfgfgh ijklmnopqrstDK(c) 2009 Adam Vogt (c) 2009 Max Rabkin -- wrote limitSelectBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone09;<=M|Only 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 elementw x yz{|}~ wxyz{|}~|}~yz{xww   x yz{|}~ E,(c) Peter De Wachter and Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone09<=M.Increase the size of the window that has focus=Change the size of the window that has focus by a custom zoomSIncrease the size of the window that has focus, unless if it is the master window.Magnifier that defaults to OffdIncrease 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          F(c) Ismael Carnales, Lukas MaiBSD-style (see LICENSE)%Ismael Carnales <icarnales@gmail.com>unstable unportableNone9:;<=MNData 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     G(c) 2007 James WebbBSD3-style (see LICENSE)xmonad#jwebb,sygneca,comunstable unportableNone09:;<=Like V, but allows you to specify the amount of padding placed around the maximized window.     H(c) 2008 Quentin MoserBSD3orphanedunstable unportableNone09;<=,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.      I$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone9:;<=MUsed to indicate to the  instance for # how two lists should be combined.uses  uses  uses  In 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,  or  makes more sense.uThis constructor is used to combine the borderless windows provided by the SetsAmbiguous instances from two other  data types.DOnly remove borders on floating windows that cover the whole screenFNever remove borders when ambiguous: this is the same as smartBorders7Focus 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 $), 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:  has a number of useful  instances    J(c) 2008 Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone09<=switch to Full layoutswitch to Full with no bordersMirror the current layout.Remove borders.Apply smart borders.K#(c) Brandon S Allbery, Brent YorgeyBSD-style (see LICENSE)<allbery.b@gmail.com>unstable unportableNone9;<=Structure 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 L(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstable unportableNone09;<=?Apply a horizontal reflection (left <--> right) to a layout.=Apply a vertical reflection (top <--> bottom) to a layout.Given 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.       M Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone9;<= !The available renaming operations+Remove a number of characters from the left,Remove a number of characters from the rightAdd a string on the right Add a string on the left &Remove a number of words from the left 'Remove a number of words from the right AAdd a string to the right, prepending a space to it if necessary ?Add a string to the left, appending a space to it if necessaryReplace with another string4Apply a list of modifications in left-to-right orderApply a list of ( values to a layout, from left to right.                         N$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone9:;<=(Deprecated) Rename a layout./(Deprecated) Remove the first word of the name.O(c) Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=M 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.  !"      !"P(c) 2016 Kurt DietrichBSD-style (see xmonad/LICENSE) kurto@mac.comunstable unportableNone9:<='?Modify a layout using a list of properties to sort its windows. '()* "&*+%#$'()' '"#$%&'()*+'()*Q(c) Brent YorgeyBSD-style (see LICENSE)<byorgey@gmail.com>unstableportableNone09;<=M2,Message to dynamically modify (e.g. increasedecrease#set) the size of the window spacing5BSurround all windows by a certain number of pixels of blank space.6Set spacing to given amount7 Increase spacing by given amount8Surround 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.9tSurrounds all windows with blank space, except when the window is the only visible window on the current workspace.:Surrounds 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./0123456789:;<=>? /0123456789: 548190:/2367/0123456789:;<=>?R<(c) 2010 & 2013 Adam Vogt 2011 Willem VanlintBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone9<=MJWhen 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.K6Runs 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 HI !"J#KLMHIJKKJIHHI !"J#KLMS(c) Andrea Rossato 2007BSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone09;<=Me5A layout modifier to float the windows in a workspacef9A layout modifier to float all the windows in a workspacegGiven 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.hGiven 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.iGet 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.&T$%&'(UVWXYZ[\]^_`abcdef)*+,-./01ghijkTUdVWXYZ[\]^_`abcefghiefUVWXYZ[\]^_`abcdThgiT$%&'(UVWXYZ[\]^_`abcdef)*+,-./01ghijkT(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone9<=Mp2q34rpqqpp2q34rU(c) 2008 Jussi MkiBSD-style (see xmonad/LICENSE)joamaki@gmail.comunstable unportableNone9<=vdA simple floating layout where every window is placed according to the window's initial attributes.u5v6wuvvuu5v6wV*(c) 2007 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNone09;<=IM$Apply action with destination window%78z9:;{<=>?@A|}~BCDEFGH58796z{|~}|}~56789{z78z9:;{<=>?@A|}~BCDEFGHW*(c) 2007 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone09;<=M IJKLMIJKLMX(c) 2009 Anders Engstrom <ankaan@gmail.com>, 2011 Ilya Portnov <portnov84@rambler.ru>, 2015 Peter Jones <pjones@devalot.com>BSD3-style (see LICENSE)Anders Engstrom <ankaan@gmail.com>, Ilya Portnov <portnov84@rambler.ru>, Peter Jones <pjones@devalot.com>unstable unportableNone !"09:;<=MTOA box to place a layout in. The stored values are xpos, ypos, width and height.NThe 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.;Change the number of windows handled by the focused layout. A variant of  that can't use H. For backwards compatibility with previous versions of LayoutBuilder.nUse one layout in the specified area for a number of windows and possibly let another layout handle the rest.N"The focused window in this layout.O&The focused window in the next layout.P%How to split windows between layouts.QNormal size of layout.R)Size of layout when handling all windows.SThe layout to use in this box.TThe next layout in the chain.U7Information about how to split windows between layouts.VSee: .WSee: .XSee: .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-extrasUse 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.As 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.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.Create 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.-Create a box with only relative measurements.Y=Increase the number of windows allowed in the focused layout.Z6Check to see if the given window is currently focused.[;Split given list of objects (i.e. windows) using predicate./\NOPQRSTUVWXThe 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 layout1How 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 layoutThe predicate to useThe 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 layoutThe box to place the windows in'The layout to use in the specified areaThe resulting layoutAbsolute X-PositionAbsolute Y-PositionAbsolute widthAbsolute heightThe resulting  describing the area8Relative 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  describing the areaY]^_`Za[b Window set.How to split the stack.+The window that was focused in this layout./The window that was focused in the next layout.cd\NOPQRSTUVWXY]^_`Za[bcdYU(c) 2009 Anders Engstrom <ankaan@gmail.com>, 2011 Ilya Portnov <portnov84@rambler.ru>BSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone 09:;<=MTData 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-extrasUse 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.e;Split given list of objects (i.e. windows) using 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 layoutThe box to place the windows in'The layout to use in the specified areaThe resulting layoutfghijeklm  fghijeklmZ(c) 2013 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone9:;<=M Layout itself.Maximum number of windows for the first layout First layout Second layout[)(c) Peter De Wachter <pdewacht@gmail.com>BSD3-style (see LICENSE)^Peter De Wachter <pdewacht@gmail.com> Andrea Rossato <andrea.rossato@unibz.it>unstable unportableNone9<=*Lay out windows similarly to Mirror tiled.#Lay out windows similarly to tiled.$number of windows in the master pane how much to change when resizing$ratio between master/nonmaster panesMWhere to place windows that are smaller than their preordained rectangles.Tall or Wide (mirrored) layout?nopnop\ (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone9<=GAutomatic mirroring of hinted layouts doesn't work very well, so this  comes with built-in mirroring.  Grid False is the normal layout,  Grid True1 is the mirrored variant (rotated by 90 degrees).4The internal function for computing the grid layout. qrstu qrstuq9 ](c) Peter Jones 2015BSD3-style (see LICENSE)pjones@devalot.comunstable not portableNone09:<=MMessages 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.vwxyz{ vwxyz{^ Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone /09:;<=MOT,0Type of functions describing modifications to a & layout. They are transformations on e 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  valuesAdapt 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 windowFocus the given windowApply 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  N<, when in the first group, wrap around to the last one. If  O, create a new group before it./Move the focused window to the next group. If  N<, when in the last group, wrap around to the first one. If  O, 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) Norbert ZehBSD-style (see LICENSE)nzeh@cs.dal.caunstable unportableNone09;<= - 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"./9The geometry change message understood by the master grid0 Change the number of master rows1#Change the number of master columns2/Set the number of master rows to absolute value32Set the number of master columns to absolute value46Set the fraction of the screen used by the master grid5SType 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 messages<9Geometry change messages understood by Grid and SplitGrid?FGrid layout. The parameter is the desired x:y aspect ratio of windows%-./0123456789:;<=>?@ABCDE-./4012359876:;<=>?@/01234<=>?@-.:;56789-./0123456789:;<=>?@ABCDE` (c) Lukas MaiBSD-style (see LICENSE)<l.mai@web.de>unstable unportableNone9;<=OPQRSTOPQRSOPQSROPQRSTa8(c) Roman Cheplyaka, Ivan N. Veselov <veselov@gmail.com>BSD-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone9:;<=WWThis is for compatibility with old configs only and will be removed in future versions!YData type for LayoutModifier which converts given layout to IM-layout (with dedicated space for the roster and original layout for chat windows)ZyModifier 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 windowsGLike find, but works with monadic computation instead of pure function. WXYZ[\]"&*+%#$'()WXYZ["#$%&'()*+WXZ[YWXYZ[\]b(c) 2008 Brent YorgeyBSD3<byorgey@gmail.com>unstable unportableNone09;<=M b-Messages which can be sent to a gap modifier.cToggle all gaps.dToggle a single gap.e-Increase a gap by a certain number of pixels.fDecrease a gap.gThe 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.hrA manual gap configuration. Each side of the screen on which a gap is enabled is paired with a size in pixels.i&Add togglable manual gaps to a layout.jPAdd togglable manual gaps to a layout, explicitly specifying the initial states.bcdefghi3The gaps to allow, paired with their initial sizes.The layout to modify.j+The gaps to allow and their initial states.The layout to modify.kl58796bcdefghij56789ghijbcdef bcdefghijklc.(c) 2008 Justin Bogner <mail@justinbogner.com>BSD3-style (as xmonad)%Justin Bogner <mail@justinbogner.com>unstable unportableNone9;<=oIA tiling mode based on preserving a nice fixed width window. Supports  a,  b and .Determine 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 oneopqopopopqd'(c) Norbert Zeh <norbert.zeh@gmail.com>BSD3#Norbert Zeh <norbert.zeh@gmail.com> experimentalportableNone9;<=t-Rotation between consecutive split directionsw5Layouts with geometrically decreasing window sizes. y and w 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 5m 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 t. So, if the first split is 8% and the second layout parameter is u, then the second split is .For the y layout, the same t is used for computing the split direction of each step from the split direction of the previous step. For example, parameters 8 and u! produces the direction sequence 8, , 9, 6, 8, , 9, 6, ...For the w layout, the t alternates between u and v) in each step. For example, parameters 6 and v! produce the direction sequence 6, 9, 6, 9, ... because 9 is the v rotation of 6 and 6 is the u rotation of 9.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  b and  a~ messages. The former multiplies the ratio by the fourth layout parameter. The latter divides the ratio by this parameter.z{ does not alternate between horizontal and vertical splits and simply splits in the direction given as its first argument.Parameters for both w and y: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  b or  a messagesThe parameters for z' are the same, except that there is no t parameter.tuvwxyz{ 58796tuvwxyz wxyz56789tuvtuvwxyz{e(c) 2009 Max RabkinBSD-style (see xmonad/LICENSE)max.rabkin@gmail.comunstable unportableNone9:;<=*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 <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 drawer"&*+%#$'(),-./01 f(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone09:<=g(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 unportableNone09;<=M h(c) Jeremy ApthorpBSD-style (see LICENSE)#Jeremy Apthorp <nornagon@gmail.com>unstableportableNone9;<=i((c) Luis Cabellos <zhen.sydow@gmail.com>BSD3-style (see LICENSE)$Luis Cabellos <zhen.sydow@gmail.com>stableportableNone9;<=yThe Cross Layout draws the focused window in the center of the screen and part of the other windows on the sides. The  a and  b3 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. j5(c) Konstantin Sobolev <konstantin.sobolev@gmail.com>BSD-style (see LICENSE)1Konstantin Sobolev <konstantin.sobolev@gmail.com>unstable unportableNone09:;<=MSwap window between panes5Swap window between panes in the N-th nested ComboP.  SwapWindowN 0 equals to SwapWindow "&*+%#$'()"#$%&'()*+ k$(c) David Roundy <droundy@darcs.net>BSD-style (see LICENSE)noneunstable unportableNone9:;<=Ml$(c) David Roundy <droundy@darcs.net>BSDnoneunstableportableNone09;<=MQA 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  messages.:226-666666666666666666666666666666666666666666665m%(C) 2007 Andrea Rossato, David RoundyBSD3Stability : unstable unportableNonen(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone9;<=o(c) Peter De WachterBSD-style (see LICENSE)%Peter De Wachter <pdewacht@gmail.com>unstable unportableNone9;<=p(c) 2009 Ilya PortnovBSD-style (see xmonad/LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone9;<=Data 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 jobPlace 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.  q*(c) 2008 David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone09:;<=M$store borings with a specific sourceuser-chosen boringsmaybe 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.      r/(c) Jan Vornberger 2009, Alejandro Serrano 2010BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone09:<=M !"#$%&'(!"#$%&%&!"#$ !"#$%&'(ss(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(09;<=M,%Message to move nodes inside the tree/@Message to cyclically select the parent node instead of the leaf1LMessage for swapping the left child of a split with the right child of split3=Message for rotating a split (horizontal/vertical) in the BSP50Message for resizing one of the cells in the BSP9^Message to balance the tree in some way (Balance retiles the windows, Equalize changes ratios)<^Message for rotating the binary tree around the parent node of the window to the left or right?Han empty BinarySpacePartition to use as a default for adding windows to.     ,-./0123456789:;<=> !"#$%&'()*+,-./0123456789:;<=>?@AB?CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef@ABCDEFG58796,-./0123456789:;<=>??34125678<=>9:;/0,-.56789h     ,-./0123456789:;<=> !"#$%&'()*+,-./0123456789:;<=>?@AB?CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef@ABCDEFGt+(c) 2014 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)&(c) Anders Engstrom <ankaan@gmail.com>unstable unportableNone09:;<=FM ZQChange 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.a/Clear the set of windows to specifically avoid.bAvoid 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.cAvoid 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.g'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.)huSplit rectangles that horizontally fully contains another rectangle without sharing either the left or right side.iJFind all horizontal gaps that are left empty from top to bottom of screen.%Z[\]^_`ajklmnopbLayout to modify.c8Minimum 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.qgrs1The 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.tuvhiBounding rectangle.FList of all rectangles that can cover areas in the bounding rectangle.wxyz{|}~def Z[\]^_`abc bc^_`aZ[\]Z[\]^_`ajklmnopbcqgrstuvhiwxyz{|}~defu(c) 2009 Ilya PortnovBSD3-style (see LICENSE)#Ilya Portnov <portnov84@rambler.ru>unstable unportableNone9:;<= iData type for layout modifier,Handle Shrink/Expand and IncMasterN messagesMain layout functionACalculates height of master area, depending on number of windows.Rectangle for master areaRectangle for slave area Divide rectangle between windowsShift rectangle rightjUser interface function ijkijji ijkv(c) glasser@mit.eduBSDglasser@mit.edustable unportableNone9;<=nopnononopw$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>unstable unportableNoneTstuvstuvvstustuvx(c) 2013 Dmitri IouchtchenkoBSD3-style (see LICENSE)+Dmitri Iouchtchenko <johnnyspoon@gmail.com>unstable unportableNone0*Workspaces in reverse-chronological order.wA E that keeps track of the order in which workspaces have been viewed.xA 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. Cons the  onto the ? if it is not already there, or move it to the front if it is.wxywxwxwxyy(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone||||z(c) Anton Pirogov, 2014BSD3'Anton Pirogov <anton.pirogov@gmail.com>unstable unportableNone0}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 subdirectoryhinternal. 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."Picks a random element from a listeget absolute picture path of the given wallpaper picture or select a random one if it is a directoryTake a path to a picture, return (width, height) if the path is a valid picture (requires imagemagick tool identify to be installed)complete unset fields to default values (wallpaper directory = ~/.wallpapers, expects a file "NAME.jpg" for each workspace named NAME)KGets a list of geometry rectangles and filenames, builds and sets wallpaper}~ }~ }~}~{Devin Mullins <me@twifkak.com>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNone09:;<=M$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 unportableNone09:;<=M* The default 2, with just the default methods' implementations.The ; class, defines methods used in the implementation of the  h; 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   Z or & if the window is not to be decorated.The  h(. This data type is an instance of the hG class. This data type will be passed, together with a layout, to the fN 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  E  and a 'Maybe Rectangle'. The 5 will be displayed only if the rectangle is of type .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.ThemesColor of the active windowColor of the inactive windowColor 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 name6Maximum width of the decorations (if supported by the )Height of the decorationsEExtra text to appear in a window's title bar. Refer to for a use #XMonad.Layout.ImageButtonDecoration9Extra icons to appear in a window's title bar. Inner [Bool] is a row in a icon bitmap.A 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.The 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 ( E)  Z.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  Zs True if the window is in the Stack. The : comes second to facilitate list processing, even though w `isInStack` s won't work...;) Given a  Z and a list of  Zs is True if the  Z$ is not completely contained by any  Z of the list. The contrary of  . True is the first  Z is totally within the second  Z. The long h instance for the  type.In n< we check the state: if there is no state we initialize it. The state is ized 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  Z5, 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  h. Otherwise we call ", which will call the appropriate  methods to perform its tasks.J     >fghknilrjmqpos     0     *     }(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone9<=M! !"#$ !"## !" !"#$~(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=.<Add simple old dwm-style decorations to windows of a layout.,-./,-..,-,-./$(c) David Roundy <droundy@darcs.net>BSDnoneunstable unportableNone9;<=FM 5(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.6layoutHintsToCenter 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.placeRectangle (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 5).(Leave the opposite edges where they werein 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 cornerMTrue whenever two edges touch. not (Set.null $ adjacent x y) ==> touching x y!starting top left going clockwise7IEvent hook that refreshes the layout whenever a window changes its hints.BTrue if the window's current size does not satisfy its size hints.2345678923456745632723456789(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=M>?@ABCDEFG >?@ABCDEF BCDEF?@A>>?@ABCDEFG(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=N.Add simple decorations to windows of a layout.LMNOLMNNLMLMNO(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone9;<=S3Add very simple decorations to windows of a layout.RSTLMNRSSRRST(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=YzAdd, on the top of the screen, a simple bar of tabs to a given | layout, with the default theme and the default shrinker.ZSame of Y[, but with the possibility of setting a custom shrinker, a custom theme and the position:  or .WXYZ[>?@ABCDEFWXYZ YZWXWXYZ[%(c) 2007 David Roundy, Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9;<=Ma.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 }c5A bottom-tabbed layout with the default xmonad Theme.d5A bottom-tabbed layout with the default xmonad Theme.e3A side-tabbed layout with the default xmonad Theme.f3A side-tabbed layout with the default xmonad Theme.g3A side-tabbed layout with the default xmonad Theme.h3A side-tabbed layout with the default xmonad Theme.iUA layout decorated with tabs and the possibility to set a custom shrinker and theme.kcA layout decorated with tabs at the bottom and the possibility to set a custom shrinker and theme.mUA layout decorated with tabs and the possibility to set a custom shrinker and theme.nUA layout decorated with tabs and the possibility to set a custom shrinker and theme.oUA layout decorated with tabs and the possibility to set a custom shrinker and theme.pUA layout decorated with tabs and the possibility to set a custom shrinker and theme.qVA layout modifier that uses the provided shrinker and theme to add tabs to any layout.sdA layout modifier that uses the provided shrinker and theme to add tabs to the bottom of any layout.ubA layout modifier that uses the provided shrinker and theme to add tabs to the side of any layout.vbA layout modifier that uses the provided shrinker and theme to add tabs to the side of any layout.^_`abcdefghijklmnopqrstuvwxy758796^_`abcdefghijklmnopqrstuvwx7aiqbjrcksemvfnudltgoxhpw^_`56789^_`abcdefghijklmnopqrstuvwxy(c) 2009 Adam VogtBSD-style (see xmonad/LICENSE)vogt.adam@gmail.comunstable unportableNone09:;<=FM send a message to all sublayoutsYGroupMsg 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 messageGroups 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 9 messages. If there is no corresponding element in the advanceInnerLayouts list, then  innerLayout is not given any  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 q 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 workspace jrearrange the windowset to put the groups of tabs next to eachother, so that the stack of tabs stays put. [focusWindow'. focus an element of a stack, is Nothing if that element is absent. See also   restore the default layout for each group. It needs the X monad to switch the default layout to a specific one (handleMessage NextLayout))         Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone 09:;<=AMT#The type of messages accepted by a  layout?Multiply the focused window's size factor by the given number.:Set the focused window's size factor to the given number.SSet whether the focused window should occupy all available space when it has focusVToggle 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.To use the usual :?Class for equivalence relations. Must be transitive, reflexive.A 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 message8 layout for laying out elements which are instances of . Perfect for s.[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).5Increase the size of the focused window. Defined as Zoom 1.55Decrease the size of the focused window. Defined as  Zoom (2/3)2Reset the size of the focused window. Defined as ZoomTo 1 !"# !"#(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone*The default xmonad theme, by David Roundy.=Small decorations with a Ion3 remembrance, by Andrea Rossato.-Don's preferred colors - from DynamicLog...;)"Ffrom Robert Manea's prompt theme.deifl's Theme, by deifl.&oxymor00n's theme, by Tom Rauchenwald.#Forest colours, by Kathryn Andersen.Lake (blue/green) colours, by Kathryn Andersen$Peacock colours, by Kathryn Andersen)Violet-Green colours, by Kathryn Andersen!Blue colours, by Kathryn Andersen&Christmas colours, by Kathryn Andersen#Autumn colours, by Kathryn Andersen!Fire colours, by Kathryn Andersen$$(C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone%&%& Ben Boeckel <mathstuf@gmail.com>BSD-style (see LICENSE) Ben Boeckel <mathstuf@gmail.com>unstable unportableNone0This  U* 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.'()*+,-.  '()*+,-., 2007 Ivan Tarasov <Ivan.Tarasov@gmail.com>BSDIvan.Tarasov@gmail.com experimental unportableNone sets WM name&(c) Trevor Elliott <trevor@galois.com>BSD3-style (see LICENSE)"Trevor Elliott <trevor@galois.com>unstable unportableNoneExecute a named script hook1(c) 2009 Nils Schweinsberg, 2015 Evgeny KurnevskyBSD3-style (see LICENSE)!Nils Schweinsberg <mail@n-sch.de>unstable unportableNone09;<=Add one single X () action to a screen cornerAdd a list of (ScreenCorner, X ()) tuplesHandle screen corner events/01234   /01234(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone(c) Justin Bogner 2010BSD3-style (see LICENSE)%Justin Bogner <mail@justinbogner.com>unstable not portableNone (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  U composer. Unlike 5, it stops as soon as a candidate returns a ; value, effectively running only the first match (whereas 5, continues and executes all matching rules).2q /=? x. if the result of q equals x, return FalseAq <==? x. if the result of q equals x, return True grouped with qDq </=? x. if the result of q notequals x, return True grouped with qA helper operator for use in J. It takes a condition and an action; if the condition fails, it returns  from the  @ so # will go on and try the next rule.A helper operator for use in 5L. 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  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 . 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 .A convenience R that will check to see if a window is transient, and then move it to its parent. set to a  U converts s to  Us-Floats the new window in the given rectangle.DFloats the window and makes it use the whole screen. Equivalent to  $ 6 0 0 1 1.tFloats a new window using a rectangle computed as a function of the rectangle that it would have used by default.Floats 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).MFloats a new window with its original size on the specified side of a screen9Floats a new window with its original size, but centered.Hides window and ignores it.%7     9The rectangle to float the window in. 0 to 1; x, y, w, h.$     $     7      000(c) 2010 Audun SkaugenBSD-style (see xmonad/LICENSE)audunskaugen@gmail.comunstable unportableNone09:;<=  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.&fAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.'kLayout modifier that makes the fullscreened window fill the entire screen only if it is currently focused.(fAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.)YHackish layout modifier that makes floating fullscreened windows fill the entire screen.*fAs above, but the fullscreened window will fill the specified rectangle instead of the entire screen.+8The event hook required for the layout modifiers to work,XManage hook that sets the fullscreen property for windows that are initially fullscreen-xA version of fullscreenManageHook that lets you specify your own query to decide whether a window should be fullscreen.89: !"#$%&'()*+,-;./01 !"#$%&'()*+,-$%'&()*+,- !"#89: !"#$%&'()*+,-;./01/(c) Joachim Breitner <mail@joachim-breitner.de>BSD+Joachim Breitner <mail@joachim-breitner.de>unstable unportableNone09;<=M<E(Initial x pixel, initial y pixel, final x pixel, final y pixel).=6(Direction, height/width, initial pixel, final pixel).8SetStruts 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.<%Message type which can be sent to an ?* layout modifier to alter its behavior.@GAdd docks functionality to the given config. See above for an example.A]Detects if the given window is of type DOCK and if so, reveals it, but does not manage it.B.Checks if a window is a DOCK or DESKTOP windowCSWhenever a new dock appears, refresh the layout immediately to avoid the new dock.>6Gets the STRUT config, if present, in xmonad gap orderE^Goes through the list of windows and find the gap so that all STRUT settings are satisfied.FKAdjust layout automagically: don't cover up any docks, status bars, etc.GAdjust 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).?Invertible conversion.@Invertible conversion.ADo the two ranges overlap?#Precondition for every input range (x, y): x B y.A range (x, y)( is assumed to include every pixel from x to y.'<C=89:;<=>?DEFGHI@JKLABCD>EFGM?@NAHIJKL58796:;<89:;<=>?@ABCDEFG@AB?FGCD<=>89:;E<C=89:;<=>?DEFGHI@JKLABCD>EFGM?@NAHIJKL(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNoneVOWVWVWVOW(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.P>Modify the StackSet when the workspace containing w is focusedQQ and  focusLast belong in XMonad.StackSet? XYZ[\]^_`PQR XYZ[\]^_` `XYZ[\]^_XYZ[\]^_`PQR BSD!Tony Morris <haskell@tmorris.net>Noneb0The value to add to your log hook configuration.ab ab abab Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone0cThis  U+ will selectively float windows as set by d and f.dfloatNext TrueI arranges for the next spawned window to be sent to the floating layer, floatNext False cancels it.ffloatAllNew True= arranges for new windows to be sent to the floating layer, floatAllNew False cancels ith,Whether the next window will be set floatingi(Whether new windows will be set floating Scdefghijk cdefghijk cdefghijk Scdefghijk.(c) 2008 Justin Bogner <mail@justinbogner.com>BSD%Justin Bogner <mail@justinbogner.com>unstable unportableNone TGConverts a percentage to the format required for _NET_WM_WINDOW_OPACITYlSets the opacity of a windowm)Fades a window out by setting the opacityn Makes a window completely opaqueocFades a window by the specified amount if it satisfies the first query, otherwise makes it opaque.p<Sets the opacity of inactive windows to the specified amountqSet the opacity of inactive windows, on the current workspace, to the specified amount. This is specifically usefull in a multi monitor setup. See s.r2Returns True if the window doesn't have the focus.s8Returns 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.t;Fades out every window by the amount returned by the query. Tlmnopqrst lmnopqrst lrsnmopqt Tlmnopqrst-Brandon S Allbery KF8NH <allbery.b@gmail.com>BSDBrandon S Allbery KF8NHunstable unportableNone9;uBA FadeHook is similar to a ManageHook, but records window opacity.wRender a window fully opaque.x"Render a window fully transparent.y Specify a window's transparency.z3Specify a window's opacity; this is the inverse of y.{ An alias for y. An alias for y.| An alias for y. An alias for y.} An alias for y.~ An alias for w. An alias for x. An alias for x.Like doF, but usable with  U-like hooks that aren't  @( wrapped around transforming functions (U). The identity u, which renders windows w.-A Query to determine if a window is floating.A $ to fade windows under control of a u., which is similar to but not identical to  U.A Vt 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.uvWXwxy,The window's transparency as a fraction. transparency 1 is the same as x , whereas transparency 0 is the same as w.z*The opacity of a window as a fraction.  opacity 1 is the same as w , whereas  opacity 0 is the same as x.{|}~Yruvwxyz{|}~uvwx~y|}z{ruvWXwxyz{|}~Y(c) Roman CheplyakaBSD-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone09<=M hMessages without names affect all monitors. Messages with names affect only monitors whose names match.1property which uniquely identifies monitor windowspecifies where to put monitoris it visible by default?2name of monitor (useful when we have many of them)is it shown on all layouts? opacity level Template for  record. At least  and ) should be redefined. Default settings:  is  N,  is  O.GManageHook which demanages monitor window and applies opacity settings.Z"&*+%#$'()"#$%&'()*+Z:(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) Brandon S Allbery, 2015BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNoneRun a  U 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  U:  , handleEventHook = dynamicPropertyChange "WM_NAME" myDynHook <+> handleEventHook baseConfig {- ... -} myDynHook = composeAll [...]4A shorthand for the most common case, dynamic titles&(c) Don Stewart <dons@cse.unsw.edu.au>BSD3-style (see LICENSE)"Don Stewart <dons@cse.unsw.edu.au>unstable unportableNone:M)The K type allows the user to customize the formatting of status information.8how to print the tag of the currently focused workspaceHhow 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 workspaces2format to be applied to tags of urgent workspaces.Rseparator to use between different log sections (window name, layout, workspaces)'separator to use between workspace tagswindow title formatescape / sanitizes input to layout name formathow 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 l, 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."how to sort the workspaces. See XMonad.Util.WorkspaceCompare for some useful sorts.ologgers 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!applied 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.c6Helper function which provides ToggleStruts keybindingVAn 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. 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.Format the workspace information, given a workspace sorting function, a list of urgent windows, a pretty-printer format, and the current WindowSet.5Workspace 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  to getSortByXineramaRule from XMonad.Util.WorkspaceCompare. For example, xdef { ppCurrent = dzenColor "red" "#efebe7" , ppVisible = wrap "[" "]" , ppSort = getSortByXineramaRule }0Wrap a string in delimiters, unless it is empty./Pad a string with a leading and trailing space.3Trim leading and trailing whitespace from a string.>Limit a string to a certain length, adding "..." if truncated.dbOutput a list of strings, ignoring empty ones and separating the rest with the given separator.XUse dzen escape codes to output a string with given foreground and background colors.Escape any dzen metacharacters."Strip dzen formatting or commands.ZUse xmobar escape codes to output a string with given foreground and background colors.&Strip xmobar markup, specifically the  fc,  icon and  action" tags and the matching tags like  /fc.0The default pretty printing options, as seen in ./Settings to emulate dwm's statusbar, dzen only.Some nice xmobar defaults.UThe options that sjanssen likes to use with xmobar, as an example. Note the use of  and the record update on .DThe options that byorgey likes to use with dzen, as another example..)the command line to launch the status barthe pretty printing options0the desired key binding to toggle bar visibilitythe base configcleft delimiterright delimiter output stringd separatorfields to output1foreground color: a color name, or #rrggbb formatbackground color output string1foreground color: a color name, or #rrggbb formatbackground color output stringetags with all  tag... /tag removed++cde(c) 2009 Daniel WagnerBSD3<daniel@wagner-home.com>unstable unportableNoneIn 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 hRightTake 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 V field of the input will not be invoked if either of the following conditions is met: The 9 of the input returns an empty list (when not given one).The ' 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 fs with virtual names, then marshallSort s vSort is a function which sorts fQs with physical names in an analogous way -- but keeps only the spaces on screen s.Convert the tag of the f from a  to a .Convert the tag of the f from a  to a .,The number of screens to make workspaces for#The desired virtual workspace names/A list of all internal physical workspace names(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" loadAverageg!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)g(c) Braden Shepherdson 2008BSD-style (as xmonad)Braden.Shepherdson@gmail.comunstable unportableNone0Master  U that must be in your  xmonad.hs  U.Appends the given  U to the permanent dynamic  U.Modifies the permanent  U with an arbitrary function.Creates a one-shot  U6. Note that you have to specify the two parts of the  U+ separately. Where you would usually write: "className =? "example" --> doFloatyou must call  as 7oneShotHook dynHooksRef (className =? "example) doFloat hijkhijk(c) Ben Boeckel 2012BSD-style (as xmonad)mathstuf@gmail.comunstable unportableNone0lmnopqr&The PP to use if the screen is focusedThe PP to use otherwisest  lmnopqrst!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone LPrint 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.EPrint 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. packaged as a  . (Currently this is identical.)'debugStackFull packaged as a  . (Currently this is identical.) packaged as a V. You almost certainly do not want to use this unconditionally, as it will cause massive amounts of output and possibly slow xmonad down severely.  packaged as a V. 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-ishu-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    u         u0(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 debuggingvConvenient showHex variantw,Convert a modifier mask into a useful string vw   vw!(c) Brandon S Allbery KF8NH, 2012BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNoneI Event hook to dump all received events. You should probably not use this unconditionally; it will produce massive amounts of output.x0Dump an X11 event. Can't be used directly as a V.yEmit information about an atom.z/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 bytes2Specify how to decode some common client messages.,Convert a modifier mask into a useful stringRetrive, 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 xyz{|}  ` xyz{|}(c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone0(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.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone.(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 string.(c) Spencer Janssen <spencerjanssen@gmail.com>BSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone!(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)/(c) Ivan Miljenovic <Ivan.Miljenovic@gmail.com>BSDnoneunstable unportableNone    %(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 unportableNone#$#$#$#$BSD3-style (see LICENSE)unstable unportableNone%7Un-float all floating windows on the current workspace.&9Apply a function to all windows on the current workspace.' Execute an  V1 action for each window on the current workspace.(.Kill all the windows on the current workspace.%&'(%&'(%'&(%&'(+(c) Anton Vorontsov <anton@enomsg.org> 2014BSD-style (as xmonad)"Anton Vorontsov <anton@enomsg.org>unstable unportableNone9<=M)Data type for ModifiedLayout. The constructor lets you to specify a custom mark/description modifier and a delay. You can also use . helper function..gConvert a layout to a stoppable layout using the default mark ("Stoppable") and a delay of 15 seconds. )*+,-./)*,-+.)*+,-.)*+,-./d(c) 2007 David Roundy <droundy@darcs.net>, Devin Mullins <me@twifkak.com>Devin Mullins <me@twifkak.com>None23456789 5879623456789 673458956789223456789 Public domain<gwern0@gmail.com>unstable unportableNone!Get a list of all windows in the StackSet( with an absolute ordering of workspaces:If 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 matches<action 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 B.. Version that allows cycling through matches.ASee = and B.. Version that allows cycling through matches.BSee >. B 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. CSee > and B4. In addition to all of the options offered by B Cq allows the user to supply the function that should be used to shift the focus to any window that is found. 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.DD and E 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". ED and E 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". FIf the window is found the window is focused and the third argument is called otherwise, the first argument is called See H for an example. GIf a window matching the second argument is found, the window is focused and the third argument is called; otherwise, the first argument is called. Hlif 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") I^If the window is found the window is focused and set to master otherwise, action is run. 5runOrRaiseMaster "firefox" (className =? "Firefox")) :;<=>?@ABCDEFGHI"     5:;<=>?@ABCDEFGHI=A<@>BCDEGIFH:;?:;<=>?@ABCDEFGHI(C) 2008 Justin BognerBSD3mail@justinbogner.comunstable unportableNone JKLJKKJJKLDevin Mullins <me@twifkak.com>BSD-style (see LICENSE)Devin Mullins <me@twifkak.com>stable unportableNoneLO3The shell command that will handle window selectionP%Arguments to be passed to menuCommandQEA function that produces window titles given a workspace and a windowRjPops open a dmenu with window titles. Choose one, and you will be taken to the corresponding workspace.SPops open a dmenu with window titles. Choose one, and you will be taken to the corresponding workspace. This version accepts a configuration object.TPops 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.UPops open an application with window titles given over stdin. Choose one, and you will be taken to the corresponding workspace.VPops 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.WPops open a dmenu with window titles. Choose one, and it will be dragged, kicking and screaming, into your current workspace.XPops open a dmenu with window titles. Choose one, and it will be dragged, kicking and screaming, into your current workspace. This version accepts a configuration object.YPops 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.ZPops 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._BA map from window names to Windows, given a windowTitler function.Returns the window name as will be listed in dmenu. Tagged with the workspace ID, to guarantee uniqueness, and to let the user know where he's going.MNOPQRSTUVWXYZ[\]^_`MNPOQRSTUVWXYZ[\]^_MNOPQRSUTVWXZY[^_\]MNOPQRSTUVWXYZ[\]^_`(c) daniel@wagner-home.comBSD3-style (see LICENSE)daniel@wagner-home.comunstable unportableNonef[Move the mouse cursor to a corner of the focused window. Useful for uncluttering things.BInternally, this uses numerical parameters. We parametrize on the aI type so the user need not see the violence inherent in the system.i and h 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! gSame as fF but moves the mouse to the corner of the currently focused screen hzWarp the pointer to a given position relative to the currently focused window. Top left = (0,0), bottom right = (1,1).igWarp the pointer to the given position (top left = (0,0), bottom right = (1,1)) on the given screen. abcdefghi abcdefghi fgabcdeihabcdefghi>(c) Robert Marlow <robreim@bobturf.org>, 2015 Evgeny KurnevskyBSD3-style (see LICENSE)#Robert Marlow <robreim@bobturf.org>stableportableNoneTjUpdate 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 mousejjjj)(c) Peter De Wachter <pdewacht@gmail.com>BSD%Peter De Wachter <pdewacht@gmail.com>unstable unportableNone9:;<=lVCreate a new layout which automagically puts the focused window in the master area.mAn 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.nNpromoteWarp' allows you to specify an arbitrary pair of arguments to pass to j& when the mouse enters another window.o#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.p-Disables focusFollow on the given workspaces: k l!mnopqklmnoplmnopkk l!mnopq(c) Daniel SchoepeBSD3-style (see LICENSE)!Daniel Schoepe <asgaroth_@gmx.de>unstable unportableNonetCChanges the focus if the mouse is moved within an unfocused window.u4Adjusts the event mask to pick up pointer movements.tutututu&(c) Tom Smeets <tom.tsmeets@gmail.com>BSD3-style (see LICENSE)"Tom Smeets <tom.tsmeets@gmail.com>unstable unportableNone!"I-"State monad transformer using ##State used by TreeSelect.TContains all needed information such as the window, font and a zipper over the tree.$size of  tz_window%history zipper, navigated with  and v$Tree Node With a name and extra texty+extra text, displayed next to the node namez*value to return when this node is selected{0Extensive configuration for displaying the tree.This class also has a & instance}when enabled, only the parents (and their first children) of the current node will be shown (This feature is not yet implemented!)~+background color filling the entire screen.-XMF font for drawing the node name extra text=node foreground (text) and background color when not selected0every other node will use this color instead of 9node foreground (text) and background color when selectedextra text colornode width in pixelsnode height in pixels'tree X position on the screen in pixels'tree Y position on the screen in pixels+indentation amount for each level in pixels$key bindings for navigating the treeDefault navigation2navigation using either arrow key or vi style hjklReturn or Space to confirm Escape or Backspace to cancel toDefault configuration.!Using nice alternating blue nodes' Lift the  V action into the " monadVRun Treeselect with a given config and tree. This can be used for selectiong anything0for switching workspaces and moving windows use for selecting actions use Same as $ but ad a specific starting position6Select a workspace and execute a "view" function from XMonad.StackSet on it.PConvert the workspace-tree to a flat list of paths such that XMonad can use them4The Nodes will be separated by a dot ('.') characterSelect from a Tree of  V actions `https://wiki.haskell.org/wikiupload/thumb/9/9b/Treeselect-Action.png/800px-Treeselect-Action.png4Each of these actions have to be specified inside a vExample +treeselectAction myTreeConf [ Node (TSNode "Hello" "displays hello" (spawn "xmessage hello!")) [] , Node (TSNode "Shutdown" "Poweroff the system" (spawn "shutdown")) [] , Node (TSNode "Brightness" "Sets screen brightness using xbacklight" (return ())) [ Node (TSNode "Bright" "FULL POWER!!" (spawn "xbacklight -set 100")) [] , Node (TSNode "Normal" "Normal Brightness (50%)" (spawn "xbacklight -set 50")) [] , Node (TSNode "Dim" "Quite dark" (spawn "xbacklight -set 10")) [] ] ]*Quit returning the currently selected nodeQuit without returning anything"Move the cursor to its parent nodeAMove the cursor one level down, highlighting its first child-node&Move the cursor to the next child-node*Move the cursor to the previous child-nodeMove backwards in historyMove forward in historyMove to a specific node('Apply a transformation on the internal F.) wait for keys and run navigation*Request a full redraw+3Draw a node at a given indentation and height level,Draw a simple box with text-Modified version of  that uses  as color format.Convert  to /3Note that it uses short to represent its components@"01#2345$6789%vwxyz{|}~' config file a list of  Bs to select from. config file5tree structure with a cursor position (starting node))list of paths that can be navigated with  and  (bound to the o and i keys)your tree of workspace-names'the "view" function. Instances can be :& for switching to a workspace and/or ;7 for moving the focused window to a selected workspace.+These actions can also be combined by doing  \i -> W.greedyView i . W.shift i<=>?"path, always starting from the top()*@indentation levelheight!node layers (from top to bottom!)+!indentation level (not in pixels)height level (not in pixels) node to draw+node foreground (font) and background color,-XMF Font font color x-position y-position  string text.%vwxyz{|}~%{|}~vwxyz""01# 2345$6789%vwxyz{|}~'<=>?()*@+,-.(c) Nicolas PouillardBSD-style (see LICENSE)/Nicolas Pouillard <nicolas.pouillard@gmail.com>unstable unportableNone0+Here is the topic space configuration area.1This mapping associate a directory to each topic.fThis mapping associate an action to trigger when switching to a given topic which workspace is empty.!This is the default topic action.This is the default topic.This setups the maximum depth of topic history, usually 10 is a good default since we can bind all of them using numeric keypad. is just an alias for  " but should points to a directory. is just an alias for  An alias for flip replicateM_EReturns the list of last focused workspaces the empty list otherwise.Given a , 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 A 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 .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.A$Display the given message using the xmessage program.BCDABCDA $(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)Ehset 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!FGEHIJKLMNOP FGEHIJKLMNOP'(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.Like A, but sends the unmatched key to the default action as argument.$2009 Adam Vogt <vogt.adam@gmail.com>BSD3-style (see LICENSE)Adam Vogt <vogt.adam@gmail.com>unstable unportableNone/9:;AT RAn existential wrapper so that different types can be combined in lists, and mapsQ but add a description that is  show message2. Note that not all messages have show instances. P) 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 namesROr 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 ()STRUVWSTRUVW]Devin Mullins <me@twifkak.com> Brent Yorgey <byorgey@gmail.com> (key parsing)BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>None?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.Like , 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 ]:Remove standard keybindings you're not using. Example use: {main = xmonad $ def { terminal = "urxvt" } `removeKeys` [(mod1Mask .|. shiftMask, n) | n <- [xK_1 .. xK_9]]Like , 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 , but for mouse bindings.Like , 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 = 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>XmGiven a list of pairs of parsed key sequences and actions, group them into submaps in the appropriate way.YGiven 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.ZjParse a sequence of keys, returning Nothing if there is a parse failure (no parse, or ambiguous parse).[BParse a sequence of key combinations separated by spaces, e.g.  "M-c x C-S-2" (mod+c, x, ctrl+shift+2).\)Parse a modifier-key combination such as M-C-s (mod+ctrl+s).]UParse 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.^1Parse a regular key name (represented by itself)._:Parse a special key name (one enclosed in angle brackets).`=A list of all special key names and their associated KeySyms.a5A list pairing function key descriptor strings (e.g. " F2"!) with the associated KeySyms.b<A list of special key names and their corresponding KeySyms.cList 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.dGiven 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.XefgYZ[\]^_`abcd  XefgYZ[\]^_`abcd'Devin Mullins <devin.mullins@gmail.com>BSD-style (see LICENSE)'Devin Mullins <devin.mullins@gmail.com>unstable unportableNone9:;<=?D)'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 h 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 i\) 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: 1 rWhether window focus follows the mouse cursor on move, or requires a mouse click. (Mouse? What's that?) Default: True If 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 True 7The 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 .|. keyReleaseMask lThe root events that xmonad is interested in. This is useful in combination with handleEventHook. Default: substructureRedirectMask .|. substructureNotifyMask .|. enterWindowMask .|. leaveWindowMask .|. structureNotifyMask .|. buttonPressMask Key bindings to  V actions. Default: see  `man xmonad`.  G takes a list of keybindings specified emacs-style, as documented in 0. For example, to change the "kill window" key: 0 keys =- ["M-S-c"] keys =+ [("M-M1-x", kill)] Mouse button bindings to an  V# 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. j 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 k "".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 simpleTabbed !PReset 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 smartBorders #Replace the current i` 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 i into a  . %Turns an IO function on i into a  .Llmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / \h JB   K L A N O E    G I H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ D      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  [      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Y Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Mk &      5     Q !"#$%&'()*+,-./012 a b3456789:;<=>?@ABCDEFGHIJK PLMNO PQRSTUVWXY ;Z[\]^_`abcdefghijklmnoipqfrstuv V U @wxy z{|}~                             ! " # $ %-                        ! " # $ %    9lmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . /00!(c) Brandon S Allbery KF8NH, 2014BSD3-style (see LICENSE)allbery.b@gmail.comunstable not portableNone0 0A combinator to add full  U! debugging in a single operation. 1 A combinator to add triggerable  UK 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. 2Place this at the start of a  UP, 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  U might use e.g. , 3 manageDebug$ only if the user requested it with debugNextManagedWindow. 4If  manageDebug. has set the debug-stack flag, show the stack. 5.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 ), , etc.  0 1 2 3 4 5 6 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 6(C) 2008 Jrmy Bobbio, gwernBSD3noneunstable unportableNone 79Paste the current X mouse selection. Note that this uses  from XMonad.Util.XSelection and so is heir to its flaws. 8Send 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. 9Send 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 z0, and so will probably have trouble with any  outside ASCII. ;5The primitive. Allows you to send any combination of \ and X to any  you specify. 7 8 9 : ; 7 8 9 : ; 7 8 9 : ; 7 8 9 : ;(c) Spencer JanssenBSD*Spencer Janssen <spencerjanssen@gmail.com>unstable unportableNone0:Get the current Spawner or create one if it doesn't exist. =9Provides a manage hook to react on process spawned with  B,  A 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. AReplacement for  P2 which launches application on current workspace. BReplacement for  P0 which launches application on given workspace. C=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 ? @ A B C D < = > ? @ A B C < = > A B C ? @ < = > ? @ A B C DNone9AT> 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 { | } ~  * 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> I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b G H E F c  ~ } | { z y x w v u t s r q p o d e f g h i j k l m n< 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 { | } ~  BSD3-style (see LICENSE)unstable unportableNone%%(c) Don Stewart 2007BSD3-style (see LICENSE)dons@cse.unsw.edu.austableportableNone    (c) Mario Pastorelli (2012)BSD-style (see xmonad/LICENSE)pastorelli.mario@gmail.comunstable unportableNone0  Font name Background color Foreground 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      None JA 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 UTF8 Given 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   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  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  from XMonad.Prompt.Shell. 3    0 0  1     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 unportableNone MRotate 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.    H(c) 2009 Anze Slosar translation to Haskell by Adam VogtBSD3-style (see LICENSE)<vogt.adam@gmail.com>unstable unportableNone mRandomColor fixes constraints when generating random colors. All parameters should be in the range 0 -- 0xff Especify the minimum and maximum lowest values for each color channel. 9specify the saturation and value, leaving the hue random.  randomBg'* produces a random hex number in the form  '#xxyyzz' randomBg8 starts a terminal with the background color taken from  This depends on the your 1 configuration field accepting an argument like -bg  '#ff0023'       (c) Miikka Koskinen 2007BSD3-style (see LICENSE)xmonad@s001.ethrael.comunstable unportableNone Move 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.    q(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 ;, :, 9 and 8, associating it with   to the corresponding  *. It also associates these bindings with  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  .        #(c) Nelson Elhage <nelhage@mit.edu>BSDNelson Elhage <nelhage@mit.edu>unstable unportableNoneI -The type of the index of a screen by location 'Translate a physical screen index to a ScreenId !Switch to a given physical screen 1Send the active window to a given physical screen`Compare two screens by their top-left corners, ordering | top-to-bottom and then left-to-right.KGet ScreenId for neighbours of the current screen based on position offset. jApply operation on a WindowSet with the WorkspaceId of the next screen in the physical order as parameter. nApply operation on a WindowSet with the WorkspaceId of the previous screen in the physical order as parameter.      (c) Roman Cheplyaka, 2008BSD3-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone YUses supplied function to decide which action to run depending on current workspace name. If 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.    (c) 2009 Nils SchweinsbergBSD3-style (see LICENSE)!Nils Schweinsberg <mail@n-sch.de>unstable unportableNone Focus data definitions always focus the new screen +always keep the focus on the current screen #always focus tag i on the new stack Dfocus tag i only if workspace with tag i is visible on the old stack Run 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 greedyView function to runwhat to do with the focus screen id current stack old stack new stack X 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   (c) 2012 kedals0BSD3-style (see LICENSE)Dal <kedasl0@gmail.com>unstable unportableNone0 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 workscreens View 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) Lukas MaiBSD3-style (see LICENSE)Lukas Mai <l.mai@web.de>stable unportableNone XToggle the border of the currently focused window. To use it, add a keybinding like so: ., ((modm, xK_g ), withFocused toggleBorder)    &(c) 2011 Norbert Zeh <nzeh@cs.dal.ca>BSD3-style (see LICENSE)Norbert Zeh <nzeh@cs.dal.ca>unstable unportableNone09<=MOT2%Shorthand for the tedious screen type 8Stores 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.9Score that indicates how general a navigation strategy is $Encapsulates the navigation strategy;A shorthand for workspace-rectangle pairs. Reduces typing.8A shorthand for window-rectangle pairs. Reduces typing.!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. #Hybrid navigation. This attempts Line navigation, then falls back on Center navigation if it does not find any suitable target windows. This is useful since Line navigation tends to fail on gaps, but provides more intuitive motions when it succeeds provided there are no floating windows. 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 . 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 myConfig JConvenience function for adding keybindings, using the syntax defined in . 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 myConfig IModifies the xmonad configuration to store the Navigation2D configuration Switches 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.>Acts on the appropriate layer using the given action functions?Returns the list of windows on the currently visible workspacesUReturns the current rectangle of the given window, Nothing if the window isn't mapped3Acts on the screens using the given action function+Determines whether a given window is mapped1Finds 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.))Implements navigation for the tiled layer)Implements navigation for the float layer%Implements navigation between screensImplements 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 navigationImplements Hybrid navigation. This attempts Line navigation first, then falls back on Center navigation if it finds no suitable target window.: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.:                    XChooses 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?Should wrapping be used?,The window set, used to get the desktop size,Should wrapping be used? Do nothing if not.+Input set of (window/workspace, rect) pairs ! " # $58796                                       567893                     ! " # $(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9<=IM % & ' ( ) * % & ' ' % & % & ' ( ) *(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone9<= -dA simple floating layout where every window is placed according to the window's initial attributes.#This version is decorated with the L style. .Same as  -L, but with the possibility of setting a custom shrinker and a custom theme. + , - . / LM + , - . - .LM + , + , - . /(c) 2007 Andrea RossatoBSD-style (see xmonad/LICENSE)andrea.rossato@unibz.itunstable unportableNone7 2A 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 3 Similar to  2K but with the possibility of setting a custom shrinker and a custom theme. 4A 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 5 Similar to circleSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme. 6A  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 7 Similar to  6K but with the possibility of setting a custom shrinker and a custom theme. 8A  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 9 Similar to  8K 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 nP 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 nO 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 A Similar to accordionSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme. BAn n 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. C Similar to  BK but with the possibility of setting a custom shrinker and a custom theme. DAn n 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. E Similar to  DK but with the possibility of setting a custom shrinker and a custom theme. FAn nQ 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 G Similar to  FK but with the possibility of setting a custom shrinker and a custom theme. HAn nO 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 I Similar to  HK but with the possibility of setting a custom shrinker and a custom theme. JA 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 K Similar to  JK but with the possibility of setting a custom shrinker and a custom theme. LA 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 M Similar to tallSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme. NA  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 O Similar to  NK but with the possibility of setting a custom shrinker and a custom theme. PA  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 Q Similar to  PK but with the possibility of setting a custom shrinker and a custom theme. RA 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 S Similar to  RK but with the possibility of setting a custom shrinker and a custom theme. TA 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 U Similar to  TK but with the possibility of setting a custom shrinker and a custom theme. V_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 W Similar to  VK but with the possibility of setting a custom shrinker and a custom theme. X^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 Y Similar to mirrorTallSimpleDeceK but with the possibility of setting a custom shrinker and a custom theme. ZA '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  ZK 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 a Similar to  `K but with the possibility of setting a custom shrinker and a custom theme. bdA 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 d#This version is decorated with the  style. Here you can find a screen shot: Dhttp://code.haskell.org/~arossato/xmonadShots/floatSimpleDefault.png eSame as  dL, but with the possibility of setting a custom shrinker and a custom theme. f#This version is decorated with the ,5. Note that this is a keyboard only floating layout. Here you can find a screen shot: Ehttp://code.haskell.org/~arossato/xmonadShots/floatSimpleDwmStyle.png gSame as  fL, but with the possibility of setting a custom shrinker and a custom theme. h#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.png iSame as  hL, but with the possibility of setting a custom shrinker and a custom theme.: 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; 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; 2 3 6 7 4 8 5 9 : ; < = > ? B C @ D A E F G H I J K N O L M P Q R S T U V W Z [ X Y \ ] ^ _ ` a b c d e f g h i: 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 (c) Lukas MaiBSD3-style (see LICENSE)<l.mai@web.de>unstable unportableNone j j 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. kA utility function on top of  j . It uses a P to look up the mouse gesture, then executes the corresponding action (if any). lA callback generator for  j.  l0 returns two callback functions for passing to  j. 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 h. j k l58796 j k l56789 j k l j k l$(c) Quentin Moser <moserq@gmail.com>BSD3orphanedunstable unportableNone m Behaves like N, but returns True of the message was handled by the layout, False otherwise. nSends the first message, and if it was not handled, sends the second. Returns True if either message was handled, False otherwise. pTries 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. rConvenience shorthand for . m n o p q r s t m n o p q r s t m n o p q r s t m n o p q r s t Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedstable unportableNone<=OT u-Swap the focused window with the previous one v)Swap the focused window with the next one w.Swap the focused window with the master window xoIf the focused window is floating, focus the next floating window. otherwise, focus the next non-floating one. yoIf the focused window is floating, focus the next floating window. otherwise, focus the next non-floating one. zMove focus to the master window {7Move 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 group 3Move the focused window to the previous group. The  Aq argument determines what will be done if the focused window is in the very first group: Wrap back to the end ( N%), or create a new group before it ( O). /Move the focused window to the next group. The  Av argument determines what will be done if the focused window is in the very last group: Wrap back to the beginning ( N$), or create a new group after it ( O). =Move the focused window to a new group before the current one <Move the focused window to a new group after the current one FSplit the focused group in two at the position of the focused window. u v w x y z {(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, . | } ~   u v w x y z { | } ~   u v w x y z { | } ~   u v w x y z { | } ~   Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNone<=DORT 4Configuration 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 column eToggle 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 window bToggle 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 one Shrink the master area Expand the master area ,Rotate the available outer layout algorithms%  4 u v w x y z { | } ~  "       Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedstable unportableNone<=OT A layout inspired by wmii 'Increase the width of the focused group &Decrease the size of the focused group 2Reset the size of the focused group to the default VToggle 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.  u v w x y z { | } ~   '(c) Jan-David Quesel <quesel@gmail.org>BSD3-style (see LICENSE)noneunstable unportableNone0Stuff for linking workspacesuSwitch to the given workspace in a non greedy way, stop if we reached the first screen | we already did switching onSwitch 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.CInsert a mapping between t1 and t2 or remove it was already present8Insert a mapping between t1 and t2 and display a message "Remove all maps between workspaces /remove all matching regarding a given workspace Toggle 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.         (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. %Creates a prompt with the given modes ]Create a list of modes based on : a list of extensions mapped to actions the path to hoogle Uses the program hoogle to search for functions Uses the command calc" to compute arithmetic expressions        (c) Christian DietrichBSD-style (as xmonad)stettberger@dokucde.deunstable unportableNone0 EUsing this in the keybindings to set the actual Key Translation table Adding 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 translation SThe dvorak Programmers keymap, translates from us keybindings to dvorak programmers        (c) nzeh@cs.dal.caBSD3-style (see LICENSE)nzeh@cs.dal.caunstable unportableNone0 1The direction in which to look for the next match (Forward from current window or workspace )Backward from current window or workspace Backward in history Focuses 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.         )Clemens Fruhwirth <clemens@endorphin.org>BSD-style (see LICENSE))Clemens Fruhwirth <clemens@endorphin.org>unstable unportableNone9;IT uA 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 handler 8Closes 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 specified 9Apply a transformation function the current search string By 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  or :)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 portableNone +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   below. "Intended to be used together with   . See above. +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.)*+,         )*+,   (c) Jan Vornberger 2009BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone9;<= -       -  B(c) Jan Vornberger 2009 Alejandro Serrano 2010BSD3-style (see LICENSE)trupill@gmail.comunstable not portableNone9;<= +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   below. ./0123456789:;<=             ./0123456789:;<=    B(c) Jan Vornberger 2009 Alejandro Serrano 2010BSD3-style (see LICENSE)*jan.vornberger@informatik.uni-oldenburg.deunstable not portableNone9;<= #> $? % & '@A ( ) # $ % & ' % & ' $ # #> $? % & '@A ( )$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>stable unportableNone .6Give focus to the nth window of the current workspace. 0>Swap current window with nth. Focus stays in the same position . / 0 1B . / 0 1 . / 0 1 . / 0 1B((c) 2009 Adam Vogt <vogt.adam@gmail.com>BSD Adam Vogtunstable unportableNone09;<= 4ImakeCursors requires a nonempty string, and each sublist must be nonempty 6non-wrapping version of C 7non-wrapping version of D 9 modifyLayer- is used to change the focus at a given depth :shiftModifyLayer is the same as  9D, 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  2u layout modifier. Put this as your outermost modifier, unless you want different cursors at different times (using XMonad.Layout.MultiToggle)EFG 2H 3IJ 4KLMN 5O 6 7 8PQ 9 : ; <R =S > ? @ A / 2 3 4 5 6 7 8 9 : ; < = 8 4 = 2 5 9 < : ; / 6 7 3EFG 2H 3IJ 4KLMN 5O 6 7 8PQ 9 : ; <R =S > ? @ A$(c) Karsten Schoelzel <kuser@gmx.de>BSD Karsten Schoelzel <kuser@gmx.de>stable unportableNone IkeysMoveWindow (dx, dy) moves the window by dx pixels to the right and dy pixels down. J 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 corner K"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 corner L%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. G H I J K LTUV G H I J K L I J K L G H G H I J K LTUV Quentin Moser <moserq@gmail.com>BSD-style (see LICENSE)orphanedunstable unportableNoneW(Alternate representation for rectangles.XTop left coordinates, inclusiveYTop left coordinates, inclusiveZ#Bottom right coorsinates, exclusive[#Bottom right coorsinates, exclusive MThe type of placement policies N7Try to place windows with as little overlap as possible P!Place windows at a fixed position QPlace windows under the mouse R`Apply the given placement policy, constraining the placed windows inside the screen boundaries. SSame as  R5, but allows specifying gaps along the screen's edges TyRepositions the focused window according to a placement policy. Works for both "real" floating windows and windows in a T-based layout. U:Hook to automatically place windows when they are created. VECompute the new position of a window according to a placement policy.\ZHelper: Places a Rectangle at a fixed position indicated by two Rationals inside another,]ZHelper: Ensures its second parameter is contained inside the first by possibly moving it.^fReturn values are, in order: window's rectangle, other windows' rectangles and pointer's coordinates._Main placement function`Second 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.aFirst 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.bgSubtracts smaller rectangles from a total rectangle , returning a list of remaining rectangular areas.cNubsg a list of rectangles, dropping all those that are already contained in another rectangle of the list.-WdXYZ[ Mefgh NBWhere the window should be placed inside the available area. See  P. O PWhere windows should go.(0,0) -> top left of the screen (1,0) -> top right of the screenetc QAWhere the pointer should be relative to the window's frame; see  P. R S top, right, bottom and left gaps T Ui^The workspace with reference to which the window should be placed, and the screen's geometry.The list of floating windows. VThe placement strategy The screenThe other visible windowsThe pointer's position.The window to be placed\]jklmnopq^rstuvw_Gpoint of the screen where windows should be placed first, if possible.screen other clientswidthheight` Free areasIdeal coordinatesWidth and height of the windowaThe total available areaThe parts already in useWidth of the rectangle to place Height of the rectangle to placebcxy M N O P Q R S T U V T U M N O P Q R S V$WdXYZ[ Mefgh N O P Q R S T Ui V\]jklmnopq^rstuvw_`abcxy (c) Lukas MaiBSD3-style (see LICENSE)<l.mai@web.de>unstable unportableNone \JResize 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 unportableNone9; ^vManipulate 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. aOnly reposition the window. bXGiven an interpolation function, implement an appropriate window manipulation action.z ^ _ ` a b{|}~ ^ _ ` a b b ^ _ ` az ^ _ ` a b{|}~6677(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. cKFind and view an empty workspace. Do nothing if all workspaces are in use. d_Tag current window to an empty workspace and view it. Do nothing if all workspaces are in use. eTSend current window to an empty workspace. Do nothing if all workspaces are in use. c d e c d e c d e c d e$(c) David Roundy <droundy@darcs.net>BSD3-style (see LICENSE)noneunstable unportableNone0eInternal dynamic project state that stores a mapping between workspace indexes and workspace tags. fQThe workspace index is mapped to a workspace tag by the user and can be updated. g'Set the index of the current workspace. oAdd 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. pQSame as addWorkspace, but adds the workspace to the end of the list of workspaces qAdds 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. raPrompt for the name of a new workspace, add it if it does not already exist, and switch to it. sPrompt 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. tAdd 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. usAdd a new hidden workspace with the given name, or do nothing if a workspace with the given name already exists. v7Remove the current workspace if it contains no windows. wRemove the current workspace. x=Remove workspace with specific tag if it contains no windows. y#Remove workspace with specific tag. zRemove 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. {Like  zM 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. f g h i j k l m n o p q r s t u v w x y z { | f g h i j k l m n o p q r s t u v w x y z { o r p s q w y v x z { u t i n j k l m g h f f g h i j k l m n o p q r s t u v w x y z { |5(c) Konstantin Sobolev <konstantin.sobolev@gmail.com>BSD-style (see LICENSE)1Konstantin Sobolev <konstantin.sobolev@gmail.com>unstable unportableNoneM Named scratchpads configuration %Single named scratchpad configuration Scratchpad name Command used to run application )Query to find already running application OManage hook called for application window, use it to define the placement. See  nonFloating, defaultFloating and customFloating .Manage hook that makes the window non-floating EManage 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) Brandon S Allbery <allbery.b@gmail.com>BSD-style (see LICENSE)'Brandon S Allbery <allbery.b@gmail.com>unstable unportableNone0 - to initialize scratchpad activation tracking 3, startupHook = ... <+> nspTrackStartup scratchpadsIf you kickstart the , do it after  ! V, to track scratchpad activation/deactivation 4, handleEventHook = ... <+> nspTrackHook scratchpads = for scratchpads' state, using Unicode characters as "icons". E, ppExtras = [..., nspActive' iconChars showActive showInactive, ...]  with String-s (and no defaults) C, ppExtras = [..., nspActive iconStrs showActive showInactive, ...] 3Variant of the above getting the String-s from the  s       (c) Braden Shepherdson 2008BSD-style (as xmonad)Braden.Shepherdson@gmail.comunstable unportableNone DAction 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 terminal Name of the terminal program 5Command to spawn a program with resource "scratchpad"  User-specified screen rectangle.     (c) Brent Yorgey 2009BSD-style (see LICENSE)<byorgey@gmail.com> experimental unportableNone0 Add 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. .Add a new workspace group with the given name. +Give a name to the current workspace group. Delete 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. -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. %Prompt for a workspace group to view. 2Prompt for a name for the current workspace group. 'Prompt for a workspace group to forget.        (c) Peter J. JonesBSD3-style (see LICENSE) Peter Jones <pjones@devalot.com>unstable not portableNone0Internal project state. 4Details about a workspace that represents a project. Workspace 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).1Modify the current project using a pure function. Switch to the given project. }Prompt for a project name and then switch to it. Automatically creates a project if a new name is returned from the prompt. 8Shift the currently focused window to the given project. YPrompts for a project name and then shifts the currently focused window to that project. Rename the current project. :Change the working directory used for the current project.NOTE: This will only affect new processed started in this project. Existing processes will maintain the previous working directory.Prompt for a project name. Activate 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.#               (c) Miikka Koskinen 2007BSD3-style (see LICENSE)arcatan@kapsi.fistable unportableNone Swap 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) Wirt Wolff <wirtwolff@gmail.com>BSD3-style (see LICENSE) Wirt Wolff <wirtwolff@gmail.com>unstable unportableNone Cycle 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. z(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 unportableNone 8What 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 workspaces *cycle through empty non-visible workspaces cycle through all workspaces cycle 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 predicate Switch 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"]) :` a workspace, or if already there, view the previously displayed workspace ala weechat. Change  greedyView to  toggleOrView& in your workspace bindings as in the  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.greedyView List difference (\\b) for workspaces and tags. Removes workspaces matching listed tags from the given workspace list.RIgnoring the skips, find the best candidate for the last viewed hidden workspace.4Convert 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 screen View prev screen Get the r 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'      :;< :;<       (c) Brent Yorgey 2009BSD-style (see LICENSE)<byorgey@gmail.com> experimental unportableNone0 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 q of the workspace itself.      "(c) Devin Mullins <me@twifkak.com>BSD3-style (see LICENSE)Devin Mullins <me@twifkak.com>unstable unportableNone KSwaps 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 unportableNone0Workspace names container. FReturns a lookup function that maps workspace tags to workspace names. +Returns a function that maps workspace tag "t" to "t:name"% for workspaces with a name, and to "t" otherwise. @Gets the name of a workspace, if set, otherwise returns nothing. ,Gets the name of the current workspace. See  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 0@ excepted it acts on the workspace name provided by this module.    (c) Roman CheplyakaBSD3-style (see LICENSE)"Roman Cheplyaka <roma@ro-che.info>unstable unportableNone oIf the current layout is in the list, cycle to the next layout. Otherwise, apply the first layout from list.    ((c) Michal Janeczek <janeczek@gmail.com>BSD3-style (see LICENSE)$Michal Janeczek <janeczek@gmail.com>unstable unportableNone Cycle 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.      g(c) David Roundy <droundy@darcs.net>, Ivan Veselov <veselov@gmail.com>, Lanny Ripple <lan3ny@gmail.com>BSD3-style (see LICENSE)???unstable unportableNoneM '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.)                   (c) Spencer Janssen 2007BSD3-style (see LICENSE)NoneMAThe xmonad key bindings. Add, modify or remove key bindings here.F(The comment formatting character is used when generating the manpage)      None    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 unportableNone ]A Map where keys are pretty printable window names and values are Xmonad windows identifier. %Deprecated. Use windowPrompt instead. %Deprecated. Use windowPrompt instead. %Deprecated. Use windowPrompt instead. 'A helper to get the map of all windows. <A helper to get the map of windows of the current workspace. Pops open a prompt with window titles belonging to winmap. Choose one, and an action is applied on the selected window, according to WindowPrompt.ABrings a copy of the specified window into the current workspace.                                                  (c) Dougal StantonBSD3-style (see LICENSE)<dougal@dougalstanton.net>stable unportableNone @Resize (floating) window with optional aspect ratio constraints.    (c) David Glasser 2007BSD3glasser@mit.edustableportableNone  Create a    from String,s to xmonad actions from a list of pairs. DGenerate a list of commands to switch to/send windows to workspaces. :Generate a list of commands dealing with multiple screens. !$A nice pre-defined list of commands. "qGiven a list of command/action pairs, prompt the user to choose a command and return the corresponding action. #!Given the name of a command from  !Y, return the corresponding action (or the null action if the command is not found).   ! " #   ! " #  " #  !   ! " #=(c) Peter Olson 2013 and Andrea Rossato and David Roundy 2007BSD-style (see xmonad/LICENSE)polson2@hawk.iit.eduunstable unportableNone $Executes 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 1 %TserverModeEventHook' additionally takes an action to generate the list of commands. &_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 prompt '=Additionally takes an action to generate the list of commands (Listens 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" $ % & ' ( $ % & ' ( $ % & ' ( $ % & ' ((C) 2007 Andrea RossatoBSD3andrea.rossato@unibz.itunstable unportableNone ++An xmonad prompt with a custom command list ) * + , ) * + * + ) ) * + ,(c) Andrea Rossato 2007BSD3-style (see LICENSE)andrea.rossato@unibz.itstableportableNone - - - -(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 portableNone: / / / /+(c) 2014 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNone 0FSchedule a task to take place after the current dragging is completed. 1Take 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. 2\Take an action if the current dragging is completed within a certain time (in milliseconds.) 0The task to schedule. 1<The action to take if the dragging turned out to be a click. 2KMaximum 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. 0 1 2 0 1 2 0 1 2+(c) 2009 Anders Engstrom <ankaan@gmail.com>BSD3-style (see LICENSE)"Anders Engstrom <ankaan@gmail.com>unstable unportableNone 3Resize 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. 4yResize the window by each edge independently to snap against the closest part of other windows or the edge of the screen. 5zMove a window by both axises in any direction to snap against the closest part of other windows or the edge of the screen. 6iMove a window in the specified direction until it snaps against another window or the edge of the screen. 7dGrow the specified edge of a window until it snaps against another window or the edge of the screen. 8fShrink the specified edge of a window until it snaps against another window or the edge of the screen. 34How 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. 4The 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. 5rThe 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. 6%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. 7 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. 8"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.58796 0 1 2 3 4 5 6 7 856789 6 7 8 5 4 3 0 1 2 3 4 5 6 7 8 !"#"$%&'()*+,-./-.0123 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 [\]^_`abcdefghijklmmnopqrstuvwxyz{|}~/0      !"#$%&'()*+,- . / 0 1 2 3 4!5"6"7#89:;<=>?@ABCDEFGHIJKL'MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$$$%%%&&&&''''((((()****++++++++++++,,,,----...//00001111122222222222333333333444445555566666666666666666666777778888899999999999 9 9 : : ::::::;;;;;<<<<<===== ===!="=#=$=%=&='=(=)=*=+=,=-=.=/=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@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@aAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqBrBsBtBuBvBwBxCyCyCzC{C|C}C~CCCCCCCCCCDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJKKKKKKKKLLLLLLLLLL L L L L LLLLLLMMMMMMMMMMMMM M!M"M#N$N%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5P6P7P8P9P:P;P<P=Q>Q?Q@QAQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQURVRWRXRYRZR[R\R]R^R_R`RaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}T~TTTTUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYZZZZZZ[[[[[[[[[[:[[[[[[[[[[[[[[[\\\\\\\\]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&_'_'_(_)_*_+_,_-__._/_`___0_0_1_2_3___4_5_6_7_8______9_:_;_<``````8``a=a=a>a?a@aAaBaCaDaEaFbGbHbIbJbKbLbMbNbObPbQbRbScTcTcUcVcWdXdddYdYdZd[d\d]d^d_d`eaebecedeeefegeheiejekflfmfnfofpfqfrfsftfugvgwgxgygzg{g|g}g~ggggghhhhhiiiiiiiijjjjjjjjjjjkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllmnnnnnoooooppppppppppqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrssssssssssss s s s s sssssssssssssssssss s!s"s#s$s%s&s's(s)s*s+t,t-t.t/t0t1t2t3t4t5t6t7t8t9t:u;u<u=u>u?vvv@vAvBwCwDwEwFxGxHxIxJxKyLzMzMzNzOzPzPzQzRzSzTzUzVzWzXzYzZz[z\z]z^z_z`{a{a{b{b{c{c{d{e{e{f{f{g{h{i{i{j{k{l{m{n{o{p{q{r{s{t{{u{u{v{w{x{y{z{{{|{}{~{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}~~~~~~      !"#$%&'()*+,-./0123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHHIJKLM5NOPQRSTUVWXYZ[\]^__`abcdefghijklm+nopqrstuvwxyz{|}~    1                         ! " # $ % & ' ( ( ) * + , , - . / 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 Q R S T U V W X Y Z [ \u ] ^ _ ` 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 { | } ~             {  w                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 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 q 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 L M N O P Q R S S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k k l m n o p q r s t u v w A B x y E F z : { | } ~                               S     L                             ! ! " # $ % & ' ( ) * + , - . / 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 I S T U V W X Y Z [ \ ] ^ _ I ` S 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 { | } ~       12  12 :                % %    12     12 12                         ! ! ! ! ! ! !x! !w! ! ! " " "                                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C9 ] 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 { | } ~  $ $%    && & '' ' (* * * * * * * * * * ** * + ++ + ++ , , ,-- - - - - .. . . . . . . . . . . . . / / / / / / 23 3 3 4 5 6 6 66 6 6 6 6 6 6 6 6 8 8 1  1  9 9 9 : : : ; ;; < < < < < < < < < < = = == = = = = = = = = = = = = = > >3> > > > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ?-? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @ @ @@@T@@@@@@@@ @@ @ @ @ AbA AAAAAAAAAA BrB1212121212DDDDD D!D!D"D#D$D%DD&D AD'D(D)E*E+E,E-EE.E/E0E1E2E3E4F5F6F7F8F8FGGH9H':';'<=>?@IIIAIBKCKDKEKKFLGLLHLILJM OKOLOMONPOPOPPPPPQPRPSPTPUQ>Q?Q@QBQVRVRWRWRXRYSZS[S\S]S^S_S`SaSbScSdSeSfSgThTiTjU UkVlV VVmV VnVoVpVqVrVsVtVuV*VvVwVxVyWWzWzW{W|X}X~XXXXXXXXXXXXXXXXXXXXXYYYYYYYYY[[[\\\\\]]]]]]^^^^^^^^^^^^^^^^^^^^]^^^^^____________aaa>bLbbbbb1 c1^dddddddddddeebfogggyggg}ggghiiiiiiiijjjjjkkkllllllnnnnooo*oppppp*ppqqqqqqqqqqrrrrrs s s s s s ssssssssss ss ssssssssswsxssssss s!s"s#s$s%s&s's(s)s*s+s,s-s.s/s0s1s2s3s4s5s6s7s8s9s:s;s<s=s>s?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQs sRsSsTsUsVsWsXsYsZs[s\s]s^s_s`sasbscsds sesfsgshsitjtktltmtmtntotptqtrtstttutvtwtxttyttt,tzttu{u|u}u~uuu u;wwAwx12 x12xxyzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{  |  ||| ]|||||||||'||||||}}}}}}}}}}}}}}}}}}}}}} }h} } }}j*./`_1 1 1I    1  1   !"#$%12 1&'( f)*+,-./012123 44567789:;<=>?@ABCDEFGHIJAKLMNOPQRSSTUVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xtwy1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   +,11 i  1      12!" #$$%&''()*++,-../01122 3 45 6 789:;:< = > ? @ABACADAEAFAGAHAIAJAKALAM NOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaOb c d e f g h i j k l m n o p q r stutvtwtxtytzt{t| } ~    ==  OOOOOOOOOOOOOOO      ???     %%%%%%%%%%%                                                                                                               ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~           E                          ! " # $ % & ' ( ) * + , - . / 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 TUUVWXYYZ[\]^_`abcdefghllij klmnoopqrstuvvwxyz{{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABAC8D8E8F8G8H8I8J8K8L8M8N8OPQPRST%U%V%W%X%Y%Z%[%\%]S^S_ `'a'b'c'd=e=fghij k l m n o p?q?r?s?t?u v w x y z { | } ~                ::t           ------.-.-.-.1 111111111 111111111111 >11111111111111111111111111111111111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 121212121212121212121212121212121212121212121212121212121212121212 12 12 12 12 12121212 {121212121212121212!12121212121212 :12121212 12!12"12#12$12%12%12&12'12(12)12*12*12+12 ,-. /01213 <412 56789:;<=>?@ABCCDEFGHI JKLMNOPQRSTUVWXYZ[\]^ _ k`a b cdefghijklmnowpqrstuvwxtyz{|}~12 12 1 f g Qk11 S\Uwxve        !"#$%&'()*+,-,./012 3456 789:;<==>?@ABCD*xmonad-contrib-0.13-2TVAFkMkC3jDjnpLjeU9qIXMonad.Actions.TreeSelectXMonad.Util.PasteXMonad.Util.DzenXMonad.Util.RunXMonad.Actions.WorkspaceCursorsXMonad.Actions.SearchXMonad.Util.Loggers XMonad.PromptXMonad.Util.WindowStateXMonad.Hooks.ICCCMFocusXMonad.Util.WorkspaceCompareXMonad.Util.WindowPropertiesXMonad.Util.UngrabXMonad.Util.TypesXMonad.Util.TreeZipperXMonad.Util.TimerXMonad.Util.StringPropXMonad.Util.StackXMonad.Util.XSelectionXMonad.Util.ReplaceXMonad.Util.RemoteWindowsXMonad.Util.NoTaskbarXMonad.Util.NamedWindowsXMonad.Util.InvisibleXMonad.Util.FontXMonad.Util.ImageXMonad.Util.XUtilsXMonad.Util.ExtensibleStateXMonad.Util.PositionStoreXMonad.Util.SpawnNamedPipeXMonad.Util.SpawnOnceXMonad.Util.DmenuXMonad.Util.DebugWindowXMonad.Util.CustomKeysXMonad.Util.CursorXMonad.Prompt.AppendFileXMonad.Prompt.ConfirmPromptXMonad.Prompt.DirExecXMonad.Prompt.DirectoryXMonad.Prompt.InputXMonad.Prompt.EmailXMonad.Prompt.PassXMonad.Prompt.ShellXMonad.Prompt.AppLauncherXMonad.Prompt.ManXMonad.Prompt.SshXMonad.Prompt.UnicodeXMonad.Prompt.WorkspaceXMonad.Layout.TwoPaneXMonad.Layout.ToggleLayoutsXMonad.Layout.ThreeColumnsXMonad.Layout.StackTileXMonad.Layout.SquareXMonad.Layout.SpiralXMonad.Layout.SimplestXMonad.Layout.RoledexXMonad.Layout.ResizableTileXMonad.Layout.PerWorkspaceXMonad.Layout.PerScreenXMonad.Layout.OneBigXMonad.Layout.MultiToggleXMonad.Layout.MultiColumns XMonad.Layout.MouseResizableTileXMonad.Layout.MosaicAltXMonad.Layout.MosaicXMonad.Layout.LayoutScreensXMonad.Layout.LayoutModifierXMonad.Layout.LimitWindowsXMonad.Layout.MagnifierXMonad.Layout.MasterXMonad.Layout.MaximizeXMonad.Layout.MessageControlXMonad.Layout.NoBorders#XMonad.Layout.MultiToggle.InstancesXMonad.Layout.OnHostXMonad.Layout.ReflectXMonad.Layout.RenamedXMonad.Layout.NamedXMonad.Layout.ShowWNameXMonad.Layout.SortedLayoutXMonad.Layout.SpacingXMonad.Layout.TrackFloatingXMonad.Layout.WindowArranger XMonad.Layout.PositionStoreFloatXMonad.Layout.SimplestFloatXMonad.Layout.WindowNavigationXMonad.Layout.WorkspaceDirXMonad.Layout.LayoutBuilderXMonad.Layout.LayoutBuilderPXMonad.Layout.IfMaxXMonad.Layout.HintedTileXMonad.Layout.HintedGridXMonad.Layout.HiddenXMonad.Layout.GroupsXMonad.Layout.GridVariantsXMonad.Layout.GridXMonad.Layout.IMXMonad.Layout.GapsXMonad.Layout.FixedColumnXMonad.Layout.DwindleXMonad.Layout.Drawer XMonad.Layout.DraggingVisualizerXMonad.Layout.DragPaneXMonad.Layout.DishesXMonad.Layout.CrossXMonad.Layout.ComboPXMonad.Layout.ComboXMonad.Layout.LayoutCombinatorsXMonad.Prompt.LayoutXMonad.Layout.ColumnXMonad.Layout.CircleXMonad.Layout.CenteredMasterXMonad.Layout.BoringWindowsXMonad.Layout.Minimize"XMonad.Layout.BinarySpacePartitionXMonad.Layout.AvoidFloatsXMonad.Layout.AutoMasterXMonad.Layout.AccordionXMonad.Hooks.XPropManageXMonad.Hooks.WorkspaceHistoryXMonad.Hooks.WorkspaceByPosXMonad.Hooks.WallpaperSetterXMonad.Hooks.UrgencyHookXMonad.Layout.DecorationXMonad.Layout.BorderResizeXMonad.Layout.DwmStyleXMonad.Layout.LayoutHintsXMonad.Layout.ResizeScreenXMonad.Layout.SimpleDecoration XMonad.Layout.NoFrillsDecorationXMonad.Layout.TabBarDecorationXMonad.Layout.TabbedXMonad.Layout.SubLayoutsXMonad.Layout.ZoomRowXMonad.Util.ThemesXMonad.Prompt.ThemeXMonad.Hooks.ToggleHookXMonad.Hooks.SetWMNameXMonad.Hooks.ScriptXMonad.Hooks.ScreenCornersXMonad.Hooks.RestoreMinimizedXMonad.Hooks.MinimizeXMonad.Hooks.ManageHelpersXMonad.Layout.FullscreenXMonad.Hooks.ManageDocksXMonad.Hooks.PositionStoreHooksXMonad.Hooks.InsertPositionXMonad.Hooks.FloatNextXMonad.Hooks.FadeInactiveXMonad.Hooks.FadeWindowsXMonad.Layout.MonitorXMonad.Hooks.EwmhDesktopsXMonad.Hooks.DynamicPropertyXMonad.Hooks.DynamicLog XMonad.Layout.IndependentScreensXMonad.Hooks.DynamicHooksXMonad.Hooks.DynamicBarsXMonad.Hooks.DebugStackXMonad.Hooks.DebugKeyEventsXMonad.Hooks.DebugEvents"XMonad.Hooks.CurrentWorkspaceOnTopXMonad.Config.DesktopXMonad.Config.GnomeXMonad.Config.KdeXMonad.Config.MateXMonad.Config.XfceXMonad.Config.BepoXMonad.Config.AzertyXMonad.Actions.WithAllXMonad.Layout.StoppableXMonad.Actions.WindowNavigationXMonad.Actions.WindowGoXMonad.Prompt.RunOrRaiseXMonad.Actions.WindowBringerXMonad.Actions.WarpXMonad.Actions.UpdatePointerXMonad.Layout.MagicFocusXMonad.Actions.UpdateFocusXMonad.Actions.TopicSpaceXMonad.Actions.TagWindowsXMonad.Actions.SubmapXMonad.Util.NamedActionsXMonad.Util.EZConfigXMonad.Config.PrimeXMonad.Hooks.ManageDebugXMonad.Actions.SpawnOnXMonad.Config.DmwitXMonad.Actions.SimpleDateXMonad.Actions.ShowTextXMonad.Actions.RotSlavesXMonad.Actions.RandomBackgroundXMonad.Actions.PromoteXMonad.Actions.PlaneXMonad.Actions.PhysicalScreensXMonad.Actions.PerWorkspaceKeysXMonad.Actions.OnScreenXMonad.Actions.WorkscreenXMonad.Actions.NoBordersXMonad.Actions.Navigation2DXMonad.Actions.MouseResizeXMonad.Layout.SimpleFloatXMonad.Layout.DecorationMadnessXMonad.Actions.MouseGesturesXMonad.Actions.MessageFeedbackXMonad.Layout.Groups.HelpersXMonad.Layout.Groups.ExamplesXMonad.Layout.Groups.WmiiXMonad.Actions.LinkWorkspacesXMonad.Actions.LauncherXMonad.Actions.KeyRemapXMonad.Actions.GroupNavigationXMonad.Actions.GridSelectXMonad.Actions.WindowMenuXMonad.Layout.DecorationAddonsXMonad.Layout.ButtonDecoration#XMonad.Layout.ImageButtonDecoration&XMonad.Layout.WindowSwitcherDecorationXMonad.Actions.FocusNthXMonad.Actions.FloatKeysXMonad.Hooks.PlaceXMonad.Actions.FlexibleResize!XMonad.Actions.FlexibleManipulate!XMonad.Actions.FindEmptyWorkspace XMonad.Actions.DynamicWorkspacesXMonad.Util.NamedScratchpad#XMonad.Util.Loggers.NamedScratchpadXMonad.Util.Scratchpad%XMonad.Actions.DynamicWorkspaceGroupsXMonad.Actions.DynamicProjectsXMonad.Actions.DwmPromoteXMonad.Actions.DeManageXMonad.Actions.CycleWindowsXMonad.Actions.CycleWS$XMonad.Actions.DynamicWorkspaceOrderXMonad.Actions.SwapWorkspacesXMonad.Actions.WorkspaceNames#XMonad.Actions.CycleSelectedLayoutsXMonad.Actions.CycleRecentWSXMonad.Actions.CopyWindowXMonad.Config.DroundyXMonad.Config.SjanssenXMonad.Prompt.Window XMonad.Actions.ConstrainedResizeXMonad.Actions.CommandsXMonad.Hooks.ServerModeXMonad.Prompt.XMonadXMonad.Config.ArossatoXMonad.Actions.BluetileCommandsXMonad.Config.BluetileXMonad.Actions.AfterDragXMonad.Actions.FloatSnappprWindowSetXinerama XMonad.ConfigdefInput System.PosixputEnv XMonad.UtilRunXMonad.Layout.Layout Accordion Data.ListelemXMonad.Doc.ExtendingXMonad.Doc.DevelopingXMonad.Doc.Configuring XMonad.DocData.MapMapmkKeyMapEZConfigXMonad.Actions.SinkAllXMonad.StackSetfocusUp focusDownmkKeymapXMonad.Operations sendMessageswapToswapWithCurrentworkspacePromptX11-1.8-H7TCtDiQUkcEpMOdDnEd2EGraphics.X11.Xlib.TypesPixelGraphics.X11.Types noModMaskbase Control.Monad>=>GHC.IO.Handle.Text hPutStrLnhPutStr Data.FoldabletoList Data.OldList isPrefixOf Data.Functor<$>1data-default-class-0.1.2.0-FYQpjIylblBDctdkHAFeXAData.Default.Class mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.Monad.State.Classputget"xmonad-0.13-JmUM88bw998EJYJzAZ6WoG XMonad.Coreatom_WM_TAKE_FOCUS WorkspaceSortWorkspaceCompare getWsIndex getWsComparegetWsCompareByTaggetXineramaWsComparegetXineramaPhysicalWsComparemkWsSortgetSortByIndex getSortByTaggetSortByXineramaRulegetSortByXineramaPhysicalRule StateQuerygetQuery runStateQuery catchQuery$fMonadStateMaybeStateQuery$fMonadStateQuery$fMonadIOStateQuery$fApplicativeStateQuery$fFunctorStateQueryPropertyTitle ClassNameResourceRoleMachineAndOrNotConst hasPropertyfocusedHasPropertyallWithPropertypropertyToQuery getProp32 getProp32s$fReadProperty$fShowPropertyunGrab Direction2DUDRL Direction1DNextPrev$fEqDirection1D$fReadDirection1D$fShowDirection1D$fEqDirection2D$fReadDirection2D$fShowDirection2D$fOrdDirection2D$fEnumDirection2D$fBoundedDirection2D TreeZipper tz_current tz_beforetz_after tz_parentscursor fromForesttoForest getSubForestrootNodeparentchildren nextChild previousChild nodeDepth nodeIndex followPath findChildisLeafisRootisLastisFirstTimerId startTimer handleTimer StringProp setStringProp getStringPropgetStringListPropsetStringListPropZipperemptyZ singletonZ fromIndextoIndexfromTagstoTags insertUpZ insertDownZswapUpZ swapDownZ swapMasterZfocusUpZ focusDownZ focusMasterZ getFocusZgetIZsortZsortByZmapZmapZ_mapZMmapZM_ onFocusedZ onFocusedZMonIndexZ onIndexZMfilterZfilterZ_deleteFocusedZ deleteIndexZfoldrZfoldlZfoldrZ_foldlZ_elemZgetImapEmapE_mapEMmapEM_fromEtagByrunProcessWithInputrunProcessWithInputAndWaitseconds safeSpawn safeSpawnProg unsafeSpawn runInTerm safeRunInTerm spawnPipe getSelectionpromptSelectionsafePromptSelectiontransformPromptSelectiontransformSafePromptSelectionreplace isLocalWindow manageRemote manageRemoteG noTaskbar markNoTaskbar NamedWindowgetNameunNamewithNamedWindow$fShowNamedWindow$fOrdNamedWindow$fEqNamedWindow InvisibleI whenIJust fromIMaybe$fShowInvisible$fReadInvisible$fMonadInvisible$fApplicativeInvisible$fFunctorInvisibleAlign AlignCenter AlignRight AlignLeftAlignRightOffset XMonadFontCoreUtf8Xft stringToPixel pixelToString initCoreFontreleaseCoreFont initUtf8FontreleaseUtf8FontinitXMF releaseXMF textWidthXMFtextExtentsXMFstringPositionprintStringXMFfi $fShowAlign $fReadAlign Placement OffsetLeft OffsetRight CenterLeft CenterRight iconPositiondrawIcon$fShowPlacement$fReadPlacement averagePixelscreateNewWindow showWindow showWindows hideWindow hideWindows deleteWindow deleteWindows paintWindow paintAndWritepaintTextAndIconsmodifygetsremovemodified PositionStore getPosStoremodifyPosStoreposStoreInsertposStoreRemove posStoreQuery posStoreMove$fExtensionClassPositionStore$fReadPosStoreRectangle$fShowPosStoreRectangle$fReadPositionStore$fShowPositionStorespawnNamedPipe getNamedPipe$fExtensionClassNamedPipes$fShowNamedPipes spawnOnce$fExtensionClassSpawnOnce$fReadSpawnOnce$fShowSpawnOnce DzenConfig dzenConfigchomptimeoutaddArgsxScreenonCurrxyfontvCenterhCentercenterdzen dzenWithArgs dzenScreen dmenuXineramadmenumenumenuArgsmenuMap menuMapArgsdmenuMap debugWindow customKeyscustomKeysFromsetDefaultCursorHistoryMatches XPPositionTopBottom CenteredAt xpCenterYxpWidthXPrompt showXPromptnextCompletioncommandToCompletecompletionToCommandcompletionFunction modeActionXPMode ComplFunctionXPTypeXPTXPConfigXPCbgColorfgColorfgHLightbgHLight borderColorpromptBorderWidthpositionalwaysHighlightheight maxComplRows historySize historyFilter promptKeymap completionKey changeModeKey defaultText autoCompleteshowCompletionOnTabsearchPredicateXPStateXPdefaultXPConfig greenXPConfig amberXPConfigsetInputgetInputmkXPromptWithReturn mkXPromptmkXPromptWithModesdefaultXPKeymapdefaultXPKeymap'emacsLikeXPKeymapemacsLikeXPKeymap' setSuccesssetDonequit killBefore killAfterkillWord killWord' endOfLine startOfLine pasteString deleteString moveCursormoveWord moveWord' moveHistory fillDrawablemkUnmanagedWindowmkComplFunFromListmkComplFunFromList'getNextOfLastWordgetNextCompletionsplitInSubListsAt getLastWord skipLastWord breakAtSpacehistoryCompletionhistoryCompletionPuniqSortdeleteAllDuplicatesdeleteConsecutive initMatcheshistoryUpMatchinghistoryDownMatching$fDefaultXPConfig$fXPromptXPType $fShowXPType$fShowXPPosition$fReadXPPosition AppendFileappendFilePrompt$fXPromptAppendFile EnterPrompt confirmPrompt$fXPromptEnterPromptDirExec dirExecPromptdirExecPromptNamed$fXPromptDirExecDirdirectoryPromptdirectoryMultipleModes $fXPromptDir InputPrompt inputPromptinputPromptWithCompl?+$fXPromptInputPrompt emailPrompt passPromptpassGeneratePromptpassRemovePrompt $fXPromptPassShell shellPromptprompt safePrompt unsafePrompt getShellCompl getCommandssplit getBrowser getEditor$fXPromptShell Application AppPrompt launchApp$fXPromptAppPromptMan manPromptgetCommandOutput $fXPromptManSsh sshPrompt $fXPromptSsh unicodePrompt$fXPromptUnicodeWor $fXPromptWorTwoPane$fLayoutClassTwoPanea $fShowTwoPane $fReadTwoPane ToggleLayoutToggle ToggleLayouts toggleLayouts$fLayoutClassToggleLayoutsa$fMessageToggleLayout$fReadToggleLayouts$fShowToggleLayouts$fReadToggleLayout$fShowToggleLayoutThreeCol ThreeColMidthreeColNMaster threeColDelta threeColFrac$fLayoutClassThreeCola$fShowThreeCol$fReadThreeCol StackTile$fLayoutClassStackTilea$fShowStackTile$fReadStackTileSquare$fLayoutClassSquarea $fReadSquare $fShowSquare SpiralWithDir DirectionEastSouthWestNorthRotationCWCCWspiral spiralWithDir$fLayoutClassSpiralWithDira$fReadRotation$fShowRotation $fEqDirection$fEnumDirection$fReadDirection$fShowDirection$fReadSpiralWithDir$fShowSpiralWithDirSimplest$fLayoutClassSimplesta$fShowSimplest$fReadSimplestRoledex$fLayoutClassRoledexWord64 $fShowRoledex $fReadRoledex ResizableTall_nmaster_delta_frac_slaves MirrorResize MirrorShrink MirrorExpand$fLayoutClassResizableTalla$fMessageMirrorResize$fShowResizableTall$fReadResizableTall PerWorkspace onWorkspace onWorkspaces modWorkspace modWorkspaces$fLayoutClassPerWorkspacea$fReadPerWorkspace$fShowPerWorkspace PerScreenifWider$fLayoutClassPerScreena$fReadPerScreen$fShowPerScreenOneBig$fLayoutClassOneBiga $fReadOneBig $fShowOneBigHListHConsEOT MultiToggle Transformer transformmkToggle mkToggle1??single$fLayoutClassMultiTogglea $fHListHConsw $fHListEOTw$fShowMultiToggle$fReadMultiToggle$fMessageToggle$fReadMultiToggleS$fShowMultiToggleS $fReadEOT $fShowEOT $fReadHCons $fShowHConsMultiColmultiCol$fLayoutClassMultiCola$fShowMultiCol$fReadMultiCol $fEqMultiColMouseResizableTilenmaster masterFrac slaveFrac fracIncrement draggerType isMirrored DraggerType FixedDraggerBordersDraggergapWidth draggerWidth MRTMessage ShrinkSlave ExpandSlavemouseResizableTilemouseResizableTileMirrored%$fLayoutClassMouseResizableTileWord64$fMessageMRTMessage$fShowDraggerInfo$fReadDraggerInfo$fShowDraggerType$fReadDraggerType$fShowMouseResizableTile$fReadMouseResizableTile MosaicAltParamsParamHandleWindowAltshrinkWindowAltexpandWindowAlt tallWindowAlt wideWindowAltresetAlt$fLayoutClassMosaicAltWord64$fMessageHandleWindowAlt$fEqHandleWindowAlt $fShowParam $fReadParam$fShowMosaicAlt$fReadMosaicAltMosaicAspectTallerWiderResetSlopeModmosaic changeMaster changeFocused $fMonoidTree $fFunctorTree$fFoldableTree$fLayoutClassMosaica$fMessageAspect $fReadMosaic $fShowMosaic FixedLayout layoutScreenslayoutSplitScreen fixedLayout$fLayoutClassFixedLayouta$fReadFixedLayout$fShowFixedLayoutModifiedLayoutLayoutModifier modifyLayoutmodifyLayoutWithUpdate handleMesshandleMessOrMaybeModifyItpureMess redoLayout pureModifierhookunhookmodifierDescriptionmodifyDescription$fLayoutClassModifiedLayouta$fReadModifiedLayout$fShowModifiedLayout Selection LimitWindows increaseLimit decreaseLimitsetLimit limitWindows limitSlice limitSelect$fLayoutModifierSelectiona$fLayoutModifierLimitWindowsa$fMessageLimitChange$fReadSliceStyle$fShowSliceStyle$fReadLimitWindows$fShowLimitWindows$fReadSelection$fShowSelection $fEqSelection Magnifier MagnifyMsg MagnifyMore MagnifyLessToggleOn ToggleOff magnifier magnifiercz magnifier' magnifierOff magnifiercz'maximizeVertical$fLayoutModifierMagnifierWord64$fMessageMagnifyMsg $fReadToggle $fShowToggle$fReadMagnifyMaster$fShowMagnifyMaster$fReadMagnifier$fShowMagnifier AddMaster multimasteredmastered fixMastered$fLayoutModifierFixMasterWord64$fLayoutModifierAddMasterWord64$fShowAddMaster$fReadAddMaster$fShowFixMaster$fReadFixMasterMaximizeRestoreMaximizemaximizemaximizeWithPaddingmaximizeRestore$fLayoutModifierMaximizeWord64$fMessageMaximizeRestore$fReadMaximize$fShowMaximize$fEqMaximizeRestoreEscapedMessageEscapeUnEscapeIgnoreescapeunEscapeignore$fMessageEscapedMessage$fLayoutModifierUnEscapea$fLayoutClassIgnorew $fShowIgnore $fReadIgnore$fShowUnEscape$fReadUnEscapeWithUnion Difference Intersection AmbiguityCombine OnlyFloatNever EmptyScreenOtherIndicatedScreen SetsAmbiguoushiddensConfigurableBorder SmartBorder WithBorder noBorders withBorder smartBorders lessBorders$fSetsAmbiguousAmbiguity($fLayoutModifierConfigurableBorderWord64 $fLayoutModifierWithBorderWord64$fReadWithBorder$fShowWithBorder$fReadConfigurableBorder$fShowConfigurableBorder $fReadWith $fShowWith$fReadAmbiguity$fShowAmbiguityStdTransformersFULLNBFULLMIRROR NOBORDERS SMARTBORDERS"$fTransformerStdTransformersWord64$fReadStdTransformers$fShowStdTransformers$fEqStdTransformersOnHostonHostonHostsmodHostmodHosts$fLayoutClassOnHosta $fReadOnHost $fShowOnHostREFLECTYREFLECTXReflect reflectHoriz reflectVert$fTransformerREFLECTYWord64$fTransformerREFLECTXWord64$fLayoutModifierReflecta$fReadReflectDir$fShowReflectDir $fShowReflect $fReadReflect$fReadREFLECTX$fShowREFLECTX $fEqREFLECTX$fReadREFLECTY$fShowREFLECTY $fEqREFLECTYRenameCutLeftCutRightAppendPrepend CutWordsLeft CutWordsRight AppendWords PrependWordsReplaceChainrenamed$fLayoutModifierRenamea $fShowRename $fReadRename $fEqRenamenamednameTail SWNConfigSWNCswn_font swn_bgcolor swn_colorswn_fade ShowWName showWName showWName'defaultSWNConfig$fLayoutModifierShowWNamea$fDefaultSWNConfig$fReadSWNConfig$fShowSWNConfig$fReadShowWName$fShowShowWNamesorted"$fLayoutModifierSortedLayoutWord64$fOrdWindowDescriptor$fEqWindowDescriptor$fShowWindowDescriptor$fReadWindowDescriptor$fShowSortedLayout$fReadSortedLayoutSmartSpacingWithEdge SmartSpacingSpacingWithEdge ModifySpacingSpacingspacing setSpacing incSpacingspacingWithEdge smartSpacingsmartSpacingWithEdge%$fLayoutModifierSmartSpacingWithEdgea$fLayoutModifierSmartSpacinga $fLayoutModifierSpacingWithEdgea$fLayoutModifierSpacinga$fMessageModifySpacing $fShowSpacing $fReadSpacing$fShowSpacingWithEdge$fReadSpacingWithEdge$fShowSmartSpacing$fReadSmartSpacing$fShowSmartSpacingWithEdge$fReadSmartSpacingWithEdgeUseTransientFor TrackFloatinguseTransientFor trackFloating%$fLayoutModifierUseTransientForWord64#$fLayoutModifierTrackFloatingWord64$fReadTrackFloating$fShowTrackFloating$fEqTrackFloating$fReadUseTransientFor$fShowUseTransientFor$fEqUseTransientForWindowArrangerWindowArrangerMsg DeArrangeArrange IncreaseLeft IncreaseRight IncreaseUp IncreaseDown DecreaseLeft DecreaseRight DecreaseUp DecreaseDownMoveLeft MoveRightMoveUpMoveDown SetGeometry windowArrangewindowArrangeAll listFromListmemberFromListdiff$fLayoutModifierWindowArrangera$fMessageWindowArrangerMsg$fReadArrangedWindow$fShowArrangedWindow$fReadWindowArranger$fShowWindowArrangerPositionStoreFloatpositionStoreFloat%$fLayoutClassPositionStoreFloatWord64$fShowPositionStoreFloat$fReadPositionStoreFloat SimplestFloat simplestFloat $fLayoutClassSimplestFloatWord64$fShowSimplestFloat$fReadSimplestFloatWindowNavigationWNConfigNavigateGoSwapMoveApplyMoveWindowToWindownoNavigateBorders navigateColornavigateBrightnessdefaultWNConfigwindowNavigationconfigurableNavigation&$fLayoutModifierWindowNavigationWord64$fDefaultWNConfig$fMessageNavigate$fMessageMoveWindowToWindow$fReadMoveWindowToWindow$fShowMoveWindowToWindow$fShowWNConfig$fReadWNConfig$fReadWindowNavigation$fShowWindowNavigation WorkspaceDir workspaceDir changeDir"$fLayoutModifierWorkspaceDirWord64$fMessageChdir$fReadWorkspaceDir$fShowWorkspaceDirSubBox SubMeasureAbsRel IncLayoutNLayoutNLayoutBProxy Predicate alwaysTruecheckPredicatelayoutNlayoutRlayoutP layoutAllabsBoxrelBox$fLayoutClassLayoutBa$fMessageIncLayoutN$fPredicatePropertyWord64$fPredicate()a $fShowLimit $fReadLimit$fShowSubMeasure$fReadSubMeasure $fShowSubBox $fReadSubBox $fShowLayoutB $fReadLayoutBLayoutP$fLayoutClassLayoutPw $fShowLayoutP $fReadLayoutPIfMaxifMax$fLayoutClassIfMaxWord64 $fReadIfMax $fShowIfMax AlignmentTopLeftCenter BottomRight OrientationWideTall HintedTiledeltafrac alignment orientation$fLayoutClassHintedTileWord64$fShowOrientation$fReadOrientation$fEqOrientation$fOrdOrientation$fShowAlignment$fReadAlignment $fEqAlignment$fOrdAlignment$fShowHintedTile$fReadHintedTileGrid GridRatio defaultRatioarrange$fLayoutClassGridWord64 $fReadGrid $fShowGrid HiddenMsg HideWindowPopNewestHiddenWindowPopOldestHiddenWindow hiddenWindowspopOldestHiddenWindowpopNewestHiddenWindow#$fLayoutModifierHiddenWindowsWord64$fMessageHiddenMsg$fShowHiddenWindows$fReadHiddenWindows $fEqHiddenMsg ModifySpec GroupsMessage ToEnclosingToGroup ToFocusedToAllRefocusModifyGroupsGroupGgLayoutgZipperWithIDgroupsameIDonLayoutonZipperswapUpswapDown swapMaster swapGroupUp swapGroupDownswapGroupMaster focusMaster focusGroupUpfocusGroupDownfocusGroupMastermoveToNewGroupUpmoveToNewGroupDown moveToGroupUpmoveToGroupDown splitGroup$fLayoutClassGroupsWord64$fMessageGroupsMessage$fShowGroupsMessage$fLayoutClassWithIDa $fEqWithID$fEqUniq $fShowUniq $fReadUniq $fShowWithID $fReadWithID $fShowGroup $fReadGroup $fEqGroup $fReadGroups $fShowGroupsTallGridChangeMasterGridGeom IncMasterRows IncMasterCols SetMasterRows SetMasterColsSetMasterFractionTB SplitGridChangeGridGeom SetGridAspectChangeGridAspect$fLayoutClassTallGrida$fMessageChangeMasterGridGeom$fLayoutClassSplitGrida$fMessageChangeGridGeom$fLayoutClassGrida$fReadSplitGrid$fShowSplitGrid$fReadTallGrid$fShowTallGridIM AddRosterwithIMgridIM$fLayoutClassIMWord64$fLayoutModifierAddRosterWord64$fReadAddRoster$fShowAddRoster$fReadIM$fShowIM GapMessage ToggleGaps ToggleGapIncGapDecGapGapsGapSpecgapsgaps'$fLayoutModifierGapsa$fMessageGapMessage $fShowGaps $fReadGaps FixedColumn$fLayoutClassFixedColumnWord64$fReadFixedColumn$fShowFixedColumn ChiralityDwindleSpiralSqueeze$fLayoutClassDwindlea$fReadChirality$fShowChirality $fReadDwindle $fShowDwindle ReflectedDrawer simpleDrawerdraweronLeftonRightonToponBottom$fLayoutModifierDrawerWord64 $fReadDrawer $fShowDrawerDraggingVisualizerMsgDraggingWindowDraggingStoppedDraggingVisualizerdraggingVisualizer($fLayoutModifierDraggingVisualizerWord64$fMessageDraggingVisualizerMsg$fReadDraggingVisualizer$fShowDraggingVisualizer$fEqDraggingVisualizerMsgDragType HorizontalVerticalDragPanedragPane$fMessageSetFrac$fLayoutClassDragPanea$fShowDragType$fReadDragType$fShowDragPane$fReadDragPane $fShowSetFrac $fReadSetFrac $fEqSetFracDishes$fLayoutClassDishesa $fShowDishes $fReadDishesCross crossPropcrossInc simpleCross$fLayoutClassCrossa $fShowCross $fReadCross CombineTwoP SwapWindow SwapWindowN combineTwoP$fLayoutClassCombineTwoPWord64$fMessageSwapWindow$fReadSwapWindow$fShowSwapWindow$fReadCombineTwoP$fShowCombineTwoP CombineTwo combineTwo$fLayoutClassCombineTwoa$fReadCombineTwo$fShowCombineTwo JumpToLayoutNextLayoutNoWrapWrap NewSelect*||***||****||*****||****||** ****||*** ***||*****||******||****||****||***//***//****//*****//****//** ****//*** ***//*****//******//****//****//***|***|****|*****|****|******|******|*****|******|****|****|***/***/****/*****/****/******/******/*****/******/****/****/**|||$fLayoutClassNewSelecta$fMessageJumpToLayout$fReadNewSelect$fShowNewSelect$fReadJumpToLayout$fShowJumpToLayout layoutPromptColumn$fLayoutClassColumna $fReadColumn $fShowColumnCircle$fLayoutClassCircleWord64 $fReadCircle $fShowCircleTopRightMasterCenteredMaster centerMastertopRightMaster$$fLayoutModifierTopRightMasterWord64$$fLayoutModifierCenteredMasterWord64$fReadCenteredMaster$fShowCenteredMaster$fReadTopRightMaster$fShowTopRightMaster BoringWindows UpdateBoring BoringMessageMerge markBoring clearBoring boringWindows boringAuto#$fLayoutModifierBoringWindowsWord64$fMessageUpdateBoring$fMessageBoringMessage$fReadBoringMessage$fShowBoringMessage$fShowBoringWindows$fReadBoringWindows MinimizeMsgRestoreMinimizedWinRestoreNextMinimizedWinMinimizeminimizeminimizeWindow$fLayoutModifierMinimizeWord64$fMessageMinimizeMsg$fReadMinimize$fShowMinimize$fEqMinimizeMsgSelectMoveNode SelectNodeMoveNode FocusParentRotateResizeDirectional ExpandTowards ShrinkFrom MoveSplit TreeBalanceBalanceEqualize TreeRotateRotateLRotateRemptyBSP'$fLayoutClassBinarySpacePartitionWord64$fMessageSelectMoveNode$fMessageFocusParent $fMessageSwap$fMessageRotate$fMessageResizeDirectional$fMessageTreeBalance$fMessageTreeRotate $fShowAxis $fReadAxis$fEqAxis $fShowSplit $fReadSplit $fEqSplit $fShowTree $fReadTree$fEqTree $fShowCrumb $fReadCrumb $fEqCrumb $fShowNodeRef $fReadNodeRef $fEqNodeRef$fShowBinarySpacePartition$fReadBinarySpacePartition$fEqBinarySpacePartitionAvoidFloatItemMsgAvoidFloatAddItemAvoidFloatRemoveItemAvoidFloatToggleItem AvoidFloatMsgAvoidFloatToggle AvoidFloatSetAvoidFloatClearItems avoidFloats avoidFloats'!$fLayoutModifierAvoidFloatsWord64$fMessageAvoidFloatItemMsg$fMessageAvoidFloatMsg$fReadAvoidFloats$fShowAvoidFloats AutoMaster autoMaster$fLayoutModifierAutoMasterw$fReadAutoMaster$fShowAutoMaster$fLayoutClassAccordionWord64$fReadAccordion$fShowAccordion XPropMatchpmXpmPxPropManageHookworkspaceHistoryHookworkspaceHistory $fExtensionClassWorkspaceHistory$fReadWorkspaceHistory$fShowWorkspaceHistoryworkspaceByPos WallpaperConfwallpaperBaseDir wallpapers WallpaperList Wallpaper WallpaperFix WallpaperDirdefWallpaperConf defWPNameswallpaperSetter$fDefaultWallpaperConf$fMonoidWallpaperList$fExtensionClassWCState $fEqWallpaper$fShowWallpaper$fReadWallpaper$fShowWallpaperList$fReadWallpaperList$fShowWallpaperConf$fReadWallpaperConfStdoutUrgencyHookSpawnUrgencyHookBorderUrgencyHookurgencyBorderColor FocusHookDzenUrgencyHookdurationargs NoUrgencyHook UrgencyHook urgencyHookInterval RemindWhenDont RepeatedlyEvery SuppressWhenVisibleOnScreenFocused UrgencyConfig suppressWhen remindWhenwithUrgencyHookwithUrgencyHookCminutes urgencyConfig focusUrgent clearUrgents readUrgents withUrgents focusHookborderUrgencyHookdzenUrgencyHookspawnUrgencyHookstdoutUrgencyHookfilterUrgencyHook$fUrgencyHookStdoutUrgencyHook$fUrgencyHookSpawnUrgencyHook$fUrgencyHookBorderUrgencyHook$fUrgencyHookFocusHook$fUrgencyHookDzenUrgencyHook$fUrgencyHookNoUrgencyHook$fUrgencyHook(->)$fExtensionClass[]$fExtensionClassUrgents $fReadUrgents $fShowUrgents$fReadSuppressWhen$fShowSuppressWhen$fReadRemindWhen$fShowRemindWhen$fReadUrgencyConfig$fShowUrgencyConfig$fShowReminder$fReadReminder $fEqReminder$fReadWithUrgencyHook$fShowWithUrgencyHook$fReadNoUrgencyHook$fShowNoUrgencyHook$fReadDzenUrgencyHook$fShowDzenUrgencyHook$fReadFocusHook$fShowFocusHook$fReadBorderUrgencyHook$fShowBorderUrgencyHook$fReadSpawnUrgencyHook$fShowSpawnUrgencyHook$fReadStdoutUrgencyHook$fShowStdoutUrgencyHookDefaultShrinkerShrinkershrinkIt CustomShrinkDefaultDecorationDecorationStyle describeDecoshrinkdecorationEventHookdecorationCatchClicksHookdecorationWhileDraggingHookdecorationAfterDraggingHookpureDecorationdecorate DecorationOrigWinDecorationState DecorationMsgSetThemeTheme activeColor inactiveColor urgentColoractiveBorderColorinactiveBorderColorurgentBorderColoractiveTextColorinactiveTextColorurgentTextColorfontName decoWidth decoHeightwindowTitleAddonswindowTitleIcons decoration defaultThemefindWindowByDecoration isInStack isVisible isInvisibleisWithin shrinkWhile shrinkText$fShrinkerDefaultShrinker$fReadDefaultShrinker$fShowDefaultShrinker$fReadCustomShrink$fShowCustomShrink $fLayoutModifierDecorationWord64#$fDecorationStyleDefaultDecorationa$fMessageDecorationMsg$fDefaultTheme $fShowTheme $fReadTheme$fShowDecoration$fReadDecoration$fReadDefaultDecoration$fShowDefaultDecoration BorderResizeBRRectWithBorders BorderInfo borderResize"$fLayoutModifierBorderResizeWord64$fShowBorderType$fReadBorderType$fEqBorderType$fShowBorderInfo$fReadBorderInfo$fShowBorderResize$fReadBorderResizeDwmStyleDwmdwmStyle$fDecorationStyleDwmStylea$fShowDwmStyle$fReadDwmStyleLayoutHintsToCenter LayoutHints layoutHintslayoutHintsWithPlacementlayoutHintsToCenterhintsEventHook)$fLayoutModifierLayoutHintsToCenterWord64!$fLayoutModifierLayoutHintsWord64$fReadLayoutHints$fShowLayoutHints$fReadLayoutHintsToCenter$fShowLayoutHintsToCenter ResizeMode ResizeScreen WithNewScreenresizeHorizontalresizeVerticalresizeHorizontalRightresizeVerticalBottomwithNewRectangle$fLayoutModifierResizeScreena$fReadResizeMode$fShowResizeMode$fReadResizeScreen$fShowResizeScreenSimpleDecorationSimple simpleDeco"$fDecorationStyleSimpleDecorationa$fShowSimpleDecoration$fReadSimpleDecorationNoFrillsDecoration noFrillsDeco$$fDecorationStyleNoFrillsDecorationa$fShowNoFrillsDecoration$fReadNoFrillsDecorationTabBarDecorationTabBar simpleTabBartabBar"$fDecorationStyleTabBarDecorationa$fReadTabBarDecoration$fShowTabBarDecorationTabbedDecorationTabbed TabbarShown simpleTabbedsimpleTabbedAlwayssimpleTabbedBottomsimpleTabbedBottomAlwayssimpleTabbedLeftsimpleTabbedRightsimpleTabbedLeftAlwayssimpleTabbedRightAlwaystabbed tabbedAlways tabbedBottomtabbedBottomAlways tabbedLeft tabbedRighttabbedLeftAlwaystabbedRightAlwaysaddTabs addTabsAlways addTabsBottomaddTabsBottomAlways addTabsRight addTabsLeftaddTabsRightAlwaysaddTabsLeftAlways"$fDecorationStyleTabbedDecorationa$fReadTabbarShown$fShowTabbarShown$fEqTabbarShown$fReadTabbedDecoration$fShowTabbedDecoration BroadcastGroupMsgUnMerge UnMergeAllMergeAllMigrate WithGroup SubMessage Sublayout subLayout subTabbeddefaultSublMapmergeDir pullGroup pushGroup pullWindow pushWindowonGrouptoSubl$fLayoutModifierSublayoutWord64$fMessageGroupMsg$fMessageBroadcast$fReadSublayout$fShowSublayout ZoomMessageZoomZoomToZoomFullZoomFullToggleClassEQEQFeqZoomRowzoomRow zoomRowWithzoomInzoomOut zoomReset$fLayoutClassZoomRowa$fMessageZoomMessage $fEQFClassEQa $fShowClassEQ $fReadClassEQ $fEqClassEQ $fShowElt $fReadElt$fEqElt $fShowZoomRow $fReadZoomRow $fEqZoomRow$fShowZoomMessage ThemeInfoTI themeName themeAuthorthemeDescriptiontheme ppThemeInfo listOfThemes xmonadTheme smallClean donaldTheme robertTheme deiflThemeoxymor00nTheme wfarrThemekavonForestThemekavonLakeThemekavonPeacockThemekavonVioGreenThemekavonBluesThemekavonChristmasThemekavonAutumnThemekavonFireTheme ThemePrompt themePrompt$fXPromptThemePrompt toggleHook toggleHook'hookNexttoggleHookNext hookAllNewtoggleHookAllNewwillHook willHookNextwillHookAllNewwillHookNextPPwillHookAllNewPP runLogHook$fExtensionClassHookState$fReadHookState$fShowHookState setWMNameexecScriptHook ScreenCorner SCUpperLeft SCUpperRight SCLowerLeft SCLowerRightaddScreenCorneraddScreenCornersscreenCornerEventHookscreenCornerLayoutHook#$fLayoutModifierScreenCornerLayouta!$fExtensionClassScreenCornerState$fEqScreenCorner$fOrdScreenCorner$fShowScreenCorner$fReadScreenCornerLayout$fShowScreenCornerLayoutRestoreMinimizedrestoreMinimizedEventHook$fShowRestoreMinimized$fReadRestoreMinimizedminimizeEventHookMatchMaybeManageHookSideSCNCCESESWNENWC composeOne/=?<==?-->>-?>> currentWsisKDETrayWindow isInProperty isFullscreenisDialogpid transientTo transience transience'maybeToDefinite doRectFloat doFullFloat doFloatDep doFloatAt doSideFloat doCenterFloat doHideIgnore $fReadSide $fShowSide$fEqSideFullscreenFloatFullscreenFocusFullscreenFullFullscreenMessage AddFullscreenRemoveFullscreenFullscreenChangedfullscreenSupportfullscreenFullfullscreenFullRectfullscreenFocusfullscreenFocusRectfullscreenFloatfullscreenFloatRectfullscreenEventHookfullscreenManageHookfullscreenManageHookWith%$fLayoutModifierFullscreenFloatWord64%$fLayoutModifierFullscreenFocusWord64$$fLayoutModifierFullscreenFullWord64$fMessageFullscreenMessage$fReadFullscreenFull$fShowFullscreenFull$fReadFullscreenFocus$fShowFullscreenFocus$fReadFullscreenFloat$fShowFullscreenFloat SetStruts addedStruts removedStruts ToggleStruts ToggleStrut AvoidStrutsdocks manageDocks checkDockdocksEventHookdocksStartupHookcalcGap avoidStruts avoidStrutsOn$fLayoutModifierAvoidStrutsa$fMessageSetStruts$fMessageToggleStruts$fExtensionClassStrutCache$fMessageUpdateDocks$fReadAvoidStruts$fShowAvoidStruts$fReadToggleStruts$fShowToggleStruts$fReadSetStruts$fShowSetStruts$fEqStrutCache $fEqRectC $fShowRectCpositionStoreManageHookpositionStoreEventHookFocusNewerOlderPositionMasterEndAboveBelowinsertPosition takeFocusX takeTopFocus floatNextHook floatNexttoggleFloatNext floatAllNewtoggleFloatAllNew willFloatNextwillFloatAllNewwillFloatNextPPwillFloatAllNewPP setOpacityfadeOutfadeInfadeIffadeInactiveLogHookfadeInactiveCurrentWSLogHook isUnfocusedisUnfocusedOnCurrentWSfadeOutLogHookFadeHookOpacityopaque transparent transparencyopacityfadeTo translucencefadeBy invisiblesoliddoS idFadeHook isFloatingfadeWindowsLogHookfadeWindowsEventHook$fMonoidOpacityMonitorMessage ToggleMonitor ShowMonitor HideMonitorToggleMonitorNamedShowMonitorNamedHideMonitorNamedMonitorproprectvisiblename persistentmonitor manageMonitor$fLayoutModifierMonitorWord64$fMessageMonitorMessage $fReadMonitor $fShowMonitor$fReadMonitorMessage$fShowMonitorMessage$fEqMonitorMessageewmhewmhDesktopsStartupewmhDesktopsLogHookewmhDesktopsLogHookCustomewmhDesktopsEventHookewmhDesktopsEventHookCustomdynamicPropertyChange dynamicTitlePP ppCurrent ppVisibleppHiddenppHiddenNoWindowsppUrgentppSepppWsSepppTitleppTitleSanitizeppLayoutppOrderppSortppExtrasppOutputxmobar statusBarxmonadPropLog' xmonadPropLog dynamicLogdynamicLogWithPPdynamicLogString pprWindowSetdynamicLogXineramawrappadtrimshorten dzenColor dzenEscape dzenStrip xmobarColor xmobarStripxmobarStripTags defaultPPdzenPPxmobarPP sjanssenPP byorgeyPP $fDefaultPPPhysicalWorkspaceVirtualWorkspacemarshall unmarshall unmarshallS unmarshallW workspaces' withScreensonCurrentScreen countScreens marshallPP whenCurrentOn marshallSortmarshallWindowSpaceunmarshallWindowSpaceLogger aumixVolumebatterydateloadAvglogCmd logFileCount maildirUnread maildirNewlogTitle logLayout logCurrentonLoggerwrapL fixedWidthLlogSppadLshortenL dzenColorL xmobarColorLdynamicMasterHookaddDynamicHookupdateDynamicHook oneShotHook$fExtensionClassDynamicHooksDynamicStatusBarPartialCleanupDynamicStatusBarCleanupDynamicStatusBardynStatusBarStartupdynStatusBarStartup'dynStatusBarEventHookdynStatusBarEventHook'multiPP multiPPFormat $fExtensionClassDynStatusBarInfo debugStackdebugStackFulldebugStackLogHookdebugStackFullLogHookdebugStackEventHookdebugStackFullEventHookdebugStackStringdebugStackFullStringdebugKeyEventsdebugEventsHook$fFunctorDecoder$fApplicativeDecoder$fMonadDecoder$fMonadIODecoder$fMonadStateDecoder$fMonadReaderDecodercurrentWorkspaceOnTop$fExtensionClassCWOTState desktopConfigdesktopLayoutModifiers gnomeConfiggnomeRun gnomeRegister kdeConfig kde4Config mateConfigmateRun mateRegister xfceConfig bepoConfigbepoKeys azertyConfig azertyKeyssinkAllwithAll'withAllkillAll Stoppablemarkdelaytimer stoppable$fLayoutModifierStoppableWord64$fShowStoppable$fReadStoppableWNStateWNActionWNGoWNSwapwithWindowNavigationwithWindowNavigationKeysgoswap ifWindowsifWindow runOrRaiseraise raiseMaybe raiseHookrunOrRaiseNext raiseNextraiseNextMayberaiseNextMaybeCustomFocus raiseBrowser raiseEditor raiseAndDorunOrRaiseAndDo raiseMasterrunOrRaiseMasterRunOrRaisePromptrunOrRaisePrompt$fXPromptRunOrRaisePromptWindowBringerConfig menuCommand windowTitlergotoMenugotoMenuConfig gotoMenuArgs gotoMenu' gotoMenuArgs' bringMenubringMenuConfig bringMenuArgs bringMenu'bringMenuArgs' bringWindow actionMenu windowMap windowMap'$fDefaultWindowBringerConfigCorner UpperLeft UpperRight LowerLeft LowerRightbanish banishScreen warpToWindow warpToScreen updatePointer MagicFocus magicFocus promoteWarp promoteWarp' followOnlyIfdisableFollowOnWS $fLayoutModifierMagicFocusWord64$fShowMagicFocus$fReadMagicFocusfocusOnMouseMoveadjustEventInputTSNodetsn_name tsn_extra tsn_valueTSConfigts_hidechildren ts_backgroundts_fontts_node ts_nodealt ts_highlightts_extra ts_node_widthts_node_height ts_originX ts_originY ts_indent ts_navigatedefaultNavigationtsDefaultConfig treeselect treeselectAttreeselectWorkspace toWorkspacestreeselectActionselectcancel moveParent moveChildmoveNextmovePrev moveHistBackmoveHistForwardmoveTo$fDefaultTSConfig$fMonadTreeSelect$fApplicativeTreeSelect$fFunctorTreeSelect$fMonadStateTreeSelect$fMonadReaderTreeSelect$fMonadIOTreeSelect TopicConfig topicDirs topicActionsdefaultTopicAction defaultTopicmaxTopicHistoryTopic>*>defaultTopicConfiggetLastFocusedTopicssetLastFocusedTopicreverseLastFocusedTopicstopicActionWithPrompt topicActioncurrentTopicAction switchTopicswitchNthLastFocusedshiftNthLastFocusedcurrentTopicDircheckTopicConfig$fExtensionClassPrevTopics$fDefaultTopicConfig$fReadPrevTopics$fShowPrevTopics TagPromptsetTagsgetTagshasTagaddTagdelTagunTag focusUpTaggedfocusDownTaggedfocusUpTaggedGlobalfocusDownTaggedGlobal withTaggedPwithTaggedGlobalP withTaggedwithTaggedGlobal withFocusedP shiftHere shiftToScreen tagPrompt tagDelPrompt$fXPromptTagPromptsubmap submapDefaultsubmapDefaultWithKey NamedActionHasName sendMessage'spawn' submapName^++^ showKmSimpleshowKmxMessage addDescrKeys addDescrKeys'defaultKeysDescr separatorsubtitlenoNameoneNameaddName$fHasNameNamedAction $fHasName(,) $fHasName(,)0 $fHasName(,)1 $fHasName[] $fHasNameIO $fHasNameX$fShowIncMasterN $fShowResizeadditionalKeysadditionalKeysP removeKeys removeKeysPadditionalMouseBindingsremoveMouseBindings mkNamedKeymapparseKey checkKeymapRemovableClass=- SummableClass=+ SettableClass=:UpdateableClass=.ArrPrime>> ifThenElsexmonadnothingnormalBorderColorfocusedBorderColorterminalmodMask borderWidthfocusFollowsMouseclickJustFocuses manageHookhandleEventHook workspaceslogHook startupHook clientMaskrootMaskkeys mouseBindingswithWorkspaceswsNameswsKeys wsActions wsSetNamesKeyssActions onScreens addLayout resetLayout startWithapplyapplyIO$fDefaultScreenConfig$fDefaultWorkspaceConfig$fRemovableClassMouseBindings[]$fSummableClassMouseBindings[]$fRemovableClassKeys[]$fSummableClassKeys[]$fSummableClassSummabley$fUpdateableClassSummablexx$fUpdateableClassSettablexx$fSettableClasssxydebugManageHookdebugManageHookOn manageDebugmaybeManageDebugmanageDebugLogHookdebugNextManagedWindow $fExtensionClassManageStackDebugpasteSelection pasteCharsendKey sendKeyWindowSpawner manageSpawnmanageSpawnWithGCshellPromptHere shellPromptOn spawnHerespawnOn spawnAndDo$fExtensionClassSpawner PPrintablePPPrintpprintoutputOfgeomMean 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$fShowPPrintableShowTextConfigSTCst_fontst_bgst_fgdefaultSTConfighandleTimerEvent flashText$fDefaultShowTextConfig$fExtensionClassShowText$fReadShowText$fShowShowText SearchEngineNameSiteQueryBrowserSearchusesearch searchEngine searchEngineFamazonalpha codesearchdebdebbtsdebpts dictionarygooglehackagehoogleimagesimdbisohuntluckymaps mathworld openstreetmapscholarstackage thesaurus wikipedia wiktionaryyoutubewayback vocabulary duckduckgomulti intelligent!> prefixAware namedEnginepromptSearchBrowser promptSearchselectSearchBrowser selectSearch$fXPromptSearch rotSlavesUp rotSlavesDown rotSlaves'rotAllUp rotAllDownrotAll' RandomColorRGBHSV randomBg'randomBgpromoteLinesGConfLimitsFiniteCircularLinearToLeftToUpToRightToDown planeKeys planeShift planeMove $fEqLimitsPhysicalScreen getScreen viewScreen sendToScreenonNextNeighbouronPrevNeighbour$fEqPhysicalScreen$fOrdPhysicalScreen$fShowPhysicalScreen$fReadPhysicalScreen$fEnumPhysicalScreen$fNumPhysicalScreen$fIntegralPhysicalScreen$fRealPhysicalScreen chooseActionbindOnFocusNew FocusCurrentFocusTagFocusTagVisibleonScreen onScreen' viewOnScreengreedyViewOnScreen onlyOnScreentoggleOnScreentoggleGreedyOnScreen WorkscreenId Workscreen workscreenIdexpandWorkspace fromWorkspaceconfigWorkscreenviewWorkscreenshiftToWorkscreen!$fExtensionClassWorkscreenStorage$fShowWorkscreen$fShowWorkscreenStorage toggleBorderNavigation2DConfigdefaultTiledNavigationfloatNavigationscreenNavigationlayoutNavigationunmappedWindowRect Navigation2DlineNavigationcenterNavigationhybridNavigation navigation2D navigation2DPadditionalNav2DKeysadditionalNav2DKeysPwithNavigation2DConfigdefaultNavigation2DConfig switchLayerwindowGo windowSwapwindowToScreenscreenGo screenSwapfullScreenRectsingleWindowRect$fDefaultNavigation2DConfig"$fExtensionClassNavigation2DConfig$fOrdNavigation2D$fEqNavigation2D MouseResizeMR mouseResize!$fLayoutModifierMouseResizeWord64$fReadMouseResize$fShowMouseResize SimpleFloatSF simpleFloat simpleFloat'$fLayoutClassSimpleFloatWord64$fShowSimpleFloat$fReadSimpleFloatcircleSimpleDefault circleDefaultcircleSimpleDeco circleDecocircleSimpleDefaultResizablecircleDefaultResizablecircleSimpleDecoResizablecircleDecoResizablecircleSimpleDwmStylecircleDwmStylecircleSimpleTabbed circleTabbedaccordionSimpleDefaultaccordionDefaultaccordionSimpleDeco accordionDecoaccordionSimpleDefaultResizableaccordionDefaultResizableaccordionSimpleDecoResizableaccordionDecoResizableaccordionSimpleDwmStyleaccordionDwmStyleaccordionSimpleTabbedaccordionTabbedtallSimpleDefault tallDefaulttallSimpleDecotallDecotallSimpleDefaultResizabletallDefaultResizabletallSimpleDecoResizabletallDecoResizabletallSimpleDwmStyle tallDwmStyletallSimpleTabbed tallTabbedmirrorTallSimpleDefaultmirrorTallDefaultmirrorTallSimpleDecomirrorTallDeco mirrorTallSimpleDefaultResizablemirrorTallDefaultResizablemirrorTallSimpleDecoResizablemirrorTallDecoResizablemirrorTallSimpleDwmStylemirrorTallDwmStylemirrorTallSimpleTabbedmirrorTallTabbedfloatSimpleSimple floatSimplefloatSimpleDefault floatDefaultfloatSimpleDwmStyle floatDwmStylefloatSimpleTabbed floatTabbed mouseGestureH mouseGesture mkCollectsend tryMessage tryMessage_ tryInOrder tryInOrder_smsendSMsendSM_toggleFocusFloatTiledTabsConfigTTCvNMastervRatio vIncrementhNMasterhRatio hIncrement tabsShrinker tabsThemeGroupEQzoomRowG rowOfColumns zoomColumnIn zoomColumnOutzoomColumnResettoggleColumnFull zoomWindowIn zoomWindowOutzoomWindowResettoggleWindowFulldefaultTiledTabsConfigfullTabstallTabsmirrorTallTabsincreaseNMasterGroupsdecreaseNMasterGroupsshrinkMasterGroupsexpandMasterGroupsnextOuterLayout$fDefaultTiledTabsConfig$fEQFGroupEQGroup $fShowGroupEQ $fReadGroupEQwmii zoomGroupIn zoomGroupOutzoomGroupResettoggleGroupFullgroupToNextLayoutgroupToFullLayoutgroupToTabbedLayoutgroupToVerticalLayout MessageConfigmessageFunction foregroundalertedForeground backgrounddefaultMessageConfswitchWSremoveAllMatchingsunMatchtoggleLinkWorkspaces$fExtensionClassWorkspaceMap$fReadWorkspaceMap$fShowWorkspaceMapExtensionActionsLauncherConfigbrowser pathToHooglelauncherPromptdefaultLauncherModes$fXPromptHoogleMode$fXPromptCalculatorMode KeymapTable setKeyRemapsetDefaultKeyRemapbuildKeyRemapBindings emptyKeyRemapdvorakProgrammerKeyRemap$fExtensionClassKeymapTable$fShowKeymapTableForwardBackwardHistorynextMatchWithThis nextMatch nextMatchOrDo historyHook$fExtensionClassHistoryDB$fReadHistoryDB$fShowHistoryDB RearrangerTwoD TwoDState TwoDPosition HasColorizerdefaultColorizerGSConfig gs_cellheight gs_cellwidthgs_cellpadding gs_colorizergs_font gs_navigate gs_rearrangergs_originFractXgs_originFractYdefaultGSConfigmakeXEventhandlershadowWithKeymapsetPosmovetransformSearchString navNSearchsubstringSearchstringColorizer fromClassNamecolorRangeFromClassName gridselectgridselectWindowwithSelectedWindowbuildDefaultGSConfig bringSelected goToSelected spawnSelectedrunSelectedActiongridselectWorkspacegridselectWorkspace' noRearrangersearchStringRearrangerGenerator$fApplicativeTwoD$fDefaultGSConfig$fHasColorizera$fHasColorizer[]$fHasColorizerWord64 $fMonadTwoD $fFunctorTwoD$fMonadStateTwoD windowMenutitleBarButtonHandlerdefaultThemeWithButtonshandleScreenCrossingButtonDecoration buttonDeco"$fDecorationStyleButtonDecorationa$fShowButtonDecoration$fReadButtonDecorationImageButtonDecorationimageTitleBarButtonHandlerdefaultThemeWithImageButtonsimageButtonDeco'$fDecorationStyleImageButtonDecorationa$fShowImageButtonDecoration$fReadImageButtonDecorationImageWindowSwitcherDecorationWindowSwitcherDecorationwindowSwitcherDecoration#windowSwitcherDecorationWithButtons(windowSwitcherDecorationWithImageButtons/$fDecorationStyleImageWindowSwitcherDecorationa*$fDecorationStyleWindowSwitcherDecorationa$fShowWindowSwitcherDecoration$fReadWindowSwitcherDecoration#$fShowImageWindowSwitcherDecoration#$fReadImageWindowSwitcherDecorationfocusNth focusNth'swapNthswapNth'WorkspaceCursorsCursors makeCursorsgetFocusnoWrapUp noWrapDown focusDepth modifyLayershiftModifyLayer shiftLayer modifyLayer'workspaceCursors!$fLayoutModifierWorkspaceCursorsa$fMessageChangeCursors$fFunctorCursors$fFoldableCursors $fEqCursors $fShowCursors $fReadCursors$fReadWorkspaceCursors$fShowWorkspaceCursorskeysMoveWindowkeysMoveWindowTokeysResizeWindowkeysAbsResizeWindowsmart simpleSmartfixed underMouseinBoundswithGaps placeFocused placeHookpurePlaceWindow $fEqPlacement$fShowSmartRectangle$fEqSmartRectanglemouseResizeWindowmouseResizeEdgeWindowdiscretelinearresize mouseWindowviewEmptyWorkspacetagToEmptyWorkspacesendToEmptyWorkspaceWorkspaceIndexsetWorkspaceIndexwithWorkspaceIndex withWorkspacerenameWorkspacerenameWorkspaceByNametoNthWorkspacewithNthWorkspaceselectWorkspace addWorkspaceappendWorkspaceaddWorkspaceAtaddWorkspacePromptappendWorkspacePromptaddHiddenWorkspaceAtaddHiddenWorkspaceremoveEmptyWorkspaceremoveWorkspaceremoveEmptyWorkspaceByTagremoveWorkspaceByTagremoveEmptyWorkspaceAfterremoveEmptyWorkspaceAfterExcept%$fExtensionClassDynamicWorkspaceState$fReadDynamicWorkspaceState$fShowDynamicWorkspaceStateNamedScratchpadsNamedScratchpadNScmdquery nonFloatingdefaultFloatingcustomFloatingnamedScratchpadActionallNamedScratchpadActionnamedScratchpadManageHook!namedScratchpadFilterOutWorkspace#namedScratchpadFilterOutWorkspacePPnspTrackStartup nspTrackHook nspActiveIcon nspActive nspActive'$fExtensionClassNSPTrackscratchpadSpawnActionscratchpadSpawnActionTerminalscratchpadSpawnActionCustomscratchpadManageHookDefaultscratchpadManageHookscratchpadFilterOutWorkspace WSGPrompt WSGroupId addRawWSGroup addWSGroupaddCurrentWSGroup forgetWSGroup viewWSGrouppromptWSGroupViewpromptWSGroupAddpromptWSGroupForget$fXPromptWSGPrompt$fExtensionClassWSGroupStorage$fReadWSGroupStorage$fShowWSGroupStorageProject projectNameprojectDirectoryprojectStartHook ProjectNamedynamicProjects lookupProjectcurrentProject switchProjectswitchProjectPromptshiftToProjectshiftToProjectPromptrenameProjectPromptchangeProjectDirPromptactivateProject$fXPromptProjectPrompt$fExtensionClassProjectState dwmpromotedemanagecycleRecentWindows cycleStacks' shiftToFocus' rotOpposite rotOpposite' rotFocusedUprotFocusedDown rotFocused'rotUnfocusedUprotUnfocusedDown rotUnfocused'rotUprotDownWSTypeEmptyWS NonEmptyWSHiddenWSHiddenNonEmptyWS HiddenEmptyWSAnyWS WSTagGroupWSIsnextWSprevWS shiftToNext shiftToPrevtoggleWS toggleWS' toggleOrViewtoggleOrDoSkipskipTagsshiftTodoTo findWorkspace nextScreen prevScreenscreenByswapNextScreenswapPrevScreenshiftNextScreenshiftPrevScreengetWsCompareByOrdergetSortByOrderswapWith moveToGreedy$fExtensionClassWSOrderStorage$fReadWSOrderStorage$fShowWSOrderStorageswapWorkspacesgetWorkspaceNames'getWorkspaceNamesgetWorkspaceNamegetCurrentWorkspaceNamesetWorkspaceNamesetCurrentWorkspaceNameworkspaceNamesPPswapTo'workspaceNamePrompt$fExtensionClassWorkspaceNames$fReadWorkspaceNames$fShowWorkspaceNamescycleThroughLayouts cycleRecentWScycleWindowSetscopy copyToAll copyWindow runOrCopykill1killAllOtherCopieswsContainingCopiesconfigmytab$fShrinkerCustomShrinksjanssenConfig XWindowMap WindowPromptGotoBring BringCopy BringToMasterwindowPromptGotowindowPromptBringwindowPromptBringCopy allWindows wsWindows windowPrompt$fXPromptWindowPrompt commandMapworkspaceCommandsscreenCommandsdefaultCommands runCommand runCommand'serverModeEventHookserverModeEventHook'serverModeEventHookCmdserverModeEventHookCmd'serverModeEventHookFXMonad xmonadPrompt xmonadPromptC$fXPromptXMonadarossatoConfigbluetileCommandsbluetileConfig afterDragifClickifClick'snapMagicMouseResizesnapMagicResize snapMagicMovesnapMovesnapGrow snapShrink indexComparegetXineramaWsCompare'catchX PropertyName packIntoQuerytypePropertyNamesetWindowPropertyghc-prim GHC.TypesBoolcontainers-0.5.7.1 Data.TreeTreeForestGraphics.X11.Xlib.ExtrasEventGHC.BaseMaybewithStringProp Data.EitherEitherRightLeft GHC.ClassesOrdfoldrfoldlGHC.List!!TrueFalsespawnunsafeRunInTermunsafePromptSelection guessHostName setRemoteProp ManageHookX RectangleGraphics.X11.Xlib.Font FontStructGHC.Real fromIntegraleconst imageDims iconToPoints movePoint movePoints paintWindow'mkWindowmodifyStateExtsPosStoreRectangle PSRectanglePS NamedPipespipeMap SpawnOnce unspawnOnce timeoutMicrocenter'detailFromScreenId getEWMHTitle getICCCMTitlegetDecodedStringProptryUTF8 tryCompoundsplitNulcatchX'safeGetWindowAttributessafeGetCommand getMachine customizedeleteinsertGraphics.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 cleanMask GHC.UnicodeisSpace flushString insertStringDrawableColumnsRowsComplWindowDim KeyStrokeXPOperationMode XPSingleModeXPMultipleModesXPSdpyrootwwinscreencomplWin complWinDim complIndex showComplWin operationModehighlightedComplgconfontScommandHistoryoffset successful numlockMaskdone initState currentXPMode setNextModehighlightedItemcommand setCommandsetHighlightedComplrunXP eventLoophandlecompletionHandlenextComplIndextryAutoCompletekeyPressHandleresetComplIndexupdateHighlightedCompl updateWindows redrawWindows createWindrawWin printPromptgetCompletionFunctiongetCompletions setComplWindestroyComplWincreateComplWingetComplWinDim drawComplWinredrawComplWinfindComplIndexprintComplList emptyHistorygetHistoryFile readHistory writeHistoryhistoryNextMatchingdoAppendGHC.IOFilePathStringgetDirectoryExecutables getDirCompl notboringpasswordStoreFolderDefaultpasswordStoreFolder mkPassPromptselectPasswordgeneratePasswordremovePassword getPasswordsPass PromptLabel getPassComplremoveGpgExtensionenvcommandCompletionFunction isSpecialCharlaunch ParametersgetMansmanComplstripExt stripSuffixesrstripssh sshComplListsshComplListLocalsshComplListGlobalsshComplListFilesshComplListFile'sshComplListConfsshComplListConf' fileExists nonComment getWithPort parseHostUnicodeunicodeDataFilenameentriesparseUnicodeData searchUnicodetile3doLsplit3HorizontallyBytile splitSquareRectfibsmkRatiosblend divideRectsfromRecttoRect divideRect divideRect'chop roledexLayoutdiv' XMonad.LayoutShrinkExpandsplitVerticallysplitHorizontallyBymkNewPerWorkspaceTmkNewPerWorkspaceFmkNewPerScreenTmkNewPerScreenF oneBigMessage oneBigLayout calcBottomWscmastercbottomcright divideBottom divideRightshiftRshiftBfindresolve currLayout currIndex transformers MultiToggleSELunELdeEL transform'expandcollapsegeqgetCol multiColNWinmultiColDefWinmultiColDeltaSize multiColSizemultiColActiveMRT leftFracs rightFracsdraggersfocusPos numWindowsDraggerGeometryDraggerWithWinDraggerWithRect DraggerInfo MasterDraggerLeftSlaveDraggerRightSlaveDraggerSetLeftSlaveFractionSetRightSlaveFractiondraggerGeometryadjustForMirror modifySlave replaceAtPossanitizeRectanglewithin createDragger deleteDragger handleResizecreateInputWindow mkInputWindowNodeLeafNoneareaaspectShrinkWindowAltExpandWindowAlt TallWindowAlt WideWindowAltResetAltaltermakeTree areaSplit findSplits aspectBadnessBranchEmpty zipRemainonHeadsplitssplitsL interleave normalizegetWindowRectangle LayoutClass runLayoutHideReleaseResources descriptionsliceSelnMasterstartnRest LimitChangeunLC SliceStyleFirstNSlicefirstN updateStartupdateupdateAndSelect NewLayout MagnifyMasterAllNoMasterOnOffMag unlessMasterapplyMagnifiermagnifyfit applyMastershiftD divideCol FixMasterUEunion\\ intersectGHC.ReadReadGHC.ShowShow setBorders singleton mkNewOnHostTelemFQDNeqFQDN mkNewOnHostF reflectRect ReflectDirHorizVertSWN ShowWNStatedoShow flashName SortedLayoutWindowDescriptorwdSeqnwdPropwdIdfindMatchingWindows sortLayout shrinkRect _wasFloating _tiledFocusfocusWinWA ArrangeAllArrangedWindowWRAWRarrangeWindowsfromAWRawrWingetAWRgetWR mkNewAWRs removeAWRsputOnTop replaceWRPSFupdatePositionStorereordergetSizePointNavigationStateWNC brightnessupColor downColor leftColor rightColor navigablesccenterdinrinrectsortbyChdircleanDirscdsubFocus nextFocuslimitboxmboxsubnextLimitLimitNLimitRLimitP incLayoutNisFocussplitBysendSubsendBothsendNext sendFocuscalcNum splitStackcalcAreadifferentiate'aligndivide. replicateSdoColumndoRectarrange' HiddenWindows hideWindowMsg popNewestMsg popOldestMsg restoreWindow baseLayout partitionergroupsseedWindowgenreadapt removeDeletedfindNewWindows addWindows focusGroup focusWindow applySpec onFocused_removeFocusedIDgetIDunIDUniq modifyGroups justMakeNew maybeMakeNewrefocus_moveToNewGroupchangeGridAspectarrangeSplitGridarrangeMasterGridarrangeAspectGrid arrangeGridsplitIntoSlabslistDifference splitEvenly resizeMasterchangeMasterGridchangeSlaveGridAspecttallGridAdapterapplyIMfindM applyGaps activeGaps toggleGaps toggleGapincGap IncMasterN widthCols AxesGeneratorAxes changeRatiodwindlesqueeze splitRectdirAxes alternaterotatechDiralt partitionMSetFrachalfHandleWidth handleColor handleEventdoLay newDragWindishes<%>mainRectupRects downRects topRectanglerightRectanglebottomRectangle leftRectangleC2PforwardToFocusedforwardIfFocused differentiateC2broadcastPrivateswpassOnpassOnMwhen' columnMessage columnLayoutmkRectxn circleLayout raiseFocus satellite Positioner applyPositionplacetopRight namedBoring chosenBoring hiddenBoring focusMaster'FocusUp FocusDown FocusMasterIsBoring ClearBoring MinimizeWinsetMinimizedState setMinimizedsetNotMinimizedBinarySpacePartition getOldRectsgetFocusedNodegetSelectedNodegetTreeNodeRefrefLeafrefPathrefWinsCrumb LeftCrumb RightCrumbvalueleftrightSplitaxisratioAxisoppositeDirection oppositeAxistoAxis oppositeSplit increaseRatio resizeDiff numLeavesrotTree swapCrumb parentValmodifyParentValtoZippergoLeftgoRightgoUp goSiblingtoptoTree goToNthLeaf toggleSplits splitCurrent removeCurrent rotateCurrent swapCurrent isAllTheWayexpandTreeTowardsshrinkTreeFrom autoSizeTree resizeTreegetSplit findClosest findSplit resizeSplit goToBordernumerateflattenequalize balancedTreeoptimizeOrientationnoRefgoToNode toNodeRef nodeRefToLeaf leafToNodeRefmakeBSP makeZippersizezipperToBinarySpacePartition rectangles getNodeRectdoToNthsplitNth removeNth rotateNthgrowNthTowards shrinkNthFrom autoSizeNthresizeSplitNth rotateTreeNth equalizeNth rebalanceNth flattenLeavesnumerateLeavesmoveNodeindex adjustStack replaceStackreplaceFloating getFloating getStackSet getScreenRectwithoutFloatingunfloat changedDirs updateNodeRef renderBorders createBorder removeBordermaxEmptyRectanglessplitContainersfindGaps AvoidFloatscachechosenminwminhavoidAll pruneWindows everyLower everyUpper shrinkBounds shrinkBounds' bottomEdge?:bottomautoMess autoLayout masterHeight masterRect slaveRect divideRowgetProp splitAtNullhistory makeFirst WorkspaceIdWorkspaceHistory needsMovingWCStatepickFrom getPicPath getPicRescompleteWPConfapplyWallpapergetVisibleWorkspacesgetPicPathsAndWSRects getVScreenDim needsRotation layerCommandReminder readReminderschangeNetWMState addNetWMStateremoveNetWMState getNetWMStateWithUrgencyHookwindowinterval remainingUrgents fromUrgents onUrgents adjustUrgentsadjustReminderscallUrgencyHook addReminder reminderHookshouldSuppresscleanupUrgentssuppressibleWindowsJustNothing PropertyEvent ExposeEventhandleMouseFocusDraglookForreleaseResources createDecos updateDecoDecoWinDSdecoshandleDraggingInProgresscreateDecoWindow showDecos hideDecos deleteDecos updateDecosBIbWinbRectbType BorderTypeRightSideBorderLeftSideBorder TopSideBorderBottomSideBorderBorderBlueprint brBorderSize compileWrs compileWr handleGonehandleAppearedhandleSingleAppearedhandleStillTherehandleSingleStillThereupdateBorderInfocreateBorderLookupTableprepareBordersforplaceRectanglegrowadjacenttouchingcorners hintsMismatchfitting applyOrder applyHints growOthercomparingEdgesonClosedIntervalcenterPlacementfreeDirscenterPlacement'NFDAlways WhenPlural createTabs delayMesssubls NextLayout updateGroupupdateWs focusWindow' fromGroupsmergeNav currentStack updateWs' windowsMaybe unfocusedtoGroups fromGroups'setStackElteltfull==zoomEq zoomRatiosEqEZCgetRatiolookupBysetFocusnewTheme mapOfThemes HookStatehooks_set_toggle_get_ppmodify'ScreenCornerLayoutScreenCornerStatecreateWindowAtcreateWindowAt'XMonad.ManageHook composeAll RationalRectfullscreenManageHook'RectCStrutgetStrutr2cc2roverlaps<= UpdateDocks StrutCachefromStrutCache refreshDocksupdateStrutCachedeleteFromStructCache rmWorkareareducepositionStoreInit viewingWs insertDown focusLast'hookNamerationalToOpacity Data.MonoidEndoOEmpty clampRatio withMonitorsetNumberOfDesktopssetCurrentDesktopsetDesktopNames setClientListsetWindowDesktop setSupportedsetActiveWindowtoggleStrutsKeysepByconverge WindowSpace DynamicHooks transients permanentDynStatusBarInfodsbInfodynStatusBarSetupdynStatusBarRunupdateStatusBarsupdateStatusBars'multiPP' getScreens debugStackWshexvmaskdebugEventsHook'atomName atomEvent windowEventsay splitCIntForeign.C.TypesCIntclientMessages dumpProperty dumpProperty' quickFormat runDecodedumpProptransformers-0.5.2.0Control.Monad.Trans.ReaderReaderTDecoder DecodeStateDecSaccumjointDecodepropertypNamepTypewidthindentRawbytes 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 CWOTStateCWOTS desktopKeys gnomeKeyskdeKeyskde4KeysmateKeysxfceKeys signalWindowsignalLocalWindow withAllOnwithAllFilteredsigStoppableWorkspacesHookwithTargetWindow trackMovementfromCurrentPointcurrentPosition setPositioninsidemidPointnavigableTargets windowRects windowRectallWindowsSortedtitleresource classNameraiseVarworkspacesSorteddoShiftdoIgnoredoFloatdoFgetStringPropertystringPropertyappName<||><&&>=?--><+>idHookliftXRRPopenisApppidof decorateNamefractionwarpwindowAttributesToRectanglelerpclip TreeSelectTSStatetss_size tss_historyDefaultmoveWithnavigateredrawdrawNode drawWinBox drawStringXMFfromARGB#X11-xft-0.3.1-1ljV8s7f2w59JHtctik6oGraphics.X11.Xrender XRenderColor runTreeSelecttss_tree tss_window tss_display tss_xfonttss_gc tss_visual tss_colormap greedyViewshiftmkPaths splitPath forMForestmapMTree drawLayersxmessage PrevTopics getPrevTopicssetTagwsToListwsToListGlobal focusTagged'winMap withTagged'withTaggedGlobal' tagComplListtagDelComplList modToStringshowName getAction keyToString smartSpace_testmkNamedSubmaps readKeymapreadKeySequenceparseKeySequence parseKeyCombo parseModifier parseRegular parseSpecialkeyNames functionKeys specialKeysmultimediaKeys doKeymapCheck mkSubmaps mkSubmaps'on>>=XConfigmod4Maskrepeat ScreenConfigsKeys_ sActions_WorkspaceConfigwsNames_wsKeys_ wsActions_ MouseBindingsmAddmRemoveKeyskAddkRemoveSummableSettable++GHC.Primseqfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ realToFracGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipIntegral toIntegerquotremdivquotRemdivModMonadreturnfailFunctorfmap<$GHC.NumNum*+-negate fromIntegerabssignum>=minmax><compare readsPrecreadListReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloor showsPrecshowshowListData.Typeable.InternalTypeable Applicativepure<*>*><*FoldablefoldMapnulllengthfoldl1sumproductfoldr1maximumminimumData.Traversable TraversabletraversemapM sequenceAsequenceMonoidmemptymappendmconcatCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingLTEQGTRationalIOWordgetModifierMapping getCommand getErrorEventsetErrorHandler setWMHints getWMHintsallHintsBitmaskurgencyHintBitwindowGroupHintBiticonMaskHintBiticonPositionHintBiticonWindowHintBiticonPixmapHintBit stateHintBit inputHintBit iconicState normalStatewithdrawnState getClassHintgetWMNormalHintspWinGravityBit pBaseSizeBit pAspectBit pResizeIncBit pMaxSizeBit pMinSizeBit unmapWindowdeletePropertypropModeAppendpropModePrependpropModeReplacechangeProperty32changeProperty16changeProperty8getWindowProperty32getWindowProperty16getWindowProperty8rawGetWindowPropertyanyPropertyTyperefreshKeyboardMapping setKeyEventsetConfigureEventsetClientMessageEventsetSelectionNotify setEventTypegetWMProtocolsgetTransientForHint fetchNamewcTextEscapementwcDrawImageString wcDrawString wcTextExtents createFontSetwcTextPropertyToTextListgetTextProperty withServergetWindowAttributes waIsViewablewaIsUnviewable waIsUnmapped queryTreeconfigureWindow currentTimeanyKey anyButtonnonegetEvent eventName eventTablexConfigureWindow killClient xQueryTreexGetWindowAttributeschangeWindowAttributesxGetTextPropertyxwcTextPropertyToTextListwcFreeStringListxCreateFontSetfreeStringList freeFontSetxwcTextExtents xwcDrawStringxwcDrawImageStringxwcTextEscapement xFetchNamexGetTransientForHintxGetWMProtocolsxSetErrorHandlerxRefreshKeyboardMappingxChangePropertyxDeletePropertyxGetWindowProperty xUnmapWindowxGetWMNormalHints xGetClassHint xGetWMHints xAllocWMHints xSetWMHints isCursorKey isFunctionKey isKeypadKeyisMiscFunctionKey isModifierKeyisPFKeyisPrivateKeypadKeyxSetSelectionOwnerxGetSelectionOwnerxConvertSelectionmkXErrorHandlergetXErrorHandler_xSetErrorHandler mapRaised xGetCommandxGetModifierMappingxFreeModifiermapAnyEventConfigureRequestEventConfigureEventMapRequestEventKeyEvent ButtonEvent MotionEventDestroyWindowEvent UnmapEventMapNotifyEventMappingNotifyEvent CrossingEventSelectionRequestSelectionClearClientMessageEventRRScreenChangeNotifyEvent RRNotifyEventRRCrtcChangeNotifyEventRROutputChangeNotifyEventRROutputPropertyNotifyEvent ev_event_type ev_serial ev_send_eventev_event_display ev_window ev_parentev_xev_yev_width ev_heightev_border_widthev_above ev_detail ev_value_maskev_eventev_override_redirectev_root ev_subwindowev_time ev_x_root ev_y_rootev_state ev_keycodeev_same_screen ev_buttonev_from_configure ev_requestev_first_keycodeev_countev_modeev_focusev_owner ev_requestor ev_selection ev_target ev_propertyev_atom ev_propstateev_message_typeev_data ev_timestampev_config_timestamp ev_size_indexev_subpixel_order ev_rotation ev_mwidth ev_mheight ev_subtypeev_crtc ev_rr_mode ev_rr_width ev_rr_height ev_output ev_connection ev_rr_state WindowChangeswc_xwc_ywc_width wc_heightwc_border_width wc_sibling wc_stack_modeWindowAttributeswa_xwa_ywa_width wa_heightwa_border_width wa_colormapwa_map_installed wa_map_statewa_override_redirect TextPropertytp_value tp_encoding tp_format tp_nitemsFontSet SizeHints sh_min_size sh_max_size sh_resize_inc sh_aspect sh_base_sizesh_win_gravity ClassHintresNameresClassWMHints wmh_flags wmh_inputwmh_initial_statewmh_icon_pixmapwmh_icon_window wmh_icon_x wmh_icon_y wmh_icon_maskwmh_window_groupXErrorEventPtrCXErrorHandler XErrorHandler ErrorEventev_type ev_display ev_serialnum ev_error_codeev_request_code ev_minor_code ev_resourceidGraphics.X11.Xlib.WindowrestackWindowswithdrawWindow iconifyWindowtranslateCoordinates storeNamecreateSimpleWindow createWindowmoveResizeWindow resizeWindow moveWindowreparentWindow mapSubwindowsunmapSubwindows mapWindow lowerWindow raiseWindowcirculateSubwindowsDowncirculateSubwindowsUpcirculateSubwindows destroyWindowdestroySubwindowssetWindowBordersetWindowBorderPixmapsetWindowBorderWidthsetWindowBackgroundsetWindowBackgroundPixmapsetWindowColormap addToSaveSetremoveFromSaveSet changeSaveSet clearWindow clearAreaGraphics.X11.Xlib.ScreenblackPixelOfScreenwhitePixelOfScreen cellsOfScreendefaultColormapOfScreendefaultDepthOfScreendefaultGCOfScreendefaultVisualOfScreendoesBackingStoredoesSaveUndersdisplayOfScreeneventMaskOfScreenminCmapsOfScreenmaxCmapsOfScreenrootWindowOfScreen widthOfScreenwidthMMOfScreenheightOfScreenheightMMOfScreenplanesOfScreenscreenNumberOfScreenGraphics.X11.Xlib.Region setRegion shrinkRegion offsetRegionclipBox rectInRegion pointInRegion equalRegion emptyRegion xorRegion unionRegionunionRectWithRegionsubtractRegionintersectRegion polygonRegion createRegion rectanglePart rectangleIn rectangleOutRegionRectInRegionResultGraphics.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.ImagegetPixelgetImage createImageputImage destroyImage xGetPixel textWidth textExtentsdescentFromFontStructascentFromFontStructfontFromFontStruct loadQueryFont fontFromGC queryFontfreeFontGlyph CharStructGraphics.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.ContextcreateGC setDashes setArcMode setBackground setForeground setFunctionsetGraphicsExposures setClipMask setClipOrigin setFillRule setFillStylesetFontsetLineAttributes setPlaneMasksetState setStipplesetSubwindowMode setTSOriginsetTilegContextFromGCfreeGCflushGCcopyGCGraphics.X11.Xlib.Color queryColors queryColor storeColor freeColors parseColor allocColorallocNamedColor lookupColorinstallColormapuninstallColormapcopyColormapAndFreecreateColormap freeColormapGraphics.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 internAtomDisplayVisualGCSetWindowAttributes VisualInfovisualInfo_visualvisualInfo_visualIDvisualInfo_screenvisualInfo_depthvisualInfo_classvisualInfo_redMaskvisualInfo_greenMaskvisualInfo_blueMaskvisualInfo_colormapSizevisualInfo_bitsPerRGBImage DimensionAngle ScreenNumberBufferpt_xpt_yrect_xrect_y rect_width rect_heightArcarc_xarc_y arc_width arc_height arc_angle1 arc_angle2Segmentseg_x1seg_y1seg_x2seg_y2Color color_pixel color_red color_green color_blue color_flagsxRR_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_VoidSymbolXIDMaskAtomVisualIDTimeFontPixmapCursorColormapGContextKeyCodeKeySym 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.InternalxFreeControl.Monad.IO.ClassMonadIOliftIOreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar Text.ReadreadreadsGHC.IO.ExceptionioErrornotElemallanyorand concatMapconcat sequence_mapM_ userErrorIOErroreitherunwordswordsunlineslineslex readParenText.ParserCombinators.ReadPReadS Data.Bits.|.lcmgcd^^^oddeven showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicateiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurrysubtractasTypeOfuntil$!flipconstid=<<GHC.Err undefinederrorWithoutStackTraceerror&&||notControl.Monad.Reader.Classasks MonadReaderasklocalreader MonadStatestate XMonad.Main defaultConfigapplyMaxSizeHintapplyResizeIncHintapplyAspectHintapplySizeHints'applySizeHintsContentsapplySizeHintsmkAdjustmouseMoveWindow mouseDragfloat pointWithin pointScreen floatLocationrestart migrateState readStateFilewriteStateToFile initColorextraModifiersisClient withFocusedscreenWorkspace setLayout updateLayoutsendMessageWithNoRefreshbroadcastMessage setFocusXfocus setTopFocus setButtonGrabrescreengetCleanedScreenInfo nubScreens containedIn tileWindow clearEventsrefreshsetInitialPropertiesrevealhidesetWindowBorderWithFallback setWMStatescaleRationalRectwindowskill killWindowunmanagemanage StateFilesfWinssfExt mirrorRectsplitVerticallyBysplitHorizontallyResizeFull tallNMastertallRatioIncrement tallRatioMirror ChangeLayout FirstLayoutChooseuninstallSignalHandlersinstallSignalHandlerstracewhenXwhenJust recompile stateFileNamegetXMonadDataDirgetXMonadCacheDir getXMonadDirrunOnWorkspacesxforkspawnPIDcatchIOio fromMessage readsLayout atom_WM_STATEatom_WM_DELETE_WINDOWatom_WM_PROTOCOLSgetAtomwithWindowAttributes withWindowSet withDisplay userCodeDefuserCoderunXrunQueryXState windowsetmapped waitingUnmapdraggingnumberlockMaskextensibleStateXConfdisplaytheRoot normalBorder focusedBorder keyActions buttonActions mouseFocused mousePosition currentEvent WindowSetScreenIdS ScreenDetailSD screenRectLayoutdoLayout pureLayout emptyLayout handleMessage pureMessageMessage SomeMessageLayoutMessagesExtensionClass initialValue extensionTypeStateExtensionPersistentExtensionManageStackDebugMSD modifySpawnerpidsRefmkPromptShowText modShowTextremoveColonPrefix escapeURIChar _colorMin _colorMax_colorSaturation _colorValuetoHexrandPermutationshift'plane gconftool parameters cmpScreen getNeighbourneighbourWindows toggleOrView'WorkscreenStoragefromWorkspace'viewWorkscreen'shiftWs GeneralityWSRectWinRect actOnLayernavigableWindows actOnScreensisMappeddoFocusClosestWindowdoTiledNavigationdoFloatNavigationdoScreenNavigationdoLineNavigationdoCenterNavigationdoHybridNavigationcenterOf thisLayer otherLayervisibleWorkspaces addWrapping wrapOffsets sortedScreenslDistNrunNavdeleteInputWintall mirrorTall Data.Map.BasePosdirgaugealt2 getFloats getWindowsifFloat focusNonFloat focusHelperfocusNonFloatUpfocusNonFloatDown focusFloatUpfocusFloatDown_tabs_tab_vert_horiz WorkspaceMap switchWS'switchToMatchingtoggleMatching setMatching noMessageFnremoveMatching'toggleLinkWorkspaces'completionFunctionWithCalculatorModeCalcMode HoogleModeHMode hoogleModecalcMode doKeyRemapextractKeyMapping HistoryDBfocusNextMatchOrDoorderedWindowListorderedWorkspaceList updateHistoryfltbrklrotateToorderElementmapmix stringToRatioviewunTwoD td_curpos td_availSlots td_elements td_gsconfigtd_fonttd_paneXtd_paneY td_drawingWintd_searchString td_elementmapTwoDElementMapgenerateElementmapevalTwoD diamondLayerdiamonddiamondRestrictfindInElementMapupdateAllElementsgrayoutElementsupdateElementsupdateElementsWithColorizer stdHandlehsv2rgb twodigitHex decorateName' colorizerminimizeButtonOffsetmaximizeButtonOffsetcloseButtonOffset buttonSizemenuButtonOffsetconvertToBool' convertToBool menuButton' menuButton miniButton' miniButton maxiButton' maxiButton closeButton' closeButtonIWSDWSDhandleTiledDraggingInProgressperformWindowSwitching listToStackfocusUp' focusDown' ChangeCursorsunWrapConsaddDimend changeFocuschFocusfocusTodescendonFocus modifyCursors updateXMDkeysAbsResizeWindow'keysResizeWindow'keysMoveResizeSmartRectanglesr_x0sr_y0sr_x1sr_y1 placeRatio checkBoundsgetNecessaryData placeSmart findSpace subtractRectscleanupSRSmartFixed UnderMouseBounds placeWindowscaler2rr stackContents screenInfogetAllRectanglesorganizeClients getPointerr2srsr2risEmptycontains sizeOrderdropIfContainedPntpairUpmapPzipPminPfindEmptyWorkspacewithEmptyWorkspaceDynamicWorkspaceStateremoveWorkspace'workspaceIndexMap WorkspaceTagmkCompladdHiddenWorkspace' findByNamerunApplicationsomeNamedScratchpadActionscratchpadWorkspaceTagNSPTrackisSpscratchpadWindowscratchpadQueryscratchpadDefaultRectviewWS findScreenWSWSGroupStorageWSGunWSGWSGroupwithWSG ProjectStatedynamicProjectsLogHookdynamicProjectsStartupHook modifyProject projectPrompt defProject ProjectMode SwitchMode ShiftMode RenameModeDirMode ProjectPromptprojectspreviousProject ProjectTablelastViewedHiddenExcept wsTypeToPredswitchWorkspaceshiftBywsByfindWorkspaceGen findWsIndex switchScreen swapScreen shiftScreenByWSOrderStoragewithWSO updateOrder swapOrderWSOunWSOWorkspaceNames swapNames cycleToNextcycref copyMaybe taggedWindows copiesOfOn myXPConfig dropFromTail dropFromHeadbringCopyWindowlayoutCommandsmasterAreaCommands quitCommandsactivateScreenbluetileWorkspaces bluetileKeysbluetileMouseBindingsbluetileManageHookbluetileLayoutHook doSnapMove snapResizegetSnap constructors