aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--XMonad/Doc/Extending.hs773
-rwxr-xr-xscripts/grabDescriptions.hs37
2 files changed, 619 insertions, 191 deletions
diff --git a/XMonad/Doc/Extending.hs b/XMonad/Doc/Extending.hs
index 39e11a2..88c2c80 100644
--- a/XMonad/Doc/Extending.hs
+++ b/XMonad/Doc/Extending.hs
@@ -116,81 +116,175 @@ beyond the standard keybindings provided by xmonad.
See "XMonad.Doc.Extending#Editing_key_bindings" for instructions on how to
edit your key bindings.
-* "XMonad.Actions.Commands": running internal xmonad actions
- interactively.
+* "XMonad.Actions.Commands":
+ Allows you to run internal xmonad commands (X () actions) using
+ a dmenu menu in addition to key bindings. Requires dmenu and
+ the Dmenu XMonad.Actions module.
-* "XMonad.Actions.ConstrainedResize": an aspect-ratio-constrained
- window resizing mode.
+* "XMonad.Actions.ConstrainedResize":
+ Lets you constrain the aspect ratio of a floating
+ window (by, say, holding shift while you resize).
+ Useful for making a nice circular XClock window.
-* "XMonad.Actions.CopyWindow": duplicating windows on multiple
- workspaces.
+* "XMonad.Actions.CopyWindow":
+ Provides bindings to duplicate a window on multiple workspaces,
+ providing dwm-like tagging functionality.
-* "XMonad.Actions.CycleSelectedLayouts": bind a key to cycle through a
- particular subset of your layouts.
+* "XMonad.Actions.CycleRecentWS":
+ Provides bindings to cycle through most recently used workspaces
+ with repeated presses of a single key (as long as modifier key is
+ held down). This is similar to how many window managers handle
+ window switching.
-* "XMonad.Actions.CycleWS": move between workspaces in various ways.
+* "XMonad.Actions.CycleSelectedLayouts":
+ This module allows to cycle through the given subset of layouts.
-* "XMonad.Actions.DeManage": cease management of a window without
- unmapping it.
+* "XMonad.Actions.CycleWS":
+ Provides bindings to cycle forward or backward through the list of
+ workspaces, to move windows between workspaces, and to cycle
+ between screens. Replaces "XMonad.Actions.RotView".
-* "XMonad.Actions.DwmPromote": dwm-like master window swapping.
+* "XMonad.Actions.CycleWindows":
+ Provides bindings to cycle windows up or down on the current workspace
+ stack while maintaining focus in place.
-* "XMonad.Actions.DynamicWorkspaces": add, delete, and rename workspaces.
+* "XMonad.Actions.DeManage":
+ This module provides a method to cease management of a window
+ without unmapping it. "XMonad.Hooks.ManageDocks" is a
+ more automated solution if your panel supports it.
-* "XMonad.Actions.FindEmptyWorkspace": find an empty workspace.
+* "XMonad.Actions.DwmPromote":
+ Dwm-like swap function for xmonad.
+ Swaps 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.
-* "XMonad.Actions.FlexibleManipulate": move\/resize windows without
- warping the mouse.
+* "XMonad.Actions.DynamicWorkspaces":
+ Provides bindings to add and delete workspaces. Note that you may only
+ delete a workspace that is already empty.
-* "XMonad.Actions.FlexibleResize": resize windows from any corner.
+* "XMonad.Actions.FindEmptyWorkspace":
+ Find an empty workspace.
-* "XMonad.Actions.FloatKeys": move\/resize floating windows with
- keybindings.
+* "XMonad.Actions.FlexibleManipulate":
+ Move and resize floating windows without warping the mouse.
-* "XMonad.Actions.FocusNth": focus the nth window on the screen.
+* "XMonad.Actions.FlexibleResize":
+ Resize floating windows from any corner.
-* "XMonad.Actions.MouseGestures": bind mouse gestures to actions.
+* "XMonad.Actions.FloatKeys":
+ Move and resize floating windows.
-* "XMonad.Actions.MouseResize": use with
- "XMonad.Layout.WindowArranger" to resize windows with the mouse when
- using a floating layout.
+* "XMonad.Layout.FloatSnap":
+ Move and resize floating windows using other windows and the edge of the
+ screen as guidelines.
-* "XMonad.Actions.NoBorders": forcibly remove borders from a window.
- Not to be confused with "XMonad.Layout.NoBorders".
+* "XMonad.Actions.FocusNth":
+ Focus the nth window of the current workspace.
-* "XMonad.Actions.PerWorkspaceKeys": configure keybindings
- per-workspace.
+* "XMonad.Actions.GridSelect":
+ GridSelect displays items(e.g. the opened windows) in a 2D grid and lets
+ the user select from it with the cursor/hjkl keys or the mouse.
-* "XMonad.Actions.Promote": An action to move the focused window to
- the master pane, or swap the master with the next window.
+* "XMonad.Actions.MessageFeedback":
+ Alternative to 'XMonad.Operations.sendMessage' that provides knowledge
+ of whether the message was handled, and utility functions based on
+ this facility.
-* "XMonad.Actions.RotSlaves": rotate non-master windows.
+* "XMonad.Actions.MouseGestures":
+ Support for simple mouse gestures.
-* "XMonad.Actions.Search": provide helpful functions for easily
- running web searchs.
+* "XMonad.Actions.MouseResize":
+ A layout modifier to resize windows with the mouse by grabbing the
+ window's lower right corner.
-* "XMonad.Actions.SimpleDate": display the date in a popup menu.
+* "XMonad.Actions.NoBorders":
+ This module provides helper functions for dealing with window borders.
-* "XMonad.Actions.SinkAll": sink all floating windows.
+* "XMonad.Actions.OnScreen":
+ Control workspaces on different screens (in xinerama mode).
-* "XMonad.Actions.Submap": create key submaps, i.e. the ability to
- bind actions to key sequences rather than being limited to single
- key combinations.
+* "XMonad.Actions.PerWorkspaceKeys":
+ Define key-bindings on per-workspace basis.
-* "XMonad.Actions.SwapWorkspaces": swap workspace tags.
+* "XMonad.Actions.PhysicalScreens":
+ Manipulate screens ordered by physical location instead of ID
-* "XMonad.Actions.TagWindows": tag windows and select by tag.
+* "XMonad.Actions.Plane":
+ This module has functions to navigate through workspaces in a bidimensional
+ manner.
-* "XMonad.Actions.UpdatePointer": mouse-follows-focus.
+* "XMonad.Actions.Promote":
+ Alternate promote function for xmonad.
-* "XMonad.Actions.Warp": warp the pointer.
+* "XMonad.Actions.RandomBackground":
+ An action to start terminals with a random background color
-* "XMonad.Actions.WindowBringer": bring windows to you, and you to
- windows.
+* "XMonad.Actions.RotSlaves":
+ Rotate all windows except the master window and keep the focus in
+ place.
-* "XMonad.Actions.WindowGo": travel to windows based on various
- criteria; conditionally start a program if a window does not exist,
- or travel to that window if it does.
+* "XMonad.Actions.Search":
+ A module for easily running Internet searches on web sites through xmonad.
+ Modeled after the handy Surfraw CLI search tools at <https://secure.wikimedia.org/wikipedia/en/wiki/Surfraw>.
+
+* "XMonad.Actions.SimpleDate":
+ An example external contrib module for XMonad.
+ Provides a simple binding to dzen2 to print the date as a popup menu.
+
+* "XMonad.Actions.SinkAll":
+ Provides a simple binding that pushes all floating windows on the
+ current workspace back into tiling. Use the more general general
+ "XMonad.Actions.WithAll"
+
+* "XMonad.Actions.SpawnOn":
+ Provides a way to modify a window spawned by a command(e.g shift it to the workspace
+ it was launched on) by using the _NET_WM_PID property that most windows set on creation.
+
+* "XMonad.Actions.Submap":
+ A module that allows the user to create a sub-mapping of key bindings.
+
+* "XMonad.Actions.SwapWorkspaces":
+ Lets you swap workspace tags, so you can keep related ones next to
+ each other, without having to move individual windows.
+
+* "XMonad.Actions.TagWindows":
+ Functions for tagging windows and selecting them by tags.
+
+* "XMonad.Actions.TopicSpace":
+ Turns your workspaces into a more topic oriented system.
+
+* "XMonad.Actions.UpdateFocus":
+ Updates the focus on mouse move in unfocused windows.
+
+* "XMonadContrib.UpdatePointer":
+ Causes the pointer to follow whichever window focus changes to.
+
+* "XMonad.Actions.Warp":
+ Warp the pointer to a given window or screen.
+
+* "XMonad.Actions.WindowBringer":
+ dmenu operations to bring windows to you, and bring you to windows.
+ That is to say, it pops up a dmenu with window names, in case you forgot
+ where you left your XChat.
+
+* "XMonad.Actions.WindowGo":
+ Defines a few convenient operations for raising (traveling to) windows based on XMonad's Query
+ monad, such as 'runOrRaise'.
+
+* "XMonad.Actions.WindowMenu":
+ Uses "XMonad.Actions.GridSelect" to display a number of actions related to
+ window management in the center of the focused window.
+
+* "XMonad.Actions.WindowNavigation":
+ Experimental rewrite of "XMonad.Layout.WindowNavigation".
+
+* "XMonad.Actions.WithAll":
+ Provides functions for performing a given action on all windows of
+ the current workspace.
+
+* "XMonad.Actions.WorkspaceCursors":
+ Like "XMonad.Actions.Plane" for an arbitrary number of dimensions.
-}
@@ -202,14 +296,25 @@ developers. You can look at them for examples while creating your own
configuration; you can also simply import them and use them as your
own configuration, possibly with some modifications.
+
* "XMonad.Config.Arossato"
+ This module specifies my xmonad defaults.
+
+* "XMonad.Config.Azerty"
-* "XMonad.Config.Dons"
+* "XMonad.Config.Desktop"
+ This module provides a config suitable for use with a desktop
+ environment such as KDE or GNOME.
-* "XMonad.Config.Droundy"
+* "XMonad.Config.Gnome"
+
+* "XMonad.Config.Kde"
* "XMonad.Config.Sjanssen"
+* "XMonad.Config.Xfce"
+
+
-}
{- $hooks
@@ -238,30 +343,74 @@ occur. The two most important hooks are:
Here is a list of the modules found in @XMonad.Hooks@:
+* "XMonad.Hooks.DynamicHooks":
+ One-shot and permanent ManageHooks that can be updated at runtime.
+
* "XMonad.Hooks.DynamicLog": for use with 'XMonad.Core.logHook'; send
information about xmonad's state to standard output, suitable for
putting in a status bar of some sort. See
"XMonad.Doc.Extending#The_log_hook_and_external_status_bars".
-* "XMonad.Hooks.EwmhDesktops": support for pagers in panel applications.
+* "XMonad.Hooks.EwmhDesktops":
+ Makes xmonad use the EWMH hints to tell panel applications about its
+ workspaces and the windows therein. It also allows the user to interact
+ with xmonad by clicking on panels and window lists.
+
+* "XMonad.Hooks.FadeInactive":
+ Makes XMonad set the _NET_WM_WINDOW_OPACITY atom for inactive windows,
+ which causes those windows to become slightly translucent if something
+ like xcompmgr is running
+
+* "XMonad.Hooks.FloatNext":
+ Hook and keybindings for automatically sending the next
+ spawned window(s) to the floating layer.
-* "XMonad.Hooks.ManageDocks": handle DOCK and STRUT windows (such as
- status bars) appropriately, by de-managing them and creating
- appropriate gaps so as not to place other windows covering them.
+* "XMonad.Hooks.InsertPosition":
+ Configure where new windows should be added and which window should be
+ focused.
+
+* "XMonad.Hooks.ManageDocks":
+ This module provides tools to automatically manage 'dock' type programs,
+ such as gnome-panel, kicker, dzen, and xmobar.
* "XMonad.Hooks.ManageHelpers": provide helper functions to be used
in @manageHook@.
+* "XMonad.Hooks.Place":
+ Automatic placement of floating windows.
+
+* "XMonad.Hooks.RestoreMinimized":
+ Lets you restore minimized windows (see "XMonad.Layout.Minimize")
+ by selecting them on a taskbar (listens for _NET_ACTIVE_WINDOW
+ and WM_CHANGE_STATE).
+
+* "XMonad.Hooks.Script":
+ Provides a simple interface for running a ~\/.xmonad\/hooks script with the
+ name of a hook.
+
* "XMonad.Hooks.ServerMode": Allows sending commands to a running xmonad process.
-* "XMonad.Hooks.SetWMName": set the WM name. Useful when e.g. running
- Java GUI programs.
+* "XMonad.Hooks.SetCursor":
+ Set a default cursor on startup.
+ Thanks to Andres Salomon for his initial idea for this startup hook.
-* "XMonad.Hooks.UrgencyHook": configure an action to occur when a window
- sets the urgent flag.
+* "XMonad.Hooks.SetWMName":
+ Sets the WM name to a given string, so that it could be detected using
+ _NET_SUPPORTING_WM_CHECK protocol. May be useful for making Java GUI
+ programs work.
-* "XMonad.Hooks.XPropManage": match on XProperties in your
- 'XMonad.Core.manageHook'.
+* "XMonad.Hooks.UrgencyHook":
+ UrgencyHook lets you configure an action to occur when a window demands
+ your attention. (In traditional WMs, this takes the form of \"flashing\"
+ on your \"taskbar.\" Blech.)
+
+* "XMonad.Hooks.WorkspaceByPos":
+ Useful in a dual-head setup: Looks at the requested geometry of
+ new windows and moves them to the workspace of the non-focused
+ screen if necessary.
+
+* "XMonad.Hooks.XPropManage":
+ A ManageHook matching on XProperties.
-}
@@ -282,108 +431,292 @@ interface for writing layout modifiers is implemented in
For more information on using those modules for customizing your
'XMonad.Core.layoutHook' see "XMonad.Doc.Extending#Editing_the_layout_hook".
-* "XMonad.Layout.Accordion": put non-focused windows in ribbons at the
- top and bottom of the screen.
-
-* "XMonad.Layout.Circle": an elliptical, overlapping layout.
+* "XMonad.Layout.Accordion":
+ LayoutClass that puts non-focused windows in ribbons at the top and bottom
+ of the screen.
+
+* "XMonad.Layout.AutoMaster":
+ Provides layout modifier AutoMaster. It separates screen in two parts -
+ master and slave. Size of slave area automatically changes depending on
+ number of slave windows.
+
+* "XMonad.Layout.BorderResize":
+ This layout modifier will allow to resize windows by dragging their
+ borders with the mouse. However, it only works in layouts or modified
+ layouts that react to the SetGeometry message.
+ "XMonad.Layout.WindowArranger" can be used to create such a setup.
+ BorderResize is probably most useful in floating layouts.
+
+* "XMonad.Layout.BoringWindows":
+ BoringWindows is an extension to allow windows to be marked boring
+
+* "XMonad.Layout.CenteredMaster":
+ Two layout modifiers. centerMaster places master window at center,
+ on top of all other windows, which are managed by base layout.
+ topRightMaster is similar, but places master window in top right corner
+ instead of center.
+
+* "XMonad.Layout.Circle":
+ Circle is an elliptical, overlapping layout, by Peter De Wachter
+
+* "XMonad.Layout.Column":
+ Provides Column layout that places all windows in one column. Windows
+ heights are calculated from equation: H1/H2 = H2/H3 = ... = q, where q is
+ given. With Shrink/Expand messages you can change the q value.
+
+* "XMonad.Layout.Combo":
+ A layout that combines multiple layouts.
+
+* "XMonad.Layout.ComboP":
+ A layout that combines multiple layouts and allows to specify where to put
+ new windows.
+
+* "XMonad.Layout.Cross":
+ A Cross Layout with the main window in the center.
+
+* "XMonad.Layout.Decoration":
+ A layout modifier and a class for easily creating decorated
+ layouts.
+
+* "XMonad.Layout.DecorationMadness":
+ A collection of decorated layouts: some of them may be nice, some
+ usable, others just funny.
+
+* "XMonad.Layout.Dishes":
+ Dishes is a layout that stacks extra windows underneath the master
+ windows.
+
+* "XMonad.Layout.DragPane":
+ Layouts that splits the screen either horizontally or vertically and
+ shows two windows. The first window is always the master window, and
+ the other is either the currently focused window or the second window in
+ layout order.
+
+* "XMonad.Layout.DwmStyle":
+ A layout modifier for decorating windows in a dwm like style.
+
+* "XMonad.Layout.FixedColumn":
+ A layout much like Tall, but using a multiple of a window's minimum
+ resize amount instead of a percentage of screen to decide where to
+ split. This is useful when you usually leave a text editor or
+ terminal in the master pane and like it to be 80 columns wide.
+
+* "XMonad.Layout.Gaps":
+ Create manually-sized gaps along edges of the screen which will not
+ be used for tiling, along with support for toggling gaps on and
+ off. You probably want "XMonad.Hooks.ManageDocks".
+
+* "XMonad.Layout.Grid":
+ A simple layout that attempts to put all windows in a square grid.
+
+* "XMonad.Layout.GridVariants":
+ Two layouts: one is a variant of the Grid layout that allows the
+ desired aspect ratio of windows to be specified. The other is like
+ Tall but places a grid with fixed number of rows and columns in the
+ master area and uses an aspect-ratio-specified layout for the
+ slaves.
+
+* "XMonad.Layout.HintedGrid":
+ A not so simple layout that attempts to put all windows in a square grid
+ while obeying their size hints.
+
+* "XMonad.Layout.HintedTile":
+ A gapless tiled layout that attempts to obey window size hints,
+ rather than simply ignoring them.
+
+* "XMonad.Layout.IM":
+ Layout modfier suitable for workspace with multi-windowed instant messenger
+ (like Psi or Tkabber).
+
+* "XMonad.Layout.IndependentScreens":
+ Utility functions for simulating independent sets of workspaces on
+ each screen (like dwm's workspace model), using internal tags to
+ distinguish workspaces associated with each screen.
+
+* "XMonad.Layout.LayoutBuilder":
+ A layout combinator that sends a specified number of windows to one rectangle
+ and the rest to another.
+
+* "XMonad.Layout.LayoutCombinators":
+ The "XMonad.Layout.LayoutCombinators" module provides combinators
+ for easily combining multiple layouts into one composite layout, as
+ well as a way to jump directly to any particular layout (say, with
+ a keybinding) without having to cycle through other layouts to get
+ to it.
+
+* "XMonad.Layout.LayoutHints":
+ Make layouts respect size hints.
+
+* "XMonad.Layout.LayoutModifier":
+ A module for writing easy layout modifiers, which do not define a
+ layout in and of themselves, but modify the behavior of or add new
+ functionality to other layouts. If you ever find yourself writing
+ a layout which takes another layout as a parameter, chances are you
+ should be writing a LayoutModifier instead!
+
+ In case it is not clear, this module is not intended to help you
+ configure xmonad, it is to help you write other extension modules.
+ So get hacking!
+
+* "XMonad.Layout.LayoutScreens":
+ Divide a single screen into multiple screens.
+
+* "XMonad.Layout.LimitWindows":
+ A layout modifier that limits the number of windows that can be shown.
+
+* "XMonad.Layout.MagicFocus":
+ Automagically put the focused window in the master area.
+
+* "XMonad.Layout.Magnifier":
+ Screenshot : <http://caladan.rave.org/magnifier.png>
+ This is a layout modifier that will make a layout increase the size
+ of the window that has focus.
+
+* "XMonad.Layout.Master":
+ Layout modfier that adds a master window to another layout.
+
+* "XMonad.Layout.Maximize":
+ Temporarily yanks the focused window out of the layout to mostly fill
+ the screen.
+
+* "XMonad.Layout.MessageControl":
+ Provides message escaping and filtering facilities which
+ help control complex nested layouts.
+
+* "XMonad.Layout.Minimize":
+ Makes it possible to minimize windows, temporarily removing them
+ from the layout until they are restored.
+
+* "XMonad.Layout.Monitor":
+ Layout modfier for displaying some window (monitor) above other windows
+
+* "XMonad.Layout.Mosaic":
+ Based on MosaicAlt, but aspect ratio messages always change the aspect
+ ratios, and rearranging the window stack changes the window sizes.
+
+* "XMonad.Layout.MosaicAlt":
+ A layout which gives each window a specified amount of screen space
+ relative to the others. Compared to the 'Mosaic' layout, this one
+ divides the space in a more balanced way.
+
+* "XMonad.Layout.MouseResizableTile":
+ A layout in the spirit of "XMonad.Layout.ResizableTile", but with the option
+ to use the mouse to adjust the layout.
+
+* "XMonad.Layout.MultiToggle":
+ Dynamically apply and unapply transformers to your window layout. This can
+ be used to rotate your window layout by 90 degrees, or to make the
+ currently focused window occupy the whole screen (\"zoom in\") then undo
+ the transformation (\"zoom out\").
+
+* "XMonad.Layout.Named":
+ A module for assigning a name to a given layout.
+
+* "XMonad.Layout.NoBorders":
+ Make a given layout display without borders. This is useful for
+ full-screen or tabbed layouts, where you don't really want to waste a
+ couple of pixels of real estate just to inform yourself that the visible
+ window has focus.
+
+* "XMonad.Layout.NoFrillsDecoration":
+ Most basic version of decoration for windows without any additional
+ modifications. In contrast to "XMonad.Layout.SimpleDecoration" this will
+ result in title bars that span the entire window instead of being only the
+ length of the window title.
+
+* "XMonad.Layout.OneBig":
+ Provides layout named OneBig. It places one (master) window at top left corner of screen, and other (slave) windows at top
+
+* "XMonad.Layout.PerWorkspace":
+ Configure layouts on a per-workspace basis: use layouts and apply
+ layout modifiers selectively, depending on the workspace.
+
+* "XMonad.Layout.Reflect":
+ Reflect a layout horizontally or vertically.
+
+* "XMonad.Layout.ResizableTile":
+ More useful tiled layout that allows you to change a width\/height of window.
+
+* "XMonad.Layout.ResizeScreen":
+ A layout transformer to have a layout respect a given screen
+ geometry. Mostly used with "Decoration" (the Horizontal and the
+ Vertical version will react to SetTheme and change their dimension
+ accordingly.
+
+* "XMonad.Layout.Roledex":
+ This is a completely pointless layout which acts like Microsoft's Flip 3D
+
+* "XMonad.Layout.ShowWName":
+ This is a layout modifier that will show the workspace name
+
+* "XMonad.Layout.SimpleDecoration":
+ A layout modifier for adding simple decorations to the windows of a
+ given layout. The decorations are in the form of ion-like tabs
+ for window titles.
-* "XMonad.Layout.Combo": combine multiple layouts into one.
+* "XMonad.Layout.SimpleFloat":
+ A basic floating layout.
-* "XMonad.Layout.Decoration": decorated layouts.
+* "XMonad.Layout.Simplest":
+ A very simple layout. The simplest, afaik.
-* "XMonad.Layout.DecorationMadness": some examples of decorated layouts.
+* "XMonad.Layout.SimplestFloat":
+ A basic floating layout like SimpleFloat but without the decoration.
-* "XMonad.Layout.Dishes": stack extra windows underneath the master windows.
+* "XMonad.Layout.Spacing":
+ Add a configurable amount of space around windows.
-* "XMonad.Layout.DragPane": split the screen into two windows with a
- draggable divider.
+* "XMonad.Layout.Spiral":
+ A spiral tiling layout.
-* "XMonad.Layout.DwmStyle": windows decorated in a dwm-like style.
+* "XMonad.Layout.Square":
+ A layout that splits the screen into a square area and the rest of the
+ screen.
+ This is probably only ever useful in combination with
+ "XMonad.Layout.Combo".
+ It sticks one window in a square region, and makes the rest
+ of the windows live with what's left (in a full-screen sense).
-* "XMonad.Layout.Grid": put windows in a square grid.
+* "XMonad.Layout.StackTile":
+ A stacking layout, like dishes but with the ability to resize master pane.
+ Mostly useful on small screens.
-* "XMonad.Layout.HintedTile": gapless tiled layout that attempts to
- obey window size hints.
+* "XMonad.Layout.SubLayouts":
+ A layout combinator that allows layouts to be nested.
-* "XMonad.Layout.IM": a layout for multi-window instant message clients.
+* "XMonad.Layout.TabBarDecoration":
+ A layout modifier to add a bar of tabs to your layouts.
-* "XMonad.Layout.LayoutCombinators": general layout combining.
+* "XMonad.Layout.Tabbed":
+ A tabbed layout for the Xmonad Window Manager
-* "XMonad.Layout.LayoutHints": make layouts respect window size hints.
+* "XMonad.Layout.ThreeColumns":
+ A layout similar to tall but with three columns. With 2560x1600 pixels this
+ layout can be used for a huge main window and up to six reasonable sized
+ slave windows.
+
+* "XMonad.Layout.ToggleLayouts":
+ A module to toggle between two layouts.
-* "XMonad.Layout.LayoutModifier": a general framework for creating
- layout \"modifiers\"; useful for creating new layout modules.
+* "XMonad.Layout.TwoPane":
+ A layout that splits the screen horizontally and shows two windows. The
+ left window is always the master window, and the right is either the
+ currently focused window or the second window in layout order.
-* "XMonad.Layout.LayoutScreens": divide the screen into multiple
- virtual \"screens\".
+* "XMonad.Layout.WindowArranger":
+ This is a pure layout modifier that will let you move and resize
+ windows with the keyboard in any layout.
-* "XMonad.Layout.MagicFocus": automagically put the focused window in
- the master area.
+* "XMonad.Layout.WindowNavigation":
+ WindowNavigation is an extension to allow easy navigation of a workspace.
-* "XMonad.Layout.Magnifier": increase the size of the focused window
-
-* "XMonad.Layout.Maximize": temporarily maximize the focused window.
-
-* "XMonad.Layout.MosaicAlt": give each window a specified relative
- amount of screen space.
-
-* "XMonad.Layout.MultiToggle": dynamically apply and unapply layout
- transformers.
-
-* "XMonad.Layout.Named": change the names of layouts (as reported by
- e.g. "XMonad.Hooks.DynamicLog").
-
-* "XMonad.Layout.NoBorders": display windows without borders.
-
-* "XMonad.Layout.PerWorkspace": configure layouts on a per-workspace basis.
-
-* "XMonad.Layout.Reflect": reflect any layout vertically or horizontally.
-
-* "XMonad.Layout.ResizableTile": tiled layout allowing you to change
- width and height of windows.
-
-* "XMonad.Layout.ResizeScreen": a layout modifier to change the screen
- geometry on one side.
-
-* "XMonad.Layout.Roledex": a \"completely pointless layout which acts
- like Microsoft's Flip 3D\".
-
-* "XMonad.Layout.ScratchWorkspace": implements a scratch workspace
- which can be shown and hidden with keybindings.
-
-* "XMonad.Layout.ShowWName": Show the name of the current workspace when switching.
-
-* "XMonad.Layout.SimpleDecoration": add simple decorations to windows.
-
-* "XMonad.Layout.SimpleFloat": a basic floating layout.
-
-* "XMonad.Layout.Simplest": a basic, simple layout that just lays out
- all windows with a fullscreen geometry. Used by
- "XMonad.Layout.Tabbed".
-
-* "XMonad.Layout.Spiral": Fibonacci spiral layout.
-
-* "XMonad.Layout.Square": split the screen into a square area plus the rest.
-
-* "XMonad.Layout.TabBarDecoration": add a bar of tabs to any layout.
-
-* "XMonad.Layout.Tabbed": a tabbed layout.
-
-* "XMonad.Layout.ThreeColumns": a layout with three columns instead of two.
-
-* "XMonad.Layout.ToggleLayouts": toggle between two layouts.
-
-* "XMonad.Layout.TwoPane": split the screen horizontally and show two
- windows.
-
-* "XMonad.Layout.WindowArranger": make any layout into a
- pseudo-floating layout by allowing you to move and resize windows.
-
-* "XMonad.Layout.WindowNavigation": navigate around a workspace
- directionally instead of using mod-j\/k.
-
-* "XMonad.Layout.WorkspaceDir": set the current working directory in a
- workspace.
+* "XMonad.Layout.WorkspaceDir":
+ WorkspaceDir is an extension to set the current directory in a workspace.
+ Actually, it sets the current directory in a layout, since there's no way I
+ know of to attach a behavior to a workspace. This means that any terminals
+ (or other programs) pulled up in that workspace (with that layout) will
+ execute in that working directory. Sort of handy, I think.
+ Note this extension requires the 'directory' package to be installed.
-}
@@ -398,38 +731,68 @@ modules.
These are the available prompts:
-* "XMonad.Prompt.AppendFile": append lines of text to a file.
+* "XMonad.Prompt.AppLauncher":
+ A module for launch applicationes that receive parameters in the command
+ line. The launcher call a prompt to get the parameters.
-* "XMonad.Prompt.Directory": prompt for a directory.
+* "XMonad.Prompt.AppendFile":
+ A prompt for appending a single line of text to a file. Useful for
+ keeping a file of notes, things to remember for later, and so on---
+ using a keybinding, you can write things down just about as quickly
+ as you think of them, so it doesn't have to interrupt whatever else
+ you're doing.
+ Who knows, it might be useful for other purposes as well!
-* "XMonad.Prompt.DirExec": put a bunch of scripts you want in a
- directory, then choose from among them with this prompt.
+* "XMonad.Prompt.DirExec":
+ A directory file executables prompt for XMonad. This might be useful if you
+ don't want to have scripts in your PATH environment variable (same
+ executable names, different behavior) - otherwise you might want to use
+ "XMonad.Prompt.Shell" instead - but you want to have easy access to these
+ executables through the xmonad's prompt.
-* "XMonad.Prompt.Email": an example of "XMonad.Prompt.Input", send
- simple short e-mails from a prompt.
+* "XMonad.Prompt.Directory":
+ A directory prompt for XMonad
-* "XMonad.Prompt.Input": useful for building general actions requiring
- input from a prompt.
+* "XMonad.Prompt.Email":
+ A prompt for sending quick, one-line emails, via the standard GNU
+ \'mail\' utility (which must be in your $PATH). This module is
+ intended mostly as an example of using "XMonad.Prompt.Input" to
+ build an action requiring user input.
-* "XMonad.Prompt.Layout": choose a layout from a prompt.
+* "XMonad.Prompt.Input":
+ A generic framework for prompting the user for input and passing it
+ along to some other action.
-* "XMonad.Prompt.Man": open man pages.
+* "XMonad.Prompt.Layout":
+ A layout-selection prompt for XMonad
-* "XMonad.Prompt.RunOrRaise": choose a program, and run it if not
- already running, or raise its window if it is.
+* "XMonad.Prompt.Man":
+ A manual page prompt for XMonad window manager.
+ TODO
+ * narrow completions by section number, if the one is specified
+ (like @\/etc\/bash_completion@ does)
-* "XMonad.Prompt.Shell": run a shell command.
+* "XMonad.Prompt.RunOrRaise":
+ A prompt for XMonad which will run a program, open a file,
+ or raise an already running program, depending on context.
-* "XMonad.Prompt.Ssh": open an ssh connection.
+* "XMonad.Prompt.Shell":
+ A shell prompt for XMonad
-* "XMonad.Prompt.Theme": choose a decoration theme.
+* "XMonad.Prompt.Ssh":
+ A ssh prompt for XMonad
-* "XMonad.Prompt.Window": choose an open window.
+* "XMonad.Prompt.Theme":
+ A prompt for changing the theme of the current workspace
-* "XMonad.Prompt.Workspace": choose a workspace.
+* "XMonad.Prompt.Window":
+ xprompt operations to bring windows to you, and bring you to windows.
-* "XMonad.Prompt.XMonad": perform various xmonad actions by choosing
- one from a prompt.
+* "XMonad.Prompt.Workspace":
+ A workspace prompt for XMonad
+
+* "XMonad.Prompt.XMonad":
+ A prompt for running XMonad commands
Usually a prompt is called by some key binding. See
"XMonad.Doc.Extending#Editing_key_bindings", which includes examples
@@ -451,10 +814,12 @@ A non complete list with a brief description:
* "XMonad.Util.CustomKeys": configure key bindings (see
"XMonad.Doc.Extending#Editing_key_bindings").
-* "XMonad.Util.Dmenu": a dmenu binding.
+* "XMonad.Util.Dmenu":
+ A convenient binding to dmenu.
+ Requires the process-1.0 package
-* "XMonad.Util.Dzen" "XMonad.Util.Dmenu" provide useful functions for
- running dzen as a xmonad status bar and dmenu as a program launcher;
+* "XMonad.Util.Dzen":
+ Handy wrapper for dzen. Requires dzen >= 0.2.4.
* "XMonad.Util.EZConfig": configure key bindings easily, including a
parser for writing key bindings in "M-C-x" style.
@@ -462,40 +827,66 @@ A non complete list with a brief description:
* "XMonad.Util.Font": A module for abstracting a font facility over
Core fonts and Xft
-* "XMonad.Util.Invisible": a wrapper data type to store layout state
- which should not be persisted across restarts.
+* "XMonad.Util.Invisible":
+ A data type to store the layout state
+
+* "XMonad.Util.Loggers":
+ A collection of simple logger functions and formatting utilities
+ which can be used in the 'XMonad.Hooks.DynamicLog.ppExtras' field of
+ a pretty-printing status logger format. See "XMonad.Hooks.DynamicLog"
+ for more information.
+
+* "XMonad.Util.NamedActions":
+ A wrapper for keybinding configuration that can list the available
+ keybindings.
+
+* "XMonad.Util.NamedScratchpad":
+ Named scratchpads that support several arbitrary applications at the same time.
+
+* "XMonad.Util.NamedWindows":
+ This module allows you to associate the X titles of windows with
+ them.
-* "XMonad.Util.Loggers": a collection of loggers that can be used in
- conjunction with "XMonad.Hooks.DynamicLog".
+* "XMonad.Util.Paste":
+ A module for sending key presses to windows. This modules provides generalized
+ and specialized functions for this task.
-* "XMonad.Util.NamedWindows": associate windows with their X titles.
- Used by, e.g. "XMonad.Layout.Tabbed".
+* "XMonad.Util.Replace":
+ Implements a @--replace@ flag outside of core.
-* "XMonad.Util.Run": a collection of functions for running external
- processes.
+* "XMonad.Util.Run":
+ This modules provides several commands to run an external process.
+ It is composed of functions formerly defined in "XMonad.Util.Dmenu" (by
+ Spencer Janssen), "XMonad.Util.Dzen" (by glasser\@mit.edu) and
+ XMonad.Util.RunInXTerm (by Andrea Rossato).
-* "XMonad.Util.Scratchpad": hotkey-launched floating terminal window.
+* "XMonad.Util.Scratchpad":
+ Very handy hotkey-launched floating terminal window.
-* "XMonad.Util.Themes": a collection of themes to be used with
- floating layouts.
+* "XMonad.Util.StringProp":
+ Internal utility functions for storing Strings with the root window.
+ Used for global state like IORefs with string keys, but more latency,
+ persistent between xmonad restarts.
-* "XMonad.Util.Timer": set up a timer to handle deferred events.
+* "XMonad.Util.Themes":
+ A (hopefully) growing collection of themes for decorated layouts.
-* "XMonad.Util.WindowProperties": an EDSL for specifying and matching
- on window properties.
+* "XMonad.Util.Timer":
+ A module for setting up timers
-* "XMonad.Util.WorkspaceCompare": general combinators for sorting
- workspaces in various ways, used by several other modules which need
- to sort workspaces (e.g. "XMonad.Hooks.DynamicLog").
+* "XMonad.Util.Types":
+ Miscellaneous commonly used types.
-* "XMonad.Util.Paste" provides utilities for pasting or sending keys and
- strings to windows;
+* "XMonad.Util.WindowProperties":
+ EDSL for specifying window properties; various utilities related to window
+ properties.
-* "XMonad.Util.XSelection" provide utilities for using the mouse
- selection;
+* "XMonad.Util.XSelection":
+ A module for accessing and manipulating X Window's mouse selection (the buffer used in copy and pasting).
+ 'getSelection' and 'putSelection' are adaptations of Hxsel.hs and Hxput.hs from the XMonad-utils
-* "XMonad.Util.XUtils" and "XMonad.Util.Font" are libraries for
- accessing Xlib and XFT function in a convenient way.
+* "XMonad.Util.XUtils":
+ A module for painting on the screen
-}
diff --git a/scripts/grabDescriptions.hs b/scripts/grabDescriptions.hs
new file mode 100755
index 0000000..f6c0bbf
--- /dev/null
+++ b/scripts/grabDescriptions.hs
@@ -0,0 +1,37 @@
+#!/usr/bin/env runhaskell
+
+import Control.Applicative
+import Control.Arrow
+import Control.Monad
+import Data.Char
+import Data.List
+import Data.Maybe
+import System.Directory
+import System.Environment
+
+-- needs haskell-src-exts
+import qualified Language.Haskell.Exts.Annotated as H
+
+getComments = (fmap . fmap) (map (\(H.Comment _ _ x) -> x) . snd)
+ . H.parseFileWithComments H.defaultParseMode
+
+-- | Used to grab the description fields from all the modules in the current
+-- directory for updating XMonad.Docs.Extending
+main = putStrLn . intercalate "\n"
+ =<< mapM (fmap . handleFailure description <*> getComments) =<< filterM doesFileExist . sort
+ =<< getDirectoryContents . fromMaybe "." . listToMaybe
+ =<< getArgs -- somehow only the "." fallback works...
+
+handleFailure :: (String -> [String] -> String) -> String -> H.ParseResult [String] -> String
+handleFailure f n (H.ParseOk x) = f n x
+handleFailure f n (H.ParseFailed _ msg) = n ++ " Parse Failure: " ++ msg
+
+description :: String -> [String] -> String
+description path xs =
+ let (hs,desc)
+ = uncurry (\x (y,descr) -> (x++y,takeWhile (not . or . sequence [null,("* Usage" `isInfixOf`),all (=='-'),all isSpace]) . dropWhile (all isSpace) $ descr))
+ . second (splitAt 1)
+ . break (isPrefixOf "Portability")
+ . map (dropWhile isSpace) $ concatMap lines xs
+ modName = maybe path (takeWhile (not . isSpace) . dropWhile isSpace . drop 1 . dropWhile (/=':')) $ find ("Module" `isInfixOf`) hs
+ in "* \""++modName++"\":\n"++unlines (map (" "++) desc)