mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
Update D.Extending module lists with help of a script (also added)
This commit is contained in:
parent
bf36bb785a
commit
5e0a65ea63
@ -116,81 +116,175 @@ beyond the standard keybindings provided by xmonad.
|
|||||||
See "XMonad.Doc.Extending#Editing_key_bindings" for instructions on how to
|
See "XMonad.Doc.Extending#Editing_key_bindings" for instructions on how to
|
||||||
edit your key bindings.
|
edit your key bindings.
|
||||||
|
|
||||||
* "XMonad.Actions.Commands": running internal xmonad actions
|
* "XMonad.Actions.Commands":
|
||||||
interactively.
|
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
|
* "XMonad.Actions.ConstrainedResize":
|
||||||
window resizing mode.
|
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
|
* "XMonad.Actions.CopyWindow":
|
||||||
workspaces.
|
Provides bindings to duplicate a window on multiple workspaces,
|
||||||
|
providing dwm-like tagging functionality.
|
||||||
|
|
||||||
* "XMonad.Actions.CycleSelectedLayouts": bind a key to cycle through a
|
* "XMonad.Actions.CycleRecentWS":
|
||||||
particular subset of your layouts.
|
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
|
* "XMonad.Actions.CycleWS":
|
||||||
unmapping it.
|
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
|
* "XMonad.Actions.DynamicWorkspaces":
|
||||||
warping the mouse.
|
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
|
* "XMonad.Actions.FlexibleManipulate":
|
||||||
keybindings.
|
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.FloatSnap":
|
||||||
"XMonad.Layout.WindowArranger" to resize windows with the mouse when
|
Move and resize floating windows using other windows and the edge of the
|
||||||
using a floating layout.
|
screen as guidelines.
|
||||||
|
|
||||||
* "XMonad.Actions.NoBorders": forcibly remove borders from a window.
|
* "XMonad.Actions.FocusNth":
|
||||||
Not to be confused with "XMonad.Layout.NoBorders".
|
Focus the nth window of the current workspace.
|
||||||
|
|
||||||
* "XMonad.Actions.PerWorkspaceKeys": configure keybindings
|
* "XMonad.Actions.GridSelect":
|
||||||
per-workspace.
|
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
|
* "XMonad.Actions.MessageFeedback":
|
||||||
the master pane, or swap the master with the next window.
|
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
|
* "XMonad.Actions.MouseResize":
|
||||||
running web searchs.
|
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
|
* "XMonad.Actions.PerWorkspaceKeys":
|
||||||
bind actions to key sequences rather than being limited to single
|
Define key-bindings on per-workspace basis.
|
||||||
key combinations.
|
|
||||||
|
|
||||||
* "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
|
* "XMonad.Actions.RotSlaves":
|
||||||
windows.
|
Rotate all windows except the master window and keep the focus in
|
||||||
|
place.
|
||||||
|
|
||||||
* "XMonad.Actions.WindowGo": travel to windows based on various
|
* "XMonad.Actions.Search":
|
||||||
criteria; conditionally start a program if a window does not exist,
|
A module for easily running Internet searches on web sites through xmonad.
|
||||||
or travel to that window if it does.
|
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
|
configuration; you can also simply import them and use them as your
|
||||||
own configuration, possibly with some modifications.
|
own configuration, possibly with some modifications.
|
||||||
|
|
||||||
|
|
||||||
* "XMonad.Config.Arossato"
|
* "XMonad.Config.Arossato"
|
||||||
|
This module specifies my xmonad defaults.
|
||||||
|
|
||||||
* "XMonad.Config.Dons"
|
* "XMonad.Config.Azerty"
|
||||||
|
|
||||||
* "XMonad.Config.Droundy"
|
* "XMonad.Config.Desktop"
|
||||||
|
This module provides a config suitable for use with a desktop
|
||||||
|
environment such as KDE or GNOME.
|
||||||
|
|
||||||
|
* "XMonad.Config.Gnome"
|
||||||
|
|
||||||
|
* "XMonad.Config.Kde"
|
||||||
|
|
||||||
* "XMonad.Config.Sjanssen"
|
* "XMonad.Config.Sjanssen"
|
||||||
|
|
||||||
|
* "XMonad.Config.Xfce"
|
||||||
|
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
{- $hooks
|
{- $hooks
|
||||||
@ -238,30 +343,74 @@ occur. The two most important hooks are:
|
|||||||
|
|
||||||
Here is a list of the modules found in @XMonad.Hooks@:
|
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
|
* "XMonad.Hooks.DynamicLog": for use with 'XMonad.Core.logHook'; send
|
||||||
information about xmonad's state to standard output, suitable for
|
information about xmonad's state to standard output, suitable for
|
||||||
putting in a status bar of some sort. See
|
putting in a status bar of some sort. See
|
||||||
"XMonad.Doc.Extending#The_log_hook_and_external_status_bars".
|
"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.ManageDocks": handle DOCK and STRUT windows (such as
|
* "XMonad.Hooks.FadeInactive":
|
||||||
status bars) appropriately, by de-managing them and creating
|
Makes XMonad set the _NET_WM_WINDOW_OPACITY atom for inactive windows,
|
||||||
appropriate gaps so as not to place other windows covering them.
|
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.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
|
* "XMonad.Hooks.ManageHelpers": provide helper functions to be used
|
||||||
in @manageHook@.
|
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.ServerMode": Allows sending commands to a running xmonad process.
|
||||||
|
|
||||||
* "XMonad.Hooks.SetWMName": set the WM name. Useful when e.g. running
|
* "XMonad.Hooks.SetCursor":
|
||||||
Java GUI programs.
|
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
|
* "XMonad.Hooks.SetWMName":
|
||||||
sets the urgent flag.
|
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.Hooks.UrgencyHook":
|
||||||
'XMonad.Core.manageHook'.
|
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
|
For more information on using those modules for customizing your
|
||||||
'XMonad.Core.layoutHook' see "XMonad.Doc.Extending#Editing_the_layout_hook".
|
'XMonad.Core.layoutHook' see "XMonad.Doc.Extending#Editing_the_layout_hook".
|
||||||
|
|
||||||
* "XMonad.Layout.Accordion": put non-focused windows in ribbons at the
|
* "XMonad.Layout.Accordion":
|
||||||
top and bottom of the screen.
|
LayoutClass that puts non-focused windows in ribbons at the top and bottom
|
||||||
|
of the screen.
|
||||||
|
|
||||||
* "XMonad.Layout.Circle": an elliptical, overlapping layout.
|
* "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.Combo": combine multiple layouts into one.
|
* "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.Decoration": decorated layouts.
|
* "XMonad.Layout.BoringWindows":
|
||||||
|
BoringWindows is an extension to allow windows to be marked boring
|
||||||
|
|
||||||
* "XMonad.Layout.DecorationMadness": some examples of decorated layouts.
|
* "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.Dishes": stack extra windows underneath the master windows.
|
* "XMonad.Layout.Circle":
|
||||||
|
Circle is an elliptical, overlapping layout, by Peter De Wachter
|
||||||
|
|
||||||
* "XMonad.Layout.DragPane": split the screen into two windows with a
|
* "XMonad.Layout.Column":
|
||||||
draggable divider.
|
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.DwmStyle": windows decorated in a dwm-like style.
|
* "XMonad.Layout.Combo":
|
||||||
|
A layout that combines multiple layouts.
|
||||||
|
|
||||||
* "XMonad.Layout.Grid": put windows in a square grid.
|
* "XMonad.Layout.ComboP":
|
||||||
|
A layout that combines multiple layouts and allows to specify where to put
|
||||||
|
new windows.
|
||||||
|
|
||||||
* "XMonad.Layout.HintedTile": gapless tiled layout that attempts to
|
* "XMonad.Layout.Cross":
|
||||||
obey window size hints.
|
A Cross Layout with the main window in the center.
|
||||||
|
|
||||||
* "XMonad.Layout.IM": a layout for multi-window instant message clients.
|
* "XMonad.Layout.Decoration":
|
||||||
|
A layout modifier and a class for easily creating decorated
|
||||||
|
layouts.
|
||||||
|
|
||||||
* "XMonad.Layout.LayoutCombinators": general layout combining.
|
* "XMonad.Layout.DecorationMadness":
|
||||||
|
A collection of decorated layouts: some of them may be nice, some
|
||||||
|
usable, others just funny.
|
||||||
|
|
||||||
* "XMonad.Layout.LayoutHints": make layouts respect window size hints.
|
* "XMonad.Layout.Dishes":
|
||||||
|
Dishes is a layout that stacks extra windows underneath the master
|
||||||
|
windows.
|
||||||
|
|
||||||
* "XMonad.Layout.LayoutModifier": a general framework for creating
|
* "XMonad.Layout.DragPane":
|
||||||
layout \"modifiers\"; useful for creating new layout modules.
|
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.LayoutScreens": divide the screen into multiple
|
* "XMonad.Layout.DwmStyle":
|
||||||
virtual \"screens\".
|
A layout modifier for decorating windows in a dwm like style.
|
||||||
|
|
||||||
* "XMonad.Layout.MagicFocus": automagically put the focused window in
|
* "XMonad.Layout.FixedColumn":
|
||||||
the master area.
|
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.Magnifier": increase the size of the focused window
|
* "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.Maximize": temporarily maximize the focused window.
|
* "XMonad.Layout.Grid":
|
||||||
|
A simple layout that attempts to put all windows in a square grid.
|
||||||
|
|
||||||
* "XMonad.Layout.MosaicAlt": give each window a specified relative
|
* "XMonad.Layout.GridVariants":
|
||||||
amount of screen space.
|
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.MultiToggle": dynamically apply and unapply layout
|
* "XMonad.Layout.HintedGrid":
|
||||||
transformers.
|
A not so simple layout that attempts to put all windows in a square grid
|
||||||
|
while obeying their size hints.
|
||||||
|
|
||||||
* "XMonad.Layout.Named": change the names of layouts (as reported by
|
* "XMonad.Layout.HintedTile":
|
||||||
e.g. "XMonad.Hooks.DynamicLog").
|
A gapless tiled layout that attempts to obey window size hints,
|
||||||
|
rather than simply ignoring them.
|
||||||
|
|
||||||
* "XMonad.Layout.NoBorders": display windows without borders.
|
* "XMonad.Layout.IM":
|
||||||
|
Layout modfier suitable for workspace with multi-windowed instant messenger
|
||||||
|
(like Psi or Tkabber).
|
||||||
|
|
||||||
* "XMonad.Layout.PerWorkspace": configure layouts on a per-workspace basis.
|
* "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.Reflect": reflect any layout vertically or horizontally.
|
* "XMonad.Layout.LayoutBuilder":
|
||||||
|
A layout combinator that sends a specified number of windows to one rectangle
|
||||||
|
and the rest to another.
|
||||||
|
|
||||||
* "XMonad.Layout.ResizableTile": tiled layout allowing you to change
|
* "XMonad.Layout.LayoutCombinators":
|
||||||
width and height of windows.
|
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.ResizeScreen": a layout modifier to change the screen
|
* "XMonad.Layout.LayoutHints":
|
||||||
geometry on one side.
|
Make layouts respect size hints.
|
||||||
|
|
||||||
* "XMonad.Layout.Roledex": a \"completely pointless layout which acts
|
* "XMonad.Layout.LayoutModifier":
|
||||||
like Microsoft's Flip 3D\".
|
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.ScratchWorkspace": implements a scratch workspace
|
* "XMonad.Layout.LayoutScreens":
|
||||||
which can be shown and hidden with keybindings.
|
Divide a single screen into multiple screens.
|
||||||
|
|
||||||
* "XMonad.Layout.ShowWName": Show the name of the current workspace when switching.
|
* "XMonad.Layout.LimitWindows":
|
||||||
|
A layout modifier that limits the number of windows that can be shown.
|
||||||
|
|
||||||
* "XMonad.Layout.SimpleDecoration": add simple decorations to windows.
|
* "XMonad.Layout.MagicFocus":
|
||||||
|
Automagically put the focused window in the master area.
|
||||||
|
|
||||||
* "XMonad.Layout.SimpleFloat": a basic floating layout.
|
* "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.Simplest": a basic, simple layout that just lays out
|
* "XMonad.Layout.Master":
|
||||||
all windows with a fullscreen geometry. Used by
|
Layout modfier that adds a master window to another layout.
|
||||||
"XMonad.Layout.Tabbed".
|
|
||||||
|
|
||||||
* "XMonad.Layout.Spiral": Fibonacci spiral layout.
|
* "XMonad.Layout.Maximize":
|
||||||
|
Temporarily yanks the focused window out of the layout to mostly fill
|
||||||
|
the screen.
|
||||||
|
|
||||||
* "XMonad.Layout.Square": split the screen into a square area plus the rest.
|
* "XMonad.Layout.MessageControl":
|
||||||
|
Provides message escaping and filtering facilities which
|
||||||
|
help control complex nested layouts.
|
||||||
|
|
||||||
* "XMonad.Layout.TabBarDecoration": add a bar of tabs to any layout.
|
* "XMonad.Layout.Minimize":
|
||||||
|
Makes it possible to minimize windows, temporarily removing them
|
||||||
|
from the layout until they are restored.
|
||||||
|
|
||||||
* "XMonad.Layout.Tabbed": a tabbed layout.
|
* "XMonad.Layout.Monitor":
|
||||||
|
Layout modfier for displaying some window (monitor) above other windows
|
||||||
|
|
||||||
* "XMonad.Layout.ThreeColumns": a layout with three columns instead of two.
|
* "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.ToggleLayouts": toggle between two layouts.
|
* "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.TwoPane": split the screen horizontally and show two
|
* "XMonad.Layout.MouseResizableTile":
|
||||||
windows.
|
A layout in the spirit of "XMonad.Layout.ResizableTile", but with the option
|
||||||
|
to use the mouse to adjust the layout.
|
||||||
|
|
||||||
* "XMonad.Layout.WindowArranger": make any layout into a
|
* "XMonad.Layout.MultiToggle":
|
||||||
pseudo-floating layout by allowing you to move and resize windows.
|
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.WindowNavigation": navigate around a workspace
|
* "XMonad.Layout.Named":
|
||||||
directionally instead of using mod-j\/k.
|
A module for assigning a name to a given layout.
|
||||||
|
|
||||||
* "XMonad.Layout.WorkspaceDir": set the current working directory in a
|
* "XMonad.Layout.NoBorders":
|
||||||
workspace.
|
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.SimpleFloat":
|
||||||
|
A basic floating layout.
|
||||||
|
|
||||||
|
* "XMonad.Layout.Simplest":
|
||||||
|
A very simple layout. The simplest, afaik.
|
||||||
|
|
||||||
|
* "XMonad.Layout.SimplestFloat":
|
||||||
|
A basic floating layout like SimpleFloat but without the decoration.
|
||||||
|
|
||||||
|
* "XMonad.Layout.Spacing":
|
||||||
|
Add a configurable amount of space around windows.
|
||||||
|
|
||||||
|
* "XMonad.Layout.Spiral":
|
||||||
|
A spiral tiling layout.
|
||||||
|
|
||||||
|
* "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.StackTile":
|
||||||
|
A stacking layout, like dishes but with the ability to resize master pane.
|
||||||
|
Mostly useful on small screens.
|
||||||
|
|
||||||
|
* "XMonad.Layout.SubLayouts":
|
||||||
|
A layout combinator that allows layouts to be nested.
|
||||||
|
|
||||||
|
* "XMonad.Layout.TabBarDecoration":
|
||||||
|
A layout modifier to add a bar of tabs to your layouts.
|
||||||
|
|
||||||
|
* "XMonad.Layout.Tabbed":
|
||||||
|
A tabbed layout for the Xmonad Window Manager
|
||||||
|
|
||||||
|
* "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.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.WindowArranger":
|
||||||
|
This is a pure layout modifier that will let you move and resize
|
||||||
|
windows with the keyboard in any layout.
|
||||||
|
|
||||||
|
* "XMonad.Layout.WindowNavigation":
|
||||||
|
WindowNavigation is an extension to allow easy navigation of 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:
|
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
|
* "XMonad.Prompt.DirExec":
|
||||||
directory, then choose from among them with this prompt.
|
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
|
* "XMonad.Prompt.Directory":
|
||||||
simple short e-mails from a prompt.
|
A directory prompt for XMonad
|
||||||
|
|
||||||
* "XMonad.Prompt.Input": useful for building general actions requiring
|
* "XMonad.Prompt.Email":
|
||||||
input from a prompt.
|
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
|
* "XMonad.Prompt.Man":
|
||||||
already running, or raise its window if it is.
|
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
|
* "XMonad.Prompt.Workspace":
|
||||||
one from a prompt.
|
A workspace prompt for XMonad
|
||||||
|
|
||||||
|
* "XMonad.Prompt.XMonad":
|
||||||
|
A prompt for running XMonad commands
|
||||||
|
|
||||||
Usually a prompt is called by some key binding. See
|
Usually a prompt is called by some key binding. See
|
||||||
"XMonad.Doc.Extending#Editing_key_bindings", which includes examples
|
"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.Util.CustomKeys": configure key bindings (see
|
||||||
"XMonad.Doc.Extending#Editing_key_bindings").
|
"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
|
* "XMonad.Util.Dzen":
|
||||||
running dzen as a xmonad status bar and dmenu as a program launcher;
|
Handy wrapper for dzen. Requires dzen >= 0.2.4.
|
||||||
|
|
||||||
* "XMonad.Util.EZConfig": configure key bindings easily, including a
|
* "XMonad.Util.EZConfig": configure key bindings easily, including a
|
||||||
parser for writing key bindings in "M-C-x" style.
|
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
|
* "XMonad.Util.Font": A module for abstracting a font facility over
|
||||||
Core fonts and Xft
|
Core fonts and Xft
|
||||||
|
|
||||||
* "XMonad.Util.Invisible": a wrapper data type to store layout state
|
* "XMonad.Util.Invisible":
|
||||||
which should not be persisted across restarts.
|
A data type to store the layout state
|
||||||
|
|
||||||
* "XMonad.Util.Loggers": a collection of loggers that can be used in
|
* "XMonad.Util.Loggers":
|
||||||
conjunction with "XMonad.Hooks.DynamicLog".
|
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.NamedWindows": associate windows with their X titles.
|
* "XMonad.Util.NamedActions":
|
||||||
Used by, e.g. "XMonad.Layout.Tabbed".
|
A wrapper for keybinding configuration that can list the available
|
||||||
|
keybindings.
|
||||||
|
|
||||||
* "XMonad.Util.Run": a collection of functions for running external
|
* "XMonad.Util.NamedScratchpad":
|
||||||
processes.
|
Named scratchpads that support several arbitrary applications at the same time.
|
||||||
|
|
||||||
* "XMonad.Util.Scratchpad": hotkey-launched floating terminal window.
|
* "XMonad.Util.NamedWindows":
|
||||||
|
This module allows you to associate the X titles of windows with
|
||||||
|
them.
|
||||||
|
|
||||||
* "XMonad.Util.Themes": a collection of themes to be used with
|
* "XMonad.Util.Paste":
|
||||||
floating layouts.
|
A module for sending key presses to windows. This modules provides generalized
|
||||||
|
and specialized functions for this task.
|
||||||
|
|
||||||
* "XMonad.Util.Timer": set up a timer to handle deferred events.
|
* "XMonad.Util.Replace":
|
||||||
|
Implements a @--replace@ flag outside of core.
|
||||||
|
|
||||||
* "XMonad.Util.WindowProperties": an EDSL for specifying and matching
|
* "XMonad.Util.Run":
|
||||||
on window properties.
|
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.WorkspaceCompare": general combinators for sorting
|
* "XMonad.Util.Scratchpad":
|
||||||
workspaces in various ways, used by several other modules which need
|
Very handy hotkey-launched floating terminal window.
|
||||||
to sort workspaces (e.g. "XMonad.Hooks.DynamicLog").
|
|
||||||
|
|
||||||
* "XMonad.Util.Paste" provides utilities for pasting or sending keys and
|
* "XMonad.Util.StringProp":
|
||||||
strings to windows;
|
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.XSelection" provide utilities for using the mouse
|
* "XMonad.Util.Themes":
|
||||||
selection;
|
A (hopefully) growing collection of themes for decorated layouts.
|
||||||
|
|
||||||
* "XMonad.Util.XUtils" and "XMonad.Util.Font" are libraries for
|
* "XMonad.Util.Timer":
|
||||||
accessing Xlib and XFT function in a convenient way.
|
A module for setting up timers
|
||||||
|
|
||||||
|
* "XMonad.Util.Types":
|
||||||
|
Miscellaneous commonly used types.
|
||||||
|
|
||||||
|
* "XMonad.Util.WindowProperties":
|
||||||
|
EDSL for specifying window properties; various utilities related to window
|
||||||
|
properties.
|
||||||
|
|
||||||
|
* "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":
|
||||||
|
A module for painting on the screen
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
37
scripts/grabDescriptions.hs
Normal file
37
scripts/grabDescriptions.hs
Normal file
@ -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)
|
Loading…
x
Reference in New Issue
Block a user