jwm(1)jwm(1)NAME
JWM - Joe's Window Manager
SYNOPSISjwm [options]
DESCRIPTION
JWM is a window manager for the X11 Window System.
OPTIONS-display display
This option specifies the display to use; see X(1).
-exit
Exit JWM by sending _JWM_EXIT to the root window.
-h
Display a help message and exit.
-p
Parse the configuration file and exit. It is a good idea to use
this after making modifications to the configuration file to
ensure there are no errors.
-restart
Restart JWM by sending _JWM_RESTART to the root window.
-reload
Reload menus by sending _JWM_RELOAD to the root window.
-v
Display version information and exit.
FILES
/etc/system.jwmrc
The default JWM configuration file.
~/.jwmrc
Local configuration file. Copy the default configuration file to
this location to make user-specific changes.
CONFIGURATION
OVERVIEW
Configuration of JWM is done by editing ".jwmrc". This file is
XML making it easy to edit, either by hand or programmatically.
The example.jwmrc gives an example configuration file. Before
restarting JWM, it is a good idea to run "jwm -p" to make sure
the configuration file is free of errors. Otherwise you may end
up without a root menu.
ROOT MENU
The root menu in JWM is the primary way of starting programs.
It also provides a way to restart or exit the window manager.
The outer most tag is RootMenu. The following attributes are
supported:
onroot list
Determine which buttons on the root window activate the
menu. This is a list of integers specifying buttons. The
default is "123". Note that multiple root menus may be
specified by using different buttons for different menus.
The range of possible button values is 0 to 9 inclusive.
height int
Height of each menu item in pixels. 0 indicates the
largest menu item will determine the height. The default
is 0.
labeled bool
Determines if a label appears at the top of the menu.
Default is false.
label string
The label to display at the top of the menu. Default is
"JWM".
Within the RootMenu tag, the following tags are supported:
Menu
This tag creates a submenu item. Any of the tags allowed
within the RootMenu tag, including the Menu tag are
allowed within this element. The following attributes are
supported:
height int
Height of each menu item in pixels. 0 indicates
the largest menu item will determine the height.
The default is inherited from the parent menu.
label string
The label to use. No default.
icon string
The icon to use for this menu. No default.
labeled bool
Determines if a label appears at the top of the
menu. Default is false.
Include
Include the contents of a file into the menu structure.
The file must start with a "JWM" tag. The file is speci‐
fied by the text of the tag. If the text starts with
"exec:" then the output of a program is used.
Program
The Program tag provides a way to start an external pro‐
gram. The text in this tag is the command used to start
the program. The following attributes are supported:
label string
The label to display. Default is the text of the
tag.
icon string
The icon to use. No default.
Separator
This tag simply puts a line in the menu allowing menu
divisions. No text or attributes are used.
Desktops
Add a desktop menu. This will add a submenu with a list
of desktops that can be used to change the current desk‐
top. The following attributes are supported:
label string
The label to use for the menu. The default is
"Desktops".
icon string
The icon to use for this item. No default.
SendTo
Add a "send to" menu to the menu. After selecting an item
from this menu, a window may be selected to send that
window to the selected desktop. The following attributes
are supported:
label string
The label to use. The default is "SendTo".
icon string
The icon to use for this item. No default.
Stick
Add a stick/unstick window operation to the menu. After
selecting this item a window may be selected to toggle
the sticky state of that window. The following
attributes are supported:
label string
The label to use. The default is "Stick".
icon string
The icon to use for this item. No default.
Maximize
Add a maximize window operation to the menu. After
selecting this item a window may be selected to toggle
the maximized state of that window. The following
attributes are supported:
label string
The label to use. The default is "Maximize".
icon string
The icon to use for this item. No default.
Minimize
Add a minimize window operation to the menu. After
selecting this item a window may be selected to minimize
that window. The following attributes are supported:
label string
The label to use. The default is "Minimize".
icon string
The icon to use for this item. No default.
Shade
Add a shade/unshade window operation to the menu. After
selecting this item a window may be selected to toggle
the shaded status of that window. The following
attributes are supported:
label string
The label to use. The default is "Shade".
icon string
The icon to use for this item. No default.
Move
Add a move window operation to the menu. After selecting
this item a window may be selected to move that window.
The following attributes are supported:
label string
The label to use. The default is "Move".
icon string
The icon to use for this item. No default.
Resize
Add a resize window operation to the menu. After select‐
ing this item a window may be selected to resize that
window. The following attributes are supported:
label string
The label to use. The default is "Resize".
icon string
The icon to use for this item. No default.
Kill
Add a kill window operation to the menu. After selecting
this item a window may be selected to kill that window.
The following attributes are supported:
label string
The label to use. The default is "Kill".
icon string
The icon to use for this item. No default.
Close
Add a close window operation to the menu. After selecting
this item a window may be selected to close that window.
The following attributes are supported:
label string
The label to use. The default is "Close".
icon string
The icon to use for this item. No default.
Restart
This tag adds a menu item to restart the window manager.
The following attributes are supported:
label string
The label to use. The default is "Restart".
icon string
The icon to use. No default.
Exit
This tag adds a menu item to exit the window manager. If
text is present within this tag, it is interpreted as a
command to run when JWM exits. This can be used to start
another window manager. The following attributes are
supported:
label string
The label to use. The default is "Exit".
icon string
The icon to use. No default.
confirm bool
Determine if a confirm dialog appears before exit‐
ing. Default is true.
Note that confirm dialogs can be disabled completely at
the compile-time.
TRAYS
One or more trays may be created via the Tray tag. This tag
supports the following attributes:
autohide bool
Allows this tray to hide itself when not activated.
Default is false.
x int
The x-coordinate of the tray. This may be negative to
indicate an offset from the right of the screen.
y int
The y-coordinate of the tray. This may be negative to
indicate an offset from the bottom of the screen.
width int
The width of the tray. 0 indicates that the tray should
compute an optimal width depending on what it contains
and the layout. 0 is the default.
height int
The height of the tray. 0 indicates that the tray should
compute an optimal height depending on what it contains
and the layout. 0 is the default.
border int
The width of the border. The default is 1. Valid values
are between 0 and 32 inclusive.
layer { below | normal | above }
The layer of the tray. The default is above.
layout { vertical | horizontal }
The layout of the tray. The default is horizontal.
valign { fixed | top | center | bottom }
The vertical alignment of the tray. The default is fixed.
halign { fixed | left | center | right }
The horizontal alignment of the tray. The default is
fixed.
Within this tag the following tags are supported:
Clock
Add a clock to the tray. The text of this tag is a com‐
mand to run when the clock is clicked. This tag supports
the following attributes:
format string
The format of the clock. See strftime(3).
zone string
The time zone of the clock. See tzset(3).
width int
The width of the clock. 0 indicates that the width
should be determined from the length of the text
to be displayed.
height int
The height of the clock. 0 indicates that the
height should be determined from the font used.
Dock
Add a dock for system notifications. This can be used by
those programs that use the _NET_SYSTEM_TRAY_Sn selec‐
tion. The size of the Dock is dynamic based on the size
of the tray and the number of items contained. Only one
Dock is allowed per instance of JWM. This tag supports
the following attribute:
width int
The maximum width of an item contained in the
dock. This defaults to the width or height of the
tray (whichever is smaller).
Pager
Add a pager to the tray. A pager shows a miniature rep‐
resentation of a desktop. When over the pager, the
scroll wheel will switch desktops. Holding down the
right mouse button allows you to drag a window around in
the pager which changes its position on the real desktop.
You can also drag a window in the pager from one desktop
to another. This tag supports the following attributes:
labeled bool
Determines if the pager has text labels. Default
is false.
Also see the PAGER STYLE section for more information.
Spacer
Add empty space to the tray. This tag supports the fol‐
lowing attributes:
width int
The width of the spacer (0 to fill all available
space). 0 is the default.
height int
The height of the spacer (0 to fill all available
space). 0 is the default.
Swallow
Swallow a program into the tray. The text of this tag
gives the command to run. This tag supports the follow‐
ing attributes:
name string
The name of the program to swallow. This attribute
is required.
width int
The width of the swallowed program. 0 indicates
that the width should be determined from the tray
and size requested from the program. 0 is the
default.
height int
The height of the swallowed program. 0 indicates
that the height should be determined from the tray
and the size requested from the program. 0 is the
default.
TaskList
Add a task list to the tray. This tag supports the fol‐
lowing attributes:
border bool
Determines if items in the task list have a bor‐
der. Default is true.
maxwidth int
The maximum width of an item in the task list. 0
indicates no maximum. The default is 0.
TrayButton
Add a button to the tray. The text of this tag determines
what action to take when the button is clicked. The fol‐
lowing actions are supported:
root:n
Show root menu n. Note that the default TrayBut‐
ton action is root:1.
exec: string
Execute a command.
showdesktop
Minimize all windows on the current desktop.
This tag supports the following attributes:
border bool
Determines if a the button has a border. Default
is true.
label string
A label to display. No default.
popup string
A string to be displayed for a popup. This will
default to the value specified for label, if pro‐
vided. If neither popup nor label are specified no
popup will be shown.
icon string
An icon to display. No default.
INCLUDES
Other configuration files may be included under the JWM tag via
the Include tag. The text of this tag specifies the location of
an additional configuration file. The path may be relative to
the location JWM was started, an absolute path, or a path refer‐
encing an environment variable (using '$'). The format of the
configuration file is the same as the main configuration file.
GROUP SETTINGS
Program groups allow one to specify options which apply to a
group of programs by name and/or class. A program group is cre‐
ated with the Group tag. As many program groups can be created
as desired. If one or more Name tags is specified, at least one
name must match. Likewise, if one or more Class tags is speci‐
fied, at least one class must match. JWM matches using extended
POSIX regular expressions for both Name and Class tags. See
regex(7). Within the Group tag the following tags are sup‐
ported:
Name
The window name of a program to match to be in this group
(the first string in WM_CLASS).
Class
The window class for a program to match to be in this
group (the second string in WM_CLASS).
Option
An option for this group. Possible options are:
border
Causes windows in this group to have a border.
centered
Center windows in this group upon initial place‐
ment instead of using cascaded placement.
constrain
Constrain windows in this group to the screen.
desktop:#
The desktop on which windows in this group will be
started.
hmax
Make windows in this group maximize horizontally.
icon:string
The icon to be used for windows in this group.
iignore
Ignore the size increment hint when maximizing
windows in this group.
layer:string
The layer on which windows in this group will be
started. Valid options are below, normal, and
above
maximized
Make windows in this group initially maximized.
minimized
Make windows in this group initially minimized.
noborder
Causes windows in this group to be displayed with‐
out a border.
nofocus
Prevents windows in the group from grabbing the
focus when mapped.
nolist
Causes the tray to ignore windows in this group.
nopager
Causes the pager to ignore windows in this group.
noshade
Prevent windows in this group from being shaded.
notitle
Causes windows in this group to be displayed with‐
out a title bar.
noturgent
Ignore the urgent hint for windows in this group.
opacity:#
Set the opacity for windows in this group. The
value is a number between 0.0 and 1.0 inclusive.
pignore
Ignore initial window position requested by pro‐
gram.
shaded
Make windows in this group initially shaded.
sticky
Make windows in this group sticky.
tiled
Attempt to tile windows in this group upon initial
placement. If tiled placement fails, windows will
fall back to cascaded placement (the default) or
centered if specified.
title
Forces windows in this group to have a title bar.
vmax
Make windows in this group maximize vertically.
WINDOW STYLE
The WindowStyle tag controls the look of window borders. Within
this tag, the following tags are supported:
Font
The font used for title bars. See the FONTS section for
more information.
Width
The width of window borders in pixels. The default is 4,
the minimum is 1, and the maximum is 128.
Height
The height of window title bars in pixels. The default is
20, the minimum is 2, and the maximum is 256.
Active
The colors/opacity used for the active window. See the
COLORS section for more information on colors. The fol‐
lowing tags are supported:
Text
The color of text on the title bar. The default
is white.
Title
The color of the title bar (gradients are sup‐
ported). The default is #CC7700:#884400.
Opacity
The opacity of the window. This is a floating
point value between 0.0 and 1.0. The default is
1.0. Note that a composite manager, such as
xcompmgr, is required for this.
Outline
The color of the window outline. The default is
black.
Inactive
The colors used for inactive windows. See the COLORS sec‐
tion for more information on colors. The following tags
are supported:
Text
The color of text on the title bar. The default
is white.
Title
The color of the title bar (gradients are sup‐
ported). The default is #333333:#111111.
Opacity
The opacity of inactive windows. This is a float‐
ing point value between 0.0 and 1.0. The default
is 0.75. Note that a composite manager, such as
xcompmgr, is required for this.
Outline
The color of the window outline. The default is
black.
TRAY STYLE
The TrayStyle tag controls the look of trays. Within this tag
the following tag is supported:
Font
The default tray font to use. See the FONTS section for
more information.
Foreground
The default foreground color. See the COLORS section for
more information.
Background
The default background color. See the COLORS section for
more information.
ActiveForeground
The default foreground color for active items. See the
COLORS section for more information.
ActiveBackground
The default background color for active items. See the
COLORS section for more information.
Opacity
The opacity of trays. This is a floating point value
between 0.0 and 1.0. Note that a composite manager, such
as xcompmgr, is required for this.
TASK LIST STYLE
The TaskListStyle tag controls the look of task lists. This tag
supports the following attribute:
insert mode
This determines how new items are added to the task list.
Valid options are left and right. The default is right.
Within this tag the following tags are supported:
Font
The font used for program names. Inherited from
TrayStyle by default. See the FONTS section for more
information.
Foreground
The foreground color of the task list items. Inherited
from TrayStyle by default. See the COLORS section for
more information.
Background
The background color of the task list items (gradients
are supported). Inherited from TrayStyle by default.
See the COLORS section for more information.
ActiveForeground
The foreground color of an active item on the task list.
Inherited from TrayStyle by default. See the COLORS sec‐
tion for more information.
ActiveBackground
The background color of an active item on the task list
(gradients are supported). Inherited from TrayStyle by
default. See the COLORS section for more information.
TRAY BUTTON STYLE
The TrayButtonStyle tag controls the look of tray buttons.
Within this tag, the following tags are supported.
Font
The font used for tray buttons. Inherited from TrayStyle
by default. See the FONTS section for more information.
Foreground
The foreground color for tray buttons. Inherited from
TrayStyle by default. See the COLORS section for more
information.
Background
The background color for tray buttons (gradients are sup‐
ported). Inherited from TrayStyle by default. See the
COLORS section for more information.
ActiveForeground
The foreground color for pressed tray buttons. Inherited
from TrayStyle by default. See the COLORS section for
more information.
ActiveBackground
The background color for pressed tray buttons (gradients
are supported). Inherited from TrayStyle by default.
See the COLORS section for more information.
CLOCK STYLE
The ClockStyle tag controls the look of clocks. Within this
tag, the following tags are supported.
Font
The font used for clocks. Inherited from TrayStyle by
default. See the FONTS section for more information.
Foreground
The color of the text. Inherited from TrayStyle by
default. See the COLORS section for more information.
Background
The background color. Inherited from TrayStyle by
default. See the COLORS section for more information.
PAGER STYLE
The PagerStyle tag controls the look of pagers. Within this
tag, the following tags are supported:
Outline
The color of the outline around windows shown in the
pager. See the COLORS section for more information.
Foreground
The color of inactive windows shown in the pager. See the
COLORS section for more information.
Background
The background color of inactive desktops shown in the
pager. See the COLORS section for more information.
ActiveForeground
The color of active windows shown in the pager. See the
COLORS section for more information.
ActiveBackground
The background color of active desktops shown in the
pager. See the COLORS section for more information.
Text
The color to use for pager labels. See the COLORS section
for more information.
Font
The font to use for pager labels. See the COLORS section
for more information.
MENU STYLE
The MenuStyle tag controls the look of the menus in JWM (this
includes the root menu and window menus). Within this tag the
following tags are supported:
Font
The font used on menus See the FONTS section for more
information.
Foreground
The text color of inactive menu items. See the COLORS
section for more information.
Background
The background color of inactive menu items. See the COL‐
ORSsection for more information.
ActiveForeground
The text color of active menu items. See the COLORS sec‐
tion for more information.
ActiveBackground
Text background color of active menu items (gradients are
supported). See the COLORS section for more information.
Opacity
The opacity of menus. This is a floating point value
between 0.0 and 1.0. Note that a composite manager, such
as xcompmgr, is required for this.
POPUP STYLE
The PopupStyle tag controls the look of popup windows such as
those shown when the mouse sits over a task list item. This tag
supports the following attributes:
delay int
The delay in milliseconds before popups activate. The
default is 600.
enabled bool
Determine if popups are shown. Default is true.
Within this tag the following tags are supported:
Font
The font to use. See the FONTS section for more informa‐
tion.
Outline
The color of the window outline. See the COLORS section
for more information.
Foreground
The text color. See the COLORS section for more informa‐
tion.
Background
The background color. See the COLORS section for more
information.
FONTS
Fonts for various parts of JWM are specified within a Font tag.
The text of this tag determines the font to use. This can be
either a standard X font string or, if compiled with XFT sup‐
port, an XFT font string.
COLORS
Colors for various parts of JWM are specified within specific
tags (described above). Colors may either be hex triplets in RGB
format (for example, #FF0000 is red) or by a name recognized by
the X server. For components that support gradients, two colors
may be specified separated by a colon.
ICONS
Icons for windows that don't supply an icon via the _NET_WM_ICON
hint are located by searching the icon search path(s) for an
icon whose name (minus the ".xpm" or ".png" extension) matches
the instance name of the window as returned in the WM_CLASS
hint. If this lookup fails, a default icon is supplied. This
icon will be displayed for the window on it's title bar and on
the task list. Icons that are not an appropriate size will be
scaled. Square icons work best.
For menu items, the icon path is searched for a match. the icon
specified for a menu item must be the exact name of the icon
file with the extension. If no match is found, a blank area
will appear where the icon should appear. If an icon is not
specified for any menu item in a menu, no space will be allo‐
cated for icons.
Zero or more IconPath tags may be specified. The text of this
tag is assumed to be an absolute directory path to a directory
containing XPM, PNG, and/or JPEG icons. When searching for
icons, if multiple paths are provided, they will be searched in
order until a match is made. Note that icon, PNG, JPEG, and XPM
support are compile-time options.
KEY BINDINGS
Keyboard bindings in JWM are specified in Key tags. Either the
key or keycode attributes must be specified to determine which
key will cause an action. The optional attribute, mask, speci‐
fies what key mask, if any, must be in effect for the binding to
match. Finally, the text of the Key tag is the action to per‐
form.
One or more of the following key masks may be specified for mask
(see xmodmap(1)):
A The "Alt" key (mod1).
C Control
S Shift
1 mod1
2 mod2
3 mod3
4 mod4
5 mod5
The key specified in the key attribute must contain a valid key
string for XStringToKeysym(3). These values are usually what one
would expect (for example, the escape key is called "Escape").
Valid actions for a key binding are:
up Move up. Not grabbed.
down Move down. Not grabbed.
right Move right. Not grabbed.
left Move left. Not grabbed.
escape Stop a move/resize, exit a menu, or cancel an
action. Not grabbed.
fullscreen
Toggle between fullscreen and not fullscreen.
Grabbed.
select Make a menu selection or confirm an action. Not
grabbed.
next Move to the next window in the task list. Grabbed.
nextstacked
Move to the next window in the stacking order.
Grabbed.
prev Move to the previous window in the task list.
Grabbed.
prevstacked
Move to the previous window in the stacking order.
Grabbed.
close Close the active window. Grabbed.
minimize
Minimize the active window. Grabbed.
maximize
Maximize the active window. Grabbed.
shade Shade the active window. Grabbed.
stick Stick/unstick the active window. Grabbed.
move Move the active window. Grabbed.
resize Resize the active window. Grabbed.
root:n Show root menu n. Grabbed.
window Show the window menu for the active window.
Grabbed.
desktop#
Switch to a specific desktop. To use this, "#"
must be specified in the key section. The number 1
to the number of desktops configured are then sub‐
stituted for "#". Grabbed.
rdesktop
Move one desktop to the right. Grabbed.
ldesktop
Move one desktop to the left. Grabbed.
udesktop
Move up one desktop. Grabbed.
ddesktop
Move down one desktop. Grabbed.
showdesktop
Show/hide the desktop (maximize/minimize all win‐
dows). Grabbed.
showtray
Unhide the tray (when using autohide). Grabbed.
exec:command
Execute command. Grabbed.
restart
Restart JWM. Grabbed.
Note that keys that are grabbed will not be available to appli‐
cations other than JWM since JWM will interpret these. Also note
that there are no default key bindings. Finally, it is possible
to bind multiple key combinations to the same action.
MOUSE BINDINGS
Any button other than the scroll wheel (buttons 4 and 5) on the
root window will bring up the root menu unless otherwise speci‐
fied via the onroot attribute of RootMenu. Scrolling up on the
root window switches to the left desktop and scrolling down
switches to the right desktop.
Button 1 (typically the left button):
Over the border, dragging resizes the window. Over the
title bar, dragging moves the window and double clicking
toggles the maximized state. Over the menu button,
clicking shows the menu. Over the minimize button,
clicking minimizes the window. Over the maximize button,
clicking toggles between maximized and normal. Over the
close button, clicking closes the window.
Button 2 (typically the middle button):
Over the maximize button, clicking toggles between verti‐
cally maximized and normal. Anywhere else on a window
frame, dragging while holding button 2 will move the win‐
dow.
Button 3 (typically the right button):
Over the frame, clicking shows the window menu. On the
minimize button, clicking toggles between shaded and
unshaded. On the maximize button, clicking toggles
between horizontally maximized and normal. On the close
button, clicking closes the window. Over the pager,
dragging while holding button 3 will move a window.
Scrolling up over the title bar will shade the window and
scrolling down will unshade the window. When a menu is open,
the scroll wheel will move through menu items. When over the
pager, the scroll wheel will switch desktops. When over a task
list, the scroll wheel will switch windows.
DESKTOPS
Virtual desktops are controlled with the Desktops tag. Within
this tag the following attribute is supported:
width int
The number of virtual desktops in the horizontal direc‐
tion. The default is 4.
height int
The number of virtual desktops in the vertical direction.
The default is 1.
Within the Desktops tag the following tags are supported:
Background
The default background for desktops. The type attribute
determines the type of background and the text contained
within this tag is the value. Valid types are:
solid
A solid color. See the COLORS section for more
information. This is the default.
gradient
A gradient color. See the COLORS section for more
information.
image
A stretched image. This may be an XPM, PNG, or
JPEG image. Note that support for XPM, PNG, and
JPEG images must be compiled in and icon support
is required.
tile
A tiled image. Like image, but the image is tiled
instead of stretched.
command
A command to run for setting the background.
Desktop
Desktop-specific data. The name attribute may be speci‐
fied to name the desktop (the default is the desktop num‐
ber). Within this tag a Background tag may be specified
for a desktop-specific background. See Background above
for more information.
OTHER SETTINGS
The following tags may also be supplied:
ButtonClose
An icon to display for the close button on client windows
instead of the default.
ButtonMax
An icon to display for the maximize button on client win‐
dows instead of the default.
ButtonMaxActive
An icon to display for the maximize button on maximized
client windows instead of the default.
ButtonMin
An icon to display for the minimize button on client win‐
dows instead of the default.
DoubleClickDelta
The number of pixels the mouse can move during a double
click. The default is 2. Valid values are between 0 and
32 inclusive.
DoubleClickSpeed
The maximum number of milliseconds between clicks for a
double click. The default is 400. Valid values are
between 1 and 2000 inclusive.
FocusModel
The focus model to be used. The default is "sloppy".
Valid values are "click" (click to focus) and "sloppy"
(focus follows mouse).
MoveMode
The move mode. The default is "opaque". Valid values are
"opaque" and "outline". This tag supports the following
attributes:
coordinates { off | corner | window | screen }
The location of the status window. The default is
screen.
delay int
The delay in milliseconds before moving a window
to a different desktop. Setting this to 0 dis‐
ables dragging windows between desktops. The
default is 1000.
ResizeMode
The resize mode. The default is "opaque". Valid values
are "opaque" and "outline". The optional coordinates
attribute determines the location of the move status win‐
dow. Possible values are: This tag supports the following
attribute:
coordinates { off | corner | window | screen }
The location of the status window. The default is
screen.
SnapMode
The snap mode. The default is "border". Valid values are
"none" (for no snapping), "screen" (for snapping to the
edge of the screen), and "border" (for snapping to the
borders of windows and the screen). An optional
attribute, distance, specifies the distance for snapping.
The default is 5. Valid values are between 1 and 32
inclusive.
StartupCommand
A command to run when JWM starts.
ShutdownCommand
A command to run when JWM exits.
RestartCommand
A command to run when JWM restarts.
AUTHOR
Joe Wingbermuehle <joewing@joewing.net>
SEE ALSOX(1)v2.2.2 2014-05-14 jwm(1)