diff options
Diffstat (limited to '')
-rw-r--r-- | XMonad/Doc/Extending.hs | 773 | ||||
-rwxr-xr-x | scripts/grabDescriptions.hs | 37 |
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) |