AFTERSTEP(1.4)

AFTERSTEP(1.4)

afmtodit Home Page User Commands Index ali


NAME
       afterstep - X11 window manager

SYNOPSIS
       afterstep [-d dpy ] [-debug] [-f config_file ] [-s]

WARNING
       This  afterstep.man  file  is  not very up to date, please
       refer to New-in-1.4 or look.NEWFEATURES examples for  Zap,
       GetHelp,   ChangeWindow,  ChangeBackground,  ChangeLook  &
       ChangeFeel, TitleTextMode,  ResizeMoveGeometry  and  start
       menu directory.

DESCRIPTION & HISTORY
       AfterStep  is  a continuation of the BowMan window manager
       which was originally put together by Bo Yang.  BowMan  was
       based  on  the  fvwm  window  manager,  written  by Robert
       Nation.  Fvwm was based on code from twm.   And  so  on...
       It  is  designed  not only to emulate some of the look and
       feel of the NEXTSTEP(tm) user interface, but also  to  add
       useful,  requested,  and neat features.  The changes which
       comprise AfterStep's personality were originally  part  of
       BowMan  development, but due to a desire to move past SIM-
       PLE EMULATION and into a niche as its OWN valuable  window
       manager, the previous designers decided to change the pro-
       ject name and move on.

       Some major changes from fvwm 1.24 include:
              1. NEXTSTEP(tm)-alike  title  bar,  title  buttons,
              borders and corners.
              2.   AfterStep's Wharf To avoid copyright complica-
              tions it is not called a "Dock".
              3. NEXTSTEP(tm) style menus. However the menus  are
              not  controlled  by  applications, they are more of
              pop-up service lists on the root window.
              4. NEXTSTEP(tm) style icons. The default icons  are
              consistent  with  those  in the NEXTSTEP(tm) inter-
              face, but they are configurable.
              5. Dissociation of Pager  desktops  for  background
              pixmaps  and  configuration : each desktop can have
              its own configuration, its own look, its own  back-
              ground  picture  and all this can be changed on fly
              with Start/Desktop menu.

       However, flexibility was not traded off. Initiation files,
       in  ~/GNUstep/Library/AfterStep  ,  recognizes most of the
       fvwm 1.24r commands.

SPECIAL NOTE FOR XFREE86 USERS
       XFree86 provides a virtual screen whose operation  can  be
       confusing  when used in conjunction with this virtual win-
       dow manager.  With XFree86,  windows   which   appear   on
       the  virtual   screen   actually   get  drawn  into  video

       memory, so the virtual screen size is limited by available
       video memory.

       With  AfterStep's  virtual  desktop,  windows which do not
       appear on the screen  do  not  actually  get  drawn   into
       video  RAM.  The size of the virtual desktop is limited to
       about 32,000 by 32,000 pixels. It is probably  impractical
       to use a virtual desktop more than about 5 times the visi-
       ble screen in each direction.  Note that memory usage with
       the   virtual  desktop  is  a  function of  the  number of
       windows which exist. The size of the desktop makes no dif-
       ference.

       When becoming familiar with AfterStep , it is  recommended
       that you  disable XFree86's virtual screen, by setting the
       virtual  screen  size  to  the  physical screen size. When
       familiar with  AfterStep  ,  you  may  want  to  re-enable
       XFree86's virtual screen.

COPYRIGHTS
       AfterStep  is  distributed  under  GNU  GPL  v2.  However,
       AfterStep was based on  BowMan  which  derived  from  Fvwm
       code,  which is in turn derived from twm code, thus some C
       source file from AfterStep shares copyrights with twm.

       AfterStep  is  copyright  1996  by  Frank  Fejes,  Alfredo
       Kojima, and Dan Weeks.  & copyright 1998 by Guylhem Aznar,
       Raphael Goulais, and Rob Malda.

       Please see the file COPYING included  with  the  AfterStep
       distribution  for the conditions that are incumbent on the
       users of AfterStep due to its relations to fvwm and twm.

       AUTHORS AND ALL OTHER CONTRIBUTERS DISCLAIM ALL WARRANTIES
       WITH  REGARD  TO THIS SOFTWARE, INCLUDING ALL IMPLIED WAR-
       RANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT  SHALL
       ANY  CONTRIBUTOR  BE  LIABLE  FOR ANY SPECIAL, INDIRECT OR
       CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER  RESULTING
       FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
       CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT
       OF  OR  IN  CONNECTION WITH THE USE OR PERFORMANCE OF THIS
       SOFTWARE.

ANATOMY OF A WINDOW
       AfterStep puts  a  decorative border on the top and bottom
       of most windows. This border consists of a bar on the bot-
       tom that is divided into three sections.   These  sections
       are  referred  to  as  "handles".  There is also a top bar
       called the title bar which is used to display the name  of
       the window and two title-bar buttons.

       Unless  the standard defaults files are modified, pressing
       mouse button 1 on the titlebar will begin a move operation
       on  the window. Pressing button 1 on the bottom handle bar

       will begin a resize operation. Pressing button  2  on  the
       titlebar  will  move  the  window to the foreground or the
       background.

       The default configuration has 2 title-bar buttons on  each
       side  of  the  title-bar,  with one extra one on the right
       side.

BUTTONS
       Click[mouse button] is abbreviated to CN and  buttons  are
       called 1/2 3/4/5 from left to right :

       1  will  change to next window with C1 or C2 and open help
       file with C3 2 will open window functions with C1 and open
       window list with C2 or C3

       (window title is between 2 and 3)

       3  will iconify the window with C1 and maximise the window
       with C2 or C3 4 will hide the window  under  its  titlebar
       with  C1  and  stick it to the screen (if you move on your
       desktop) with C2 or C3

       5 will kill the window, nicely with C1  or  C2  and  badly
       with C3

       See  the section on "Mouse" for more information.  Further
       modifications to AfterStep's behavior can be made creating
       a  file  in  ~/GNUstep/Library/AfterStep/desktop/looks/  ,
       using examples a guide.

       Shaped windows such as xeyes or oclock  get  a  title  bar
       that floats above the window and no bottom bar.  The back-
       ground area of shaped windows is transparent.  If you  are
       tight  on  memory, you can disable the SHAPE extensions by
       modifying configure.h and recompiling AfterStep.  This way
       shaped  windows  get a solid color background and you save
       about 60 kbytes of memory when no shaped windows are  pre-
       sent.   Of  couse,  shaped  window  are  nicer  with SHAPE
       enabled !

THE VIRTUAL DESKTOP
       AfterStep provides multiple virtual desktops for users who
       wish  to use them. The screen is a viewport onto a desktop
       which is larger than (or the same  size  as)  the  screen.
       Several distinct desktops  can   be accessed. Concept: one
       desktop for  each  project,  or  one  desktop   for   each
       application, when  view  applications are distinct.  Since
       each desktop can be larger than the physical screen,  win-
       dows which  are larger  than  the  screen, or large groups
       of related windows, can easily be viewed.

       The size of the each virtual desktop must be specified  at

       start-up  (default:  2  times  the  physical  size  of the
       screen). All virtual desktops must be the same  size.  The
       total  number  of distinct desktops need not be specified,
       but is limited to approximately 4 billion total. All  win-
       dows  on  the current desktop can be displayed in a Pager,
       or miniature view or the current desktop.  Windows   which
       are   not on the current desktop can be listed, along with
       their geometries, in a window list, accessible as a pop-up
       menu.

       "Sticky"  windows  are windows which transcend the virtual
       desktop by "Sticking to the screen's glass."  They  always
       stay  put  on  the  screen.  This is convenient for things
       like clocks and xbiff's, so you only need to run one  such
       gadget, and it always stays with you.

       Window  geometries  are specified relative  to the current
       viewport. That is, xterm -geometry +0+0, will always  show
       up in  the  upper-left  hand corner of the visible portion
       of the screen. It is  permissible  to  specify  geometries
       which  place   windows on the virtual desktop, but off the
       screen.  For example, if the visible  screen  is  1000  by
       1000 pixels, and  the desktop size is 3x3, and the current
       viewport is at the upper left hand corner of the  desktop,
       then   invoking  xterm -geometry +1000+1000 will place the
       window just off of the lower  right  hand  corner  of  the
       screen.   It   can  be   found  by moving the mouse to the
       lower right hand corner of the screen, and waiting for  it
       to  scroll into view.  There  is currently no way to cause
       a window to map onto a desktop  other than  the  currently
       active  desk.   A  geometry  specified as  something  like
       xterm -geometry -5-5 will  generally  place   the  windows
       lower right hand corner 5 pixels from the lower right hand
       corner  of  the visible  portion of the  screen.  Not  all
       applications  support window geometries with negative off-
       sets.

       Some applications, like xterm and xfontsel, allow the user
       to   specify  the start-up desk on the command line. xterm
       -xrm "*Desk:1" will start an xterm on desk number 1. Other
       applications  do  not  understand  this option but you can
       force them to start on a desktop if  you  edit  'feel'  in
       ~/GNUstep/Library/AfterStep/desktop/feels/    and   define
       StartsOnDesk X in Style.

INITIALIZATION
       During  initialization, AfterStep will search for  a  con-
       figuration  file  which describes key and button bindings,
       and a few  other  things.  The  format   of  these   files
       will  be described later. First, AfterStep will search for
       a directory named GNUstep/Library/AfterStep/ in the user's
       home   directory.    Failing   that,   it  will  look  for
       /usr/share/afterstep/ for system-wide defaults.   If  that

       file is not found, AfterStep will exit.

       If  you use system-wide defaults, 'startmenu' file in this
       directory must be world writtable (run 'chmod  666  start-
       menu'). It is a serious security hole !

       You  can  also  launch  AfterStep with -f flag to use your
       former .steprc file, like :  afterstep  -f  ~/myold.steprc
       AfterStep  will   set   two   environment  variables which
       will be inherited  by  its  children.  These   are   $DIS-
       PLAY   which describes  the  display on which AfterStep is
       running. $DISPLAY may be unix:0.0 or :0.0,  which  doesn't
       work  too  well   when  passed   through   rsh  to another
       machine, so $HOSTDISPLAY will also be set, and will use  a
       network-ready  description of  the display. Unfortunately,
       $HOSTDISPLAY will use the tcp/ip transport protocol,  even
       for  a   local   connection, so  $DISPLAY  should  be used
       for local connections, as it may use unix-domain  sockets,
       which are faster.

ICONS
       By  default,  AfterStep  is  compiled  with XPM extensions
       which allow one to use color icons  similar  to  those  in
       NEXTSTEP(tm),  ctwm, Microsoft Windows (tm), or the Macin-
       tosh (tm).  In order to use these options, you  will  need
       the   XPM    package,    which  should  be  available  at:
       ftp://ftp.x.org/contrib/libraries.  XPM extensions can  be
       removed  from  AfterStep  if  one wants to have monochrome
       icons and doesn't want pixmap tiled titlebars, etc.

MODULES
       A  module  is  a separate program, which runs as  a  sepa-
       rate  unix process, but transmits commands to AfterStep to
       execute.  These modules get many kinds of window  informa-
       tion from AfterStep.  Users can  write their  own  modules
       to  do any weird or bizarre manipulations, without affect-
       ing the integrity of AfterStep itself.

       Modules  MUST  be spawned by AfterStep, (i.e. not executed
       from the command line) so that AfterStep can  set  up  two
       pipes used for communication between the module and After-
       Step.  Modules can be spawned during AfterStep initializa-
       tion  via  the Module  option, or at any time during the X
       session by use of the Module  built-in  function.  Modules
       can  exist for the duration of  the X session, or can per-
       form a single task and exit.

       If a module is still active when  AfterStep  is  told   to
       quit,  AfterStep  will close down the communication pipes,
       and wait to receive a SIGCHLD from the module,  indicating
       that it  has detected the pipe closure, and has exited. If
       modules fail to detect the pipe  closure,  AfterStep  will
       exit after approximately  30 seconds anyway. The number of
       simultaneously  executing  modules  is  limited   by   the

       operating  system's  maximum number of simultaneously open
       files, usually between 60 and 256.

       Modules are documented in their own manual pages.

ICCCM COMPLIANCE
       AfterStep attempts  to  be  ICCCM  2.0  compliant.  As  of
       this  1.4  release,  colormap  handling  is not completely
       ICCCM compliant.  In addition, ICCCM states that it should
       be  possible  for  applications  to receive ANY keystroke,
       which  is  not consistent  with the   keyboard    shortcut
       approach used in AfterStep and most other window managers.
       The user can disable any AfterStep keystroke  that  should
       be  passed  to  the application and not intercepted by the
       window manager.

OPTIONS
       -d displayname
              Manage  the  display called, "displayname", instead
              of  the name obtained from the environment variable
              $DISPLAY.

       -debug  Puts X transactions  in  synchronous  mode,  which
              dramatically slows things down, but guarantees that
              AfterStep's internal error messages are correct.

       -f config_file
              Causes AfterStep to use an old format .steprc 'con-
              fig_file'  instead  of  ~/GNUstep/Library/AfterStep
              directory where the  window  manager  configuration
              files are actually.

       -s     Run  AfterStep  on  only  the specified screen of a
              multi-screen  display.   Normally,  AfterStep  will
              attempt  to  start  up  on  all screens of a multi-
              screen display.  The "specified screen" is the  one
              provided  in  the  DISPLAY environment variable, or
              provided through the -d option.

CONFIGURATION OPTIONS
       The        configuration        directory,         usually
       ~/GNUstep/Library/AfterStep/  ,contains many files used to
       describe mouse and button bindings,  colors,  the  virtual
       display  size,  and related items.  This section describes
       the configuration options.  Each file from this  directory
       plus  the  ones in desktop/looks and desktop/feels contain
       different options but only  files  ending  with  the  col-
       ordepth  of  your display will be used (i.e. the colors it
       can manage, for example 8bpp or 16bpp)  Lines  within  the
       configuration  files beginning with '#' will be ignored by
       AfterStep.  Lines starting with '*' are expected  to  con-
       tain module configuration commands.  Module are configured
       by  ~/GNUstep/Library/AfterStep/respective   module   name

       files.

       StdForeColor colorname
              Sets  the foreground  color  for  menus   and  non-
              selected  window  titles to colorname.  When  using
              a  monochrome  screen,   this  option  is  ignored,
              and black is used.

       StdBackColor colorname
              Sets  the background  color  for  menus,  and  non-
              selected   windows  to  colorname.   When  using  a
              monochrome  screen,  this option  is  ignored,  and
              white is used.

       StickyForeColor colorname
              Sets the foreground color for  non-selected  window
              sticky   (Sticks-to-glass)  titles  to   colorname.
              When  using  a  monochrome  screen,  this option is
              ignored, and black is used.

       StickyBackColor colorname
              Sets the background color for  non-selected  window
              sticky   (Sticks-to-glass)  windows  to  colorname.
              When using a  monochrome  screen,  this  option  is
              ignored, and  white is used.

       HiForeColor colorname
              Sets  the color for selected window's title to col-
              orname.   When  using  a  monochrome  screen,  this
              option  is  ignored,  and black is used.  Note that
              this currently also controls the  menu  highlights,
              popup menu titles and the icon title font.  This is
              a "feature."

       HiBackColor colorname
              Sets the background color for the  selected  window
              to colorname.  When using a monochrome screen, this
              option is ignored, and white is  used.   Note  that
              this  also controls the IconTitle background color.

       MenuForeColor colorname
              Sets  the  menu  foreground  color.    When   using
              monochrome, this option is ignored.

       MenuBackColor colorname
              Sets   the   menu  background  color.   When  using
              monochrome, this option is ignored.

       MenuStippleColor colorname
              Sets the color for shaded out entries in menus (for
              functions  which  are  not allowed on the currently
              selected  window).  When  using  monochrome,   this
              option  is  ignored, and a stipple pattern is used.

       MenusHigh
              Makes the popup menu submenus appear at the top  of
              the parent menu instead of starting at the point in
              the parent window where the submenu item lies.

       PagerFont fontname
              Makes AfterStep use the font  fontname  instead  of
              "fixed" for the pager labels.

       TextureTypes focusedtitle unfocusedtitle stickytitle menu-
       title menuitem
              Specifies the type of gradient fill to be  used  on
              each  of  the above parts of the AfterStep windows.
              Currently valid values are:
              0 - No texture
              1 - Wharf-style gradient
              2 - Horizontal one way gradient
              3 - Horizontal cylindrical gradient
              4 - Vertical one way gradient
              5 - Vertical cylindrical gradient
              128 - User specified pixmap (See TitlePixmap, etc)
              TextureTypes 1 1 1 1 1.  This makes  all  gradients
              fill  from  the  upper left to the lower right with
              your specified colors.

       TextureMaxColors title unfocusedtitle stickytitle  menuti-
       tle menuitem
              The  number  of colors to use on textures.  Default
              is TextureMaxColors 10 10 10 10 10 on 8 bpp screens
              and TextureMaxColors 128 128 128 128 128 on 16+ bpp
              screens. The actual number of allocated colors  may
              be  lower.   You  must at least specify a value for
              title.

       TitleTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are  drawn  in  a  window titlebar.  The
              default values for from  and  to  are  #101030  and
              #303080  respectively.   Values  must  be in either
              standard X color names or hex notation.

       UTitleTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are drawn in a non-focused window title-
              bar.  The  default  values  for  from  and  to  are
              #86868a  and  #c0b6c3 respectively.  Values must be
              in either standard X color names or hex notation.

       STitleTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are  drawn  in a sticky window titlebar.
              The default values for from and to are #86868a  and
              #c0b6c3  respectively.   Values  must  be in either
              standard X color names or hex notation.

       MenuTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are  drawn  on  the  menu  entries.  The
              default values for from  and  to  are  #101030  and
              #404090  respectively.   Values  must  be in either
              standard X color names or hex notation.

       MTitleTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are  drawn for menu titles.  The default
              values for from and to  are  #101030  and   #303080
              respectively.   Values must be in either standard X
              color names or hex notation.

       TitlePixmap xpmname
              If the TextureType of the focused titlebar  is  set
              to 128, this command causes the xpm defined by xpm-
              name to be tiled in the titlebar instead of a solid
              color  or a gradient texture.  Note that the title-
              bar by default can show a pixmap of up to 19 pixels
              in  height,  though  it  may be of any length.  One
              need not specify the complete path if the xpm is in
              the directory defined by PixmapPath.

       UTitlePixmap xpmname
              If the TextureType of unfocused titlebars is set to
              128, this command causes the xpm defined by xpmname
              to  be  tiled  in  the  titlebar instead of a solid
              color or a gradient texture.  Note that the  title-
              bar by default can show a pixmap of up to 19 pixels
              in height, though the xpm graphic  may  be  of  any
              actual height and length.  The full path to the xpm
              is not required if it is in the  directory  defined
              by PixmapPath.

       STitlePixmap xpmname
              If  the  TextureType  of sticky titlebars is set to
              128, this command causes the xpm defined by xpmname
              to  be  tiled  in  the  titlebar  of sticky windows
              instead of a solid color  or  a  gradient  texture.
              Note that the titlebar by default can show a pixmap
              of up to  19  pixels  in  height,  though  the  xpm
              graphic  may  be  of  any actual height and length.
              The full path to the xpm is not required if  it  is
              in the directory defined by PixmapPath.

       TexturedHandle
              Turns on textures for all window handles.  The han-
              dle texture will be the same as the texture used in
              the window's titlebar.

       GradientText
              Causes  a  gradient  to  be applied to the titlebar
              text of the focused window.   The  gradient  colors
              are set using TextGradientColor.

       TextGradientColor from to
              Colors  that  the gradient will go from and to when
              gradients are drawn for  the  titlebar  text.   The
              default  values  for  from  and  to are #101030 and
              #303080 respectively.  Values  must  be  in  either
              standard X color names or hex notation.

       TitleTextAlign num
              Defines  the  alignment  of the window title in the
              titlebar.  The allowable values for num are as fol-
              lows:
              1: left aligned
              2: right aligned
              3: center aligned (default)

       TitlebarNoPush
              Causes the titlebar not to appear to be "pushed in"
              when you click on it with a mouse button.  This  is
              useful  to  reduce  video strain or if you use tex-
              tured pixmaps that do not look good "pushed in."

       TitleButton num xpmname
              Defines the pixmaps to use instead of  the  default
              NEXTSTEP(tm)  style  titlebar  buttons that are the
              default.  Up to 8 buttons are possible.  num speci-
              fies  the  position of the button on the window and
              is an integer from 1-8.  The  positions  are  indi-
              cated as below:
              1 3 5 7   TitleBarText  8 6 4 2
              Note  that  you must bind an action to any new but-
              tons you add  using  the  Mouse  definitions.   The
              pixmap  defined  by xpmname should be exactly 10x10
              pixels to fit inside the gray button bevel.

       Font fontname
              Makes AfterStep use the font  fontname  instead  of
              "fixed"  for menus, the resize indicators, and icon
              labels  (if IconFont is not specified).

       WindowFont fontname
              Makes AfterStep use the font  fontname  instead  of
              "fixed" for the window title bar.

       NoTitle windowname
              Keeps AfterStep from putting a titlebar in the dec-
              orations for windows named  windowname.   This   is
              handy for clocks and similar gadgets that you don't
              want to take up too much  space.  windowname can be
              a window's name or its class.
              Windowname  can  contain  the wildcards "*" and "?"
              which  match  window  names  in  the  normal   unix
              filename  matching   manner: "*" matches any number
              of any character and "?"  matches one of any  char-
              acter.   Actual  "*",  "?", and "\" characters in a
              window name can be entered by  preceding the  char-
              acter with a "\".

       Sticky windowname
              Sticky windows "stick to the screen's glass."  That
              is,  they don't move the the viewport into the vir-
              tual desktop changes.  windowname can be a window's
              name or its class.  See NoTitle for a discussion of
              the windowname parameter.

       StaysOnTop windowname
              These   windows  always  try  to stay on top of the
              other windows. This might be handy  for  clocks  or
              mailboxes that you would always like to be visible.
              If the window is explicitly lowered,  it  will  not
              try  to  force  its way back to the top until it is
              explicitly raised.  windowname can  be  a  window's
              name  or its class. See NoTitle for a discussion of
              the windowname parameter.

       StartsOnDesk windowname desk-number
              This  command causes windows whose name or class is
              windowname to be initially placed on desktop number
              desk-number. windowname should be enclosed in  dou-
              ble quotes.  If  the  window  requires  interactive
              placement, an outline will be displayed on the cur-
              rent desk, but the window will appear on the speci-
              fied desk.  See NoTitle for  a  discussion  of  the
              windowname parameter.

       CirculateSkip windowname
              Causes  windows  with  the  indicated  name  to  be
              skipped over when the  CirculateUp,   CirculateDown
              or Warp functions  are  invoked.  windowname can be
              a window's name or its class.  See  NoTitle  for  a
              discussion of the windowname parameter.

       CirculateSkipIcons
              Causes circulate and warp operations to  skip  over
              iconified windows.

       WindowListSkip windowname
              Causes  windows  with the indicated name to be left
              out  of the window list.  See NoTitle for a discus-
              sion of the windowname parameter.

       NoFocus windowname
              Causes  windows  with the  indicated  name  to  not
              take  the focus when the pointer moves over them in
              focus-follows-mouse (the default) mode, or when the
              window   is  clicked  in  ClickToFocus  mode.   See
              NoTitle for a discussion of the windowname  parame-
              ter.

       Style windowname options
              This  command is intended to  replace  the commands
              NoFocus, NoBorder, NoTitle,  StartsOnDesk,  Sticky,
              StaysOnTop,  Icon,  WindowListSkip,  CirculateSkip,
              SuppressIcons, BoundaryWidth, NoBoundaryWidth, Std-
              ForeColor,  and StdBackColor with a single flexible
              and comprehensive command.  This command is used to
              set  attributes  of  a window to values  other than
              the default, or to set the  window-manager  default
              styles.   windowname  can   be   a  window's  name,
              class   or resource  string. It  can   contain  the
              wildcards  "*" and/or "?", which are matched in the
              usual unix filename manner.   options  is  a  comma
              separated  list  containing all or some of the key-
              words    BorderWidth,     HandleWidth,     NoFocus,
              Icon/NoIcon, NoTitle/Title, NoHandles/Handles, Win-
              dowListSkip/WindowListHit, CirculateSkip/Circulate-
              Hit,  StaysOnTop/StaysPut, Sticky/Slippery, StartI-
              conic/StartNormal,  Color,  ForeColor,   BackColor,
              StartsOnDesk/StartsAnyWhere,  and IconTitle/NoIcon-
              Title.
              In the above  list,  some options  are  listed   as
              style-option/opposite-style-option.  The  opposite-
              style-option for entries that have  them  describes
              the  default  behavior, and can be used if you want
              to change the default behavior.
              Icon takes an (optional) unquoted string   argument
              which  is the icon bitmap or pixmap to use.  Start-
              sOnDesk takes a numeric argument which is the desk-
              top  number on which the window should be initially
              placed.  BorderWidth takes a numeric argument which
              is   the width of the border to place the window if
              it does not have resize-handles.  HandleWidth takes
              a  numeric argument which is the height of the bot-
              tom bar to place with the window if it  has  resize
              handles.
              Color  takes two arguments. The first is the window
              label's text color, and the second  is  the  window
              decoration's normal background color.  The two col-
              ors are separated with a slash.  If the  use  of  a
              slash causes  problems, then the separate ForeColor
              and BackColor options can be used.
              An example:
              # Change default AfterStep behavior to no titlebars on windows!
              # Also, define a default icon.
              Style "*" NoTitle,Icon unknown1.xpm,BorderWidth 4,HandleWidth 5
              # now, window specific changes:
              Style "WinList"    NoHandles,Sticky,WindowListSkip
              # modules with AfterStep
              Style "Pager"      StaysOnTop, NoHandles,Sticky,WindowListSkip
              Style "*clock"     NoHandles,Sticky,StaysOnTop,WindowListSkip
              Style "xbiff"      Sticky,WindowListSkip
              Style "Wharf"      NoHandles,Sticky,WindowListSkip
              Style "sxpm"       NoHandles
              # Put title-bars back on xterms only!
              Style "xterm"      Title, Color black/grey
              Style "rxvt"       Icon term.xpm
              Style "xterm"      Icon rterm.xpm
              Style "xcalc"      Icon xcalc.xpm
              Style "xbiff"      Icon mail1.xpm
              Style "xmh"        Icon mail1.xpm, StartsOnDesk 2
              Style "xman"       Icon xman.xpm
              Style "matlab"     Icon math4.xpm, StartsOnDesk 3
              Style "xmag"       Icon magnifying_glass2.xpm
              Style "xgraph"     Icon graphs.xpm
              Style "Maker"      StartsOnDesk 1
              Style "signal"     StartsOnDesk 3
              Note that all properties for a window will be  read
              together.  In  the  above  example "Pager" gets the
              property StaysOnTop via an exact window name match,
              but  also gets NoHandles,Sticky, and WindowListSkip
              by a match to "AfterStep*".  It  will get   NoTitle
              by  virtue of a match to "*". If conflicting styles
              are specified for a window,  then  the  last  style
              specified will be used.
              If  the NoIcon attribute is set, then the specified
              window will simply disappear when it is  iconified.
              The   window   can  be recovered through the window
              list.  If Icon is set  without  an  argument,  then
              the  NoIcon   attribute  is cleared, but no icon is
              specified.  An  example  which  allows   only   the
              Pager module icon to exist:
              Style "*" NoIcon
              Style "Pager" Icon

       CenterOnCirculate
              When  circulating,  the desktop page containing the
              window which the pointer is moving to is  automati-
              cally  selected.  If CenterOnCirculate is selected,
              then AfterStep will do its best   to   center   the
              target  window   in   the  desktop viewport, rather
              than just lining up to the closest page.

       DeskTopSize HorizontalxVertical
              Defines the virtual desktop size in  units  of  the
              physical screen size.

       DeskTopScale Scale
              Defines  the  virtual desktop scale with respect to
              the screen.

       BoundaryWidth Width
              Changes the bottom bar (handle) size (in pixels) on
              windows  to  the specified value.  The default size
              is 8.

       NoBoundaryWidth Width
              Changes the width of the bottom  bar  (handle)  for
              windows  with no titles and no resize corners.  The
              default is  0.   Any  positive  or  zero  value  is
              acceptable.   The  handles  without  resize corners
              have the same mouse and keyboard  bindings  as  the
              handles on normal windows.

       XORvalue number
              Changes the value with which bits are  XOR'ed  when
              doing  rubber-band  window moving or resizing. Set-
              ting this value is a trial-and-error process.

       EdgeScroll horizontal vertical
              Specifies the percentage of a page to  scroll  when
              the  cursor  hits the edge of a page. If you  don't
              want any paging or scrolling when you hit the  edge
              of  a  page, include EdgeScroll 0 0  in  your  look
              file. If you want whole pages, use  EdgeScroll  100
              100.  Both  horizontal and vertical should be posi-
              tive numbers.
              If the horizontal and vertical percentages are mul-
              tiplied by 1000, then scrolling will wrap around at
              the edge of  the  desktop.  If  "EdgeScroll  100000
              100000"  is  used, AfterStep will scroll  by  whole
              pages,  wrapping around at the edge of the desktop.

       PagingDefault pagingdefaultvalue
              Tells AfterStep if   it   should   start  up   with
              paging  enabled   or  disabled.   "PagingDefault 0"
              will start AfterStep with  paging  disabled,  "Pag-
              ingDefault  1"   will  start  AfterStep with paging
              enabled by default.

       EdgeResistance scrolling moving
              Tells  how  hard it should be to change the desktop
              viewport by moving the mouse over the edge  of  the
              screen,  and how hard it should be to move a window
              over the edge of the screen.
              The first parameter  tells  how   milliseconds  the
              pointer  must  spend  on  the  screen  edge  before
              AfterStep  will move the viewport. This is intended
              for people who  use  EdgeScroll  100 100, but  find
              themselves  accidentally  flipping pages when  they
              don't  want to.
              The second parameter tells how many pixels over the
              edge of the screen a window's edge must move before
              it actually moves partially off the screen.
              Note  that, with EdgeScroll 0 0, it is still possi-
              ble  to move or resize windows across  the edge  of
              the  current  screen. By making the first parameter
              to EdgeResistance 10000, this  type  of  motion  is
              impossible.  With EdgeResistances less than  10000,
              but greater than 0, moving over pages becomes  dif-
              ficult but not impossible.

       OpaqueMove percentage
              Tells AfterStep the   maximum  size   window   with
              which  opaque  window  movement should be used. The
              percentage is   percent   of   the  total    screen
              area.  With OpaqueMove 0, all windows will be moved
              using  the traditional  rubber-band  outline.  With
              OpaqueMove  100,  all windows will be move as solid
              windows. The default  is OpaqueMove 5 which  allows
              small  windows to be moved in an opaque manner, but
              large  windows to be moved as rubber-bands.   Using
              this  option  with  large values can slow down your
              video response on slower systems.

       ClickToFocus [flag]
              Normally keyboard input  goes  to  the  window  the
              mouse  pointer  is  in.  If this option is set, the
              keyboard input (aka focus) stays  with  one  window
              until a new window is clicked on.
              If  the (optional) flag is given a nonzero value, a
              mouse button click that changes the keyboard  focus
              is  caught and processed only by AfterStep.  If the
              flag is zero, or is  not  supplied,  a  click  that
              changes  the focus is passed through for the appli-
              cation to process.
              When the flag is nonzero, it is useful to assign  a
              NoFocus style to all applications that are entirely
              mouse-controlled (e.g. Wharf).

       SloppyFocus
              This option  changes  the  way  focus-follows-mouse
              (the AfterStep default) mode behaves when the mouse
              pointer enters the root window (that is, the  back-
              ground  area).   Normally, the keyboard focus would
              disappear at this stage, but  when  SloppyFocus  is
              on,  exiting  a  window  to  enter  the root window
              leaves the focus unchanged.  The focus will not  be
              removed from the last (non-root) window you visited
              until the mouse pointer enters a new window.
              SloppyFocus has no effect in ClickToFocus mode.

       ClickToRaise buttons
              In focus-follows-mouse mode, ClickToRaise specifies
              mouse  buttons that raise a partially obscured win-
              dow to the top.  On a window that is fully  visible
              (except a normal window may still be below StaysOn-
              Top windows) all the mouse buttons behave normally.
              Please  note  that in most applications you can use
              mouse buttons in combination with the shift key  to
              avoid the ClickToRaise behavior when needed.
              In  click-to-focus mode, ClickToRaise specifies the
              mouse buttons that raise an unfocused window to the
              top.   The  rest of the mouse buttons merely change
              the focus without raising, although  you  can  have
              them  do delayed raising with the AutoRaise command
              or the Auto module.
              In both focusing modes, ClickToRaise is  not  trig-
              gered  on window decorations such as the title bar,
              but only on the application area.
              The mouse buttons are numbered  as  in  the  Button
              command.   You can specify any or all of your mouse
              buttons here as a space- or comma-separated list.

       OpaqueResize
              Causes resize operations to be done with the window
              itself,  instead  of an outline.  Using this option
              does not always work well on slower video  systems.

       DontMoveOff
              Prevents windows from being moved off or  initially
              placed off of the desktop.  A few programs will not
              work correctly if you use this  option.  This  only
              keeps  windows  from  being completely lost off the
              edge of the desktop. It insists on keeping 16  pix-
              els on  the  desktop, but doesn't care a bit  about
              keeping the whole window on the desk.  See  EdgeRe-
              sistance if you don't like having windows partially
              off the screen.

       AutoRaise delay
              This built-in was replaced by the module Auto(1).

       Pager X_Location Y_Location
              Enables a paging style of moving across  the  desk-
              top.  A  Pager  window  will appear  at  (  X_Loca-
              tion,  Y_Location ) (not a pop-up). Miniature  ver-
              sions  of all  the windows on the  virtual  desktop
              are shown in the pager.  The color of the miniature
              version  is  the same as the color of the full-size
              window's border.
              In the Pager window, pressing mouse button  1  will
              move  the desktop viewport to the selected page (in
              click-to-focus mode, it will also move the keyboard
              focus  to the window whose miniature you click on).
              Pressing  button 2 on a window  in the  pager  will
              begin a window move, using the miniature to quickly
              move  the window anywhere on the desktop.  Pressing
              button 3 will move the top-left corner of the view-
              port  to the location of the button press, even  if
              it does not line up with a page.  Dragging button 3
              will cause the selected viewport to scroll  as  you
              move   the  pointer.  The Pager   is  automatically
              sticky, but does not automatically StayOnTop.

       Mouse Button Context Modifiers Function
              Defines  a mouse binding.  Button is the mouse but-
              ton number.  If  Button  is  zero, then any  button
              will   perform  the  specified  function.   Context
              describes in  what  context  the  binding  applies.
              Valid  contexts  are R for the root window,  W  for
              an  application window,  T   for   a  window  title
              bar,  S for a window titlebar, or bottom bar, F for
              a window frame (the handle corners), I for an  Icon
              window,  or any combination of these letters.  1 is
              for the left title-bar button  and  2  is  for  the
              title-bar  button A  is  for any context except for
              title-bar buttons. For instance, a context  of  FST
              will  apply when  the mouse   is anywhere in a win-
              dow's border, except the title-bar buttons.
              Modifiers is any combination of N for no modifiers,
              C for  control,   S for shift, M for Meta, or A for
              any modifier.  For example, a modifier of CM   will
              apply  when  both the Meta and shift keys are down.
              Function is one of the following: AfterStep's built
              in  functions,  a  Pop-up  menu,  or a user-defined
              function.

       Key keyname Context Modifiers Function
              Binds  a  keyboard key  to  a  specified  AfterStep
              built  in  function. Definition is the same as  for
              a  mouse binding,  except  that  the  mouse  button
              number  is replaced with a key name. The keyname is
              one        of        the        entries        from
              /usr/include/X11/keysymdef.h,  with the leading XK_
              omitted.  The  Context  and  Modifiers  fields  are
              defined  as  in the mouse binding.  Function is one
              of the following: AfterStep's built in functions, a
              Pop-up menu, or an exec call to a program.
              Binding  a key to a title-bar button will not cause
              that button to appear unless a mouse  binding  also
              exists.

       IconBox left top right bottom
              Defines   regions  of  the screen in which to place
              icons. Up to four icon boxes can be defined. If  an
              IconBox  line is provided, the icons will automati-
              cally be placed in them, if possible. Each  time  a
              window   is   iconified,   a new place is found for
              it.  Icon boxes are searched for  space  going left
              to  right,   then  top to bottom. Icons will not be
              automatically placed on top of  other  icons,   but
              they   may  be placed  underneath  application win-
              dows. If left or right is negative, then  AfterStep
              will  add   the   screen  width  to it.  If  top or
              bottom is negative, then  AfterStep  will  add  the
              screen  height  to it. NOTE: -0  is not  parsed  as
              the  right  or bottom pixel on the screen. You have
              to use -1 instead.
              If no IconBox line is provided, or all  icon  boxes
              are  full, then AfterStep will place icons near the
              current pointer location.

       StubbornIconPlacement
              When used with IconBoxes, causes  icons   to  avoid
              placing themselves underneath existing windows.

       StubbornIcons
              Changes de-iconification behavior a bit. Instead of
              having windows always de-Iconify themselves on  the
              current  page,  the  de-iconify into their original
              position.

       SuppressIcons  Prevents icon windows from being created or
       drawn.  When  used  with  the  window-list, this  provides
       a sort of icon manager.

       StickyIcons
              Causes icons to always stick to the screen's glass.
              That  is, icons always follow you around the  desk-
              top.   When  a  window  is  de-iconified,  it  gets
              unstuck.  Some people find this  a  useful  way  of
              moving windows around.

       IconTitle
              Makes  AfterStep  add  icon  titles to the applica-
              tion's icon.  Note  that  using  icon  titles  will
              leave less space for the application icon itself on
              the button, since the icontitle covers up  part  of
              the button.

       IconFont fontname
              Makes  AfterStep  use the font fontname instead  of
              "fixed" for the IconTitle fonts.

       ButtonNoBorder
              Defines that the icon buttons should not  have  any
              borders  drawn  around  them.  This is particularly
              useful to have  "flat"  icon  buttons,  or  if  one
              defines  a pixmap as the background for the buttons
              that already includes a border.

       ButtonTextureType num
              Defines the gradient type to use on the  icon  but-
              tons.   See  the discussion of TextureTypes for the
              allowable values for num.  Use 0  for  num  if  you
              want to set a solid color for the texture with But-
              tonBgColor.

       ButtonTextureColor from to
              Colors that the gradient will go from and  to  when
              gradients  are drawn for icon buttons.  The default
              values for from and  to  are  #101030  and  #303080
              respectively.   Values must be in either standard X
              color names or hex notation.

       ButtonMaxColors NumColors
              The number of colors to use  on  icon  button  tex-
              tures.   The  default  is 10 on 8-bit video systems
              and 128 on 16+ bit video systems.

       ButtonBgColor Color
              If ButtonTextureType is  set  to  0,  this  command
              forces  AfterStep to use Color for the button back-
              ground.   The default value for Color  is  #bdbebd.
              Values  must be in either standard X color names or
              hex notation.

       ButtonPixmap xpmname
              Defines the xpm file to be used as  the  background
              for  icon  buttons.   This  xpm  will be what shows
              through the transparent pixels in the application's
              defined xpm icon.  Application icons can be defined
              using Icon or Style.

       IconPath path
              Specifies the full path name of a directory   where
              bitmap  (monochrome) icons  can be found.  The path
              should start with a slash. Multiple directories may
              be  specified  in a colon separated list, just like
              the PATH environment  variable.

       PixmapPath path
              Specifies the  full path name of a directory  where
              pixmap (color) icons can be found. The path  should
              start  with  a  slash.  Multiple directories may be
              specified in a colon separated list, just like  the
              PATH environment variable.

       Icon windowname bitmap-file
              Specifies the  bitmap to be used for a window  when
              it is iconified.  The windowname can be an applica-
              tions window  name  or  class  name,  and  must  be
              enclosed in quotes. The bitmap-file is  either  the
              full  path name to a standard X11 bitmap file, or a
              file in the IconPath or PixmapPath.  The  specified
              bitmap/pixmap  is used  in  preference to any  icon
              supplied by the window itself.
              If  AfterStep  is  compiled  with XPM  support  for
              color icons, then can be an XPM pixmap file.
              windowname should be enclosed in double quotes, but
              bitmap-file should not. No environmental  variables
              should be used in the bitmap-file specification.
              If windowname is an empty string, then  the  speci-
              fied file is the default icon, and will be used  if
              no other icon bitmap or pixmap can be found:
              Icon "" my-favorite-icon

       DecorateTransients
              Causes  transient windows, which are normally  left
              undecorated, to be given  the  usual AfterStep dec-
              orations. Note  that some pop-up windows,  such  as
              the xterm menus, are not managed by the window man-
              ager, and still do not receive decorations.

       RandomPlacement
              Causes  windows  which would normally require  user
              placement  to be automatically  placed  in ever-so-
              slightly random locations.

       SmartPlacement
              Causes  windows  which would normally require  user
              placement  to be automatically  placed  in a  smart
              location  - a location in which they do not overlap
              any other windows on the screen. If no  such  posi-
              tion can be found, user-placement or random  place-
              ment  will be used as a fall-back method.  For  the
              best of all possible worlds, use both random place-
              ment and SmartPlacement.

       StubbornPlacement
              When  using SmartPlacement, causes new  windows  to
              avoid placing themselves over icons.

       NoPPosition
              Instructs AfterStep to ignore the  PPosition  field
              when  adding  new  windows.    Adherence   to   the
              PPosition field is required for some  applications,
              but  if  you  don't  have  one of those, its a real
              headache.

       ClickTime
              delay Specifies the  maximum   delay   (in   milli-
              seconds)  between  a  button  press  and  a  button
              release for the Function builtin to  consider   the
              action   a   mouse  click. The default delay is 150
              milli-seconds.
              The same delay is used to decide whether  a  pop-up
              menu  brought  up by pressing a mouse button should
              stay visible after the mouse button is released.

       ModulePath
              Specifies a  path  for  AfterStep  to  search  when
              looking  for  a  module  to  load.   The path is  a
              colon separated  list, just  like  the  usual  Unix
              PATH  environment  variable. Individual directories
              do  not  need trailing slashes.

       Module ModuleName
              Specifies a  module which should be spawned  during
              initialization.  The  modules in the main distribu-
              tion are  :  Animate,  Auto,  Clean,  Ident,  Save,
              Wharf, Audio, Banner, Form, Pager, Scroll and  Win-
              List.  These modules  have  their  own  man  pages.
              Module can  also  be  used  as  a builtin.  Modules
              can be short lived transient  programs,  or,   like
              Wharf,   can  be   intended   to  remain   for  the
              duration of the X session.  Modules called by  Mod-
              ule will be terminated by the window-manager  prior
              to restarts  and quits, if possible. See the intro-
              ductory section on modules.

       Cursor cursor_num cursor_type
              This provides a very awkward way of changing cursor
              styles.  Cursor  num  tells  which  cursor  you are
              changing, and is a number between 0 and 12, as fol-
              lows:
              0 POSITION      - used when initially placing windows
              1 TITLE         - used in a window title-bar
              2 DEFAULT       - used in windows that don't bother to set
                                their cursor
              3 SYS           - used in one of the title-bar buttons
              4 MOVE          - used when moving or resizing windows
              5 WAIT          - used during an EXEC builtin command
              6 MENU          - used in menus
              7 SELECT        - used for various builtin commands such as
                                iconify
              8 DESTROY       - used for DESTROY and DELETE built-ins
              9 TOP           - used in the top side-bar of a window
              10 RIGHT        - used in the right side-bar (not available)
              11 BOTTOM       - used in the bottom handle of a window
              12 LEFT         - used in the left side-bar (not available)
              13 TOP_LEFT     - used in the top left corner
              14 TOP_RIGHT    - used in the top right corner
              15 BOTTOM_LEFT  - used in the bottom left corner
              16 BOTTOM_RIGHT - used in the bottom right corner
              The cursor_type  argument  is a number which  tells
              the cursor shape to use. The available numbers  can
              be  found in /usr/include/X11/cursorfont.h, and are
              currently even numbers between 0 and  152.  At  the
              current time, the following cursor types are avail-
              able.
              0   X_cursor              2   arrow
              4   based_arrow_down      6   based_arrow_up
              8   boat                  10  bogosity
              12  bottom_left_corner    14  bottom_right_corner
              16  bottom_side           18  bottom_tee
              20  box_spiral            22  center_ptr
              24  circle                26  clock
              28  coffee_mug            30  cross
              32  cross_reverse         34  crosshair
              36  diamond_cross         38  dot
              40  dotbox                42  double_arrow
              44  draft_large           46  draft_small
              48  draped_box            50  exchange
              52  fleur                 54  gobbler
              56  gumby                 58  hand1
              60  hand2                 62  heart
              64  icon                  66  iron_cross
              68  left_ptr              70  left_side
              72  left_tee              74  leftbutton
              76  ll_angle              78  lr_angle
              80  man                   82  middlebutton
              84  mouse                 86  pencil
              88  pirate                90  plus
              92  question_arrow        94  right_ptr
              96  right_side            98  right_tee
              100 rightbutton           102 rtl_logo
              104 sailboat              106 sb_down_arrow
              108 sb_h_double_arrow     110 sb_left_arrow
              112 sb_right_arrow        114 sb_up_arrow
              116 sb_v_double_arrow     118 shuttle
              120 sizing                122 spider
              124 spraycan              126 star
              128 target                130 tcross
              132 top_left_arrow        134 top_left_corner
              136 top_right_corner      138 top_side
              140 top_tee               142 trek
              144 ul_angle              146 umbrella
              148 ur_angle              150 watch
              152 xterm

       AppsBackingStore
              Causes    application  windows  to request  backing
              store. Specifying this  option  causes  the  window
              manager  to  fail to be ICCCM compliant. While this
              option can speed things up in an X-terminal,  where
              re-draws  of  windows is expensive, it may not help
              much on regular workstations.

       SaveUnders
              Causes the AfterStep decoration frames  to  request
              saveunders.   This  will  cause  AfterStep  to save
              those portions of windows that are not  visible  to
              memory  (not video memory).  This can significantly
              improve the performance during opaque moves, but it
              causes  a  significant  increase  in  memory usage.
              This can  also  cause  garbled  display  with  some
              applications.

       BackingStore
              Causes  AfterStep  decorations  to  request backing
              store. See the discussion for AppsBackingStore.

       Popup PopupName
              Starts the definition of a pop-up menu  which  will
              later   be  bound to a mouse button or key.  Popup-
              Name must be  enclosed in  quotes.   Menu   entries
              are included  on lines following the Popup keyword.
              The menu definition ends with the  key  word   End-
              Popup.  Menu  entries are specified as shown in the
              following example.  The first word  on  each   line
              is   the built-in function which will be performed,
              followed by the caption (enclosed in quotes)  which
              will   be  shown in the menu, followed by any addi-
              tional arguments needed by the  built-in  function.
              Sub-menus  can   be   specified  by using the Popup
              built-in, as long as the sub-menu was  defined ear-
              lier  in  the configuration file.
              Popup "Window Ops"
                     Title   "Window Ops"
                     Move    "Move"
                     Resize  "Resize"
                     Raise   "Raise"
                     Lower   "Lower"
                     Iconify "(De)Iconify"
                     Nop     " "
                     Destroy "Destroy"
                     Title   "HARDCOPY"
                     Exec    "Hardcopy"  exec xdpr &
                     Exec    "Hardcopy RV"  exec xdpr -rv &
              EndPopup
              Note   that  if  a tab character is embedded in the
              caption of a menu entry, then  the  text  following
              the tab will be entered into a second column in the
              menu, and the entire menu will  be   left-adjusted.
              This  is  intended  for  shortcut labeling. The tab
              character must really be a tab. If it  is  expanded
              into spaces it will not work! For example
              Popup "Window Ops"
                     Title   "Window Ops    Alt-F1"
              Is  the  start of a left adjusted menu. Alt-F1 will
              be placed  toward  the  right  side  of  the  menu.
              Shortcut keys may be specified in the menu  defini-
              tion by preceding the character with an  ampersand.
              The ampersand will not be displayed, but the  char-
              acter after it will be displayed at the right  side
              of the same entry, and if the user presses the cor-
              responding key,  then  that item   will   be  acti-
              vated  as  if  the  user had clicked on it with the
              mouse.  Only alphabetic and  numeric characters may
              be  used as shortcut keys.  The shift state of  the
              keyboard  is  ignored  when  testing shortcut char-
              acters. For example:-
              Popup "Window Ops"
                     Maximize "Ma&ximise" 100 100
              EndMenu
              When   this   menu  is  popped  up,  the entry will
              appear as "Maximize x", and pressing the x key will
              cause   the  current window to be maximized. Short-
              cut keys are  not  operative  unless   MENU_HOTKEYS
              was   defined   when  building AfterStep.  If  WIN-
              DOWLIST_HOTKETS  was  also defined, then  hot  keys
              are automatically  added  to the WindowList when it
              is displayed.

       Function FunctionName
              Starts  the  definition of a complex function, com-
              posed  of the AfterStep built-in  functions,  which
              will later  be bound to  a  mouse  button  or  key.
              FunctionName  must be enclosed in quotes.  Function
              entries are  included  on lines following the Func-
              tion  keyword.   The  definition ends with the  key
              word  EndFunction.  Function  entries are specified
              as  shown in the following example. The first  word
              on  each line  is   the   built-in  function  which
              will  be  per-  formed, followed the type of  event
              which  should trigger   the   action  (enclosed  in
              quotes),   followed  by  any  additional  arguments
              needed by the built-in function. Menus can be spec-
              ified  by  using the Popup built-in, as long as the
              menu was  defined   earlier  in  the  configuration
              file.
              The  trigger actions which are recognized are Imme-
              diate, Motion, Click, DoubleClick and  TripleClick.
              Immediate  actions   are  executed  as  soon as the
              function is activated, even if  a  window  has  not
              been  selected.  If  there are  actions  other than
              immediate ones, AfterStep will wait to see  if  the
              user  is clicking, double-clicking, triple-clicking
              or dragging the mouse. After the decision  is  made
              AfterStep  will  execute   only   the builtins from
              the  function  definition  whose   trigger   action
              matches the action performed by the  user.  If  the
              following example were bound to button 1 in a  win-
              dow  title-bar,  then,  when  button  1 is pressed,
              AfterStep would  wait  150  msec  to  see  if   the
              button  is released. If the button is not released,
              AfterStep will start  a move  operation.  When  the
              move  operation is complete, a raise operation will
              be performed. If a button  release   is   detected,
              then  AfterStep  will  wait  another 150 msec for a
              second click.  If  only  one  click   is  detected,
              then  the window will be raised.  If two clicks are
              detected,   the   window   will    be   alternately
              raised   and  lowered. If three clicks are detected
              the window will be Shaded or  un-Shaded,  depending
              on the prior state of the window. The 150 msec wait
              duration can be altered using the ClickTime option.
              Function "Move-or-Raise"
                     Move         "Motion"
                     Raise        "Motion"
                     Raise        "Click"
                     RaiseLower   "DoubleClick"
                     Shade        "TripleClick"
              EndFunction
              The   clicking, double-clicking and triple-clicking
              concepts do not carry  through  to  using  keyboard
              shortcuts.
              Two  special  functions  exist:  InitFunction   and
              RestartFunction.  The  InitFunction  will be called
              when  AfterStep  is  started for the first time  in
              any  X session,  and  can  be  used  to start  mod-
              ules,  set  background   patterns,  and  begin pro-
              grams.   The restart   function  will   be   called
              when  AfterStep  is  restarted.  It  can be used to
              start modules and  set background   patterns,   but
              probably  should not be used to start programs.

BUILT IN FUNCTIONS
       AfterStep supports a small set of built in functions which
       can be bound to keyboard or mouse buttons.

       Nop
              Does  nothing.  This is used to insert a blank line
              or separator in a menu. If the menu item specifica-
              tion is Nop " ", then a blank line is inserted.  If
              it looks like Nop "",  then  nothing is inserted.

       Title
              Does  nothing.  This is used to insert a title line
              in a popup or menu.

       Beep
              Makes the computer beep.

       Quit
              Exits AfterStep, generally causing X to exit too.

       Restart name WindowManagerName
              Causes AfterStep to re-read  itself  if  WindowMan-
              agerName  = afterstep, or to switch to an alternate
              window manager if WindowManagerName  !=  afterstep.
              If  the   window   manager  is  not in your default
              search path, then you  should  use  the  full  path
              name  for WindowManagerName.
              WindowManagerName  is   not   quoted,  but name is.
              name is the name that appears in a menu, if that is
              where   the  function  is  called  from.   name  is
              required even if the function is not called from  a
              menu, for ease of parsing.
              This  command  should not have a trailing ampersand
              or any command line arguments, and should not  make
              use  of any environmental variables. Of the follow-
              ing examples, the first three are sure losers,  but
              the fourth is OK:
              Key F1 R N Restart " " afterstep &
              Key F1 R N Restart " " $(HOME)/bin/afterstep
              Key F1 R N Restart " " twm -f .mystartupfile
              Key F1 R N Restart " " /usr/local/bin/afterstep

       Refresh
              Causes  all  windows on the screen to re-draw them-
              selves.

       Move
              Allows the user to move a window. If  called   from
              somewhere in a window or its border, then that win-
              dow will be moved.  If called from the  root   win-
              dow,  then   the user will be allowed to select the
              target window

       Resize
              Allows the user to resize a window.

       Raise
              Allows the user to raise a window.

       Lower
              Allows the user to lower a window.

       RaiseLower
              Alternately raises and lowers a window.

       Shade
              Emulates the MacOS WindowShade feature.  Once acti-
              vated the window will become a titlebar only.

       Delete
              Sends a message to a window asking that  it  remove
              itself, frequently causing the application to exit.

       Destroy
              Destroys a window. Guaranteed to  get  rid  of  the
              window, but is a fairly violent way to terminate an
              application.

       Close
              If the window accepts the delete window protocol, a
              message  is  sent to the window asking it to grace-
              fully remove itself. If the window does not  under-
              stand  the  delete window protocol, then the window
              is destroyed.

       Iconify [value]
              Iconifies a window if it is not already  iconified,
              or  de-iconifies  it if it is already iconified. If
              the optional argument value is positive,  the  only
              iconification will be allowed, and de-iconification
              will be inhibited. It the optional argument is neg-
              ative, only de-iconification will be allowed.

       Maximize [horizontal vertical]
              Without its optional arguments, Maximize causes the
              window to alternately  switch  from  a  full-screen
              size to its normal size.
              With  the optional arguments horizontal and  verti-
              cal, which are expressed as percentage  of  a  full
              screen,  the  user  can control the new size of the
              window.   If  horizontal  > 0,  then  the  horizon-
              tal dimension of  the  window  will be set to hori-
              zontal*screen_width/100.  The  vertical resizing is
              similar.  For example, the following will switch  a
              window  to  the  full  vertical size of the screen:
              Maximize 0 100
              The following causes windows to be stretched to the
              full width: Maximize 100 0
              This makes a window that is half the screen size in
              each direction: Maximize 50 50
              Values larger than 100 can be used with caution.

       Stick
              Makes  a window sticky if it is not already sticky,
              or non-sticky if it is already sticky.

       Scroll horizontal vertical
              Scrolls  the virtual desktop's viewport by horizon-
              tal pages in the x-direction, and vertical pages in
              the y-direction. Either or both entries may be neg-
              ative.  Both horizontal  and  vertical  values  are
              expressed  in percent of pages, so Scroll  100  100
              means  to scroll  down  and left by one full  page.
              Scroll 50 25 means to scroll left half a  page  and
              down  a  quarter  of  a  page.  The scroll function
              should not be called from pop-up  menus.  Normally,
              scrolling stops at the  edge of the desktop.
              If the horizontal and vertical percentages are mul-
              tiplied by 1000, then scrolling will wrap around at
              the  edge of  the desktop. If "Scroll 100000 0"  is
              executed  over and over, AfterStep will move to the
              next desktop  page  on each  execution,  and   will
              wrap  around  at the edge of the desktop,  so  that
              every page is hit in turn.

       TogglePage
              Temporarily   disables   edge   scrolling.     Edge
              scrolling  can be re-enabled by calling this again.

       CursorMove  horizontal vertical
              Moves the mouse pointer by horizontal pages in  the
              x-direction, and vertical pages in the y-direction.
              Either or both entries may be negative. Both  hori-
              zontal and vertical values are expressed in percent
              of pages, so CursorMove 100 100 means to move  down
              and   left by one full page. CursorMove 50 25 means
              to move left half a page and down a  quarter  of  a
              page.  The CursorMove function should not be called
              from pop-up menus.

       CirculateUp [name window_name]
              Causes the pointer to move to the previous   window
              in  the list of windows for which CirculateSkip has
              not not been specified as CirculateSkip.
              If the optional arguments are  supplied,  then  the
              focus  will move to the first window whose name (or
              icon  name  or  class)  matches  window_name.   The
              optional  argument  name is required if window_name
              is supplied, and is enclosed in quotes. This  argu-
              ment  is  the  name  which  appears in menus if the
              function is called from a menu, but serves no  pur-
              pose if the function is not called from a menu
              Here's   an   example  that  moves  the focus to an
              xterm window when Alt-F1 is pressed:
              Key F1 A M CirculateUp "whatever" xterm

       CirculateDown [name window_name]
              Causes the pointer to move to the next  window   in
              the list of windows for which CirculateSkip has not
              not been specified as CirculateSkip.
              If the optional arguments are  supplied,  then  the
              focus  will move to the first window whose name (or
              icon  name  or  class)  matches  window_name.   The
              optional  argument  name is required if window_name
              is supplied, and is enclosed in quotes. This  argu-
              ment  is  the  name  which  appears in menus if the
              function is called from a menu, but serves no  pur-
              pose if the function is not called from a menu

       Warp [name window_name]
              Same  as CirculateDown, but De-Iconifies any iconi-
              fied windows as it focuses on them.

       Wait name
              This built-in is intended to be used  in  AfterStep
              functions   only.   It  causes execution of a func-
              tion  to  pause  until  a  new  window  named  name
              appears.    AfterStep  remains   fully   functional
              during  a wait. This is particularly useful in  the
              InitFunction, if you are trying to start windows on
              specific desktops:
              Function "InitFunction"
                     Exec "I"  exec xterm -geometry 80x64+0+0
                     Wait "I"  xterm
                     Desk "I"  0 2
                     Exec "I"  exec xmh -font fixed -geometry 507x750+0+0 &
                     Wait "I"  xmh
                     Desk "I"  0 0
              EndFunction
              The  above  function starts an xterm on the current
              desk, waits for it to map itself, then switches  to
              desk  2,  and  starts  an xmh. After the xmh window
              appears, control moves to desk 0.

       Focus
              Moves the viewport or window as needed to make  the
              selected  window  visible.  Sets the keyboard focus
              to  the   selected  window. Raises  the  window  if
              needed  to  make it visible. Warps the pointer into
              the selected window  in  focus-follows-mouse  mode.
              Does  not de-iconify.  This  function is  primarily
              handy   when   used   with a  module  such  as  the
              WinList.

       Desk arg1 arg2
              Changes to another desktop (workspace, room).
              If  arg1  is non zero, then the next desktop number
              will be the current desktop number plus arg1. Desk-
              top numbers, like arg1 can be negative.
              If  arg1  is zero, then the new desktop number will
              be arg2.
              The   number   of  active  desktops is   determined
              dynamically.  Only desktops which  contain  windows
              or are currently being displayed are active.  Desk-
              top  numbers   must  be  between   2147483647   and
              -2147483648 (is that enough?).

       WindowsDesk new_desk
              Moves  the selected window to the desktop specified
              as new_desk.

       GotoPage x y
              Moves the desktop viewport to page (x,y). The upper
              left page is (0,0), the upper right is (N,0), where
              N is one less than the current number of horizontal
              pages specified in  the  DeskTopSize  command.  The
              lower  left page is (0,M), and the lower right page
              is (N,M), where M is the desktop's vertical size as
              specified in the DeskTopSize command. The  GotoPage
              function should not be used in a pop-up menu.

       WindowList arg1 arg2
              Generates a pop-up menu (and pops it up)  in  which
              the  title and geometry of each of the windows cur-
              rently on the desk top are shown. The  geometry  of
              iconified windows  is shown in brackets.  Selecting
              an item from the window list pop-up menu will cause
              that  window  to be moved onto the desktop if it is
              currently not on it, will move the desktop viewport
              to  the  page containing the upper left hand corner
              of the window, will de-iconify the window if it  is
              iconified, and will raise the window.
              If arg1 is an even number, then the windows will be
              listed using the window name (the name  that  shows
              up  in  the title-bar). If it is odd, then the win-
              dow's icon name is used.
              If  arg1 is less than 2, then  all windows  on  all
              desktops  (except those   listed  in WindowListSkip
              directives), will be show.
              If arg1 is 2 or 3, then only windows on the current
              desktop will be shown.
              If  arg1  is  4  or 5, then only windows on desktop
              number arg2 will be shown.

       Exec name command
              Executes command.  command is not quoted,  but name
              is.  name is the name that appears in  a  menu,  if
              that is where the function is called from.  name is
              required  even if the function is not called from a
              menu, for ease of parsing.
              The following example binds function key F1 in  the
              root  window,  with no modifiers, to the exec func-
              tion.   The program rxvt(1) will  be  started, with
              an assortment of options.
              Key F1 R N Exec "rxvt" exec  rxvt  -fg  yellow  -bg
              blue -e /bin/tcsh &

       Popup
              NOTE: This built-in takes a slightly different form
              when used to bind a sub-menu into a  menu than   it
              does  when  binding the main menu to a key or mouse
              button. The form described here is  for  binding  a
              main  menu to a key or mouse button.  Used  to bind
              a previously defined pop-up menu to a key or  mouse
              button.
              The following example binds mouse buttons 2  and  3
              to  a  pop-up called "Window Ops", whose definition
              was provided as an  example  earlier  in  this  man
              page.   The  menu will pop-up if the buttons 2 or 3
              are pressed  in  the  window  frame,  side-bar,  or
              title-bar,  with  no modifiers (none of shift, con-
              trol, or meta).
              Mouse 2   FST  N    Popup "Window Ops"
              Mouse 3   FST  N    Popup "Window Ops"
              Pop-ups can be bound to keys through the use of the
              key modifier. Pop-ups can be operated without using
              the mouse by binding to keys, and operating via the
              up arrow, down arrow, and enter keys.
              The following example defines a  sub  menu,  "Quit-
              Verify"  and  binds  it  into  a  main menu, called
              "Utilities".
              Popup "Quit-Verify"
                     Title   "Really Quit AfterStep?"
                     Quit    "Yes, Really Quit"
                     Restart "Restart AfterStep" afterstep
                     Nop     "No, Don't Quit"
              EndPopup
              Popup "Utilities"
                     Title   "Utilities"
                     Exec    "Xterm"      exec xterm &
                     Exec    "Rxvt"       exec rxvt &
                     Exec    "Top"        exec rxvt -T Top -n Top -e top &
                     Exec    "Calculator" exec xcalc &
                     Exec    "Xman"       exec xman &
                     Exec    "Xmag"       exec xmag &
                     Popup   "Exit AfterStep"     Quit-Verify
              EndPopup
              Sub-menus must be defined prior to the main menu in
              which   they  are  bound.  Sub-menu  nesting can be
              arbitrarily deep.

       Function
              Used to bind a previously defined function to a key
              or mouse button.
              The  following  example  binds  mouse button 1 to a
              function called "Move-or-Raise",  whose  definition
              was   provided  as an  example  earlier in this man
              page. After performing this binding, AfterStep will
              execute to move-or-raise function whenever button 1
              is pressed in a window title-bar.
              Mouse 1    T      A       Function "Move-or-Raise"

       Module ModuleName
              Specifies a module which should be spawned. At  the
              current  time,  the only included modules are Wharf
              and Pager.  Wharf will normally  be  spawned   dur-
              ing  initialization   instead  of  in response to a
              mouse binding or menu action. Modules can be  short
              lived  transient  programs,  or,  like  Wharf,  can
              be intended to remain for the duration  of  the   X
              session.  Module  will  be  terminated  by the win-
              dow manager prior to restarts and quits, if  possi-
              ble.

KEYBOARD SHORTCUTS
       All window-manager operations can  be  performed from  the
       keyboard, so mouse-less operation should not be difficult.
       In  addition  to   scrolling  around  the  virtual desktop
       by  binding  the  Scroll  built-in  to  appropriate  keys,
       Pop-ups,  move,  resize  and most other  built-ins  can be
       bound to keys. Once a built-in function  is  started,  the

       pointer is moved by using the up, down,  left,  and  right
       arrows,  and  the action is terminated by pressing return.
       Holding down the shift key will cause the pointer movement
       to  go  in  larger steps, and holding down the control key
       will  cause  the  cursor  movement to go in smaller steps.
       Standard emacs and vi cursor movement  controls  (^n,  ^p,
       ^f,  ^b,  and  ^j, ^k, ^h, ^l) can be  used instead of the
       arrow keys.

SUPPLIED CONFIGURATION
       A  sample  configuration file, sample.steprc was  supplied
       with  the  AfterStep  distribution.  It  is  not anylonger
       because of the new  configuration  format,  which  include
       many  well  commented files and can be used as a source of
       examples for AfterStep configuration.

USE ON MULTI-SCREEN DISPLAYS
       AfterStep does work on multi-screen displays.  If  the  -s
       command  line argument is not given to AfterStep , it will
       automatically start up on every screen  on  the  specified
       display.    After   AfterStep  starts,  each   screen   is
       treated independently. Re-starts of AfterStep need  to  be
       performed  separately  on each screen.  The  use of  Edge-
       Scroll  0  0  is  strongly  recommended  for  multi-screen
       displays.

       You   may need  to  quit on each screen to quit from the X
       session completely.

       Multi-screen support is only available if you compile with
       -DMULTIPLE_SCREENS

SEE ALSO
       Wharf(1)Animate(1)Audio(1)Auto(1)asclock(1)Ban- 
       ner(1)Pager(1) 

AUTHORS
       Frank Fejes frank@canweb.net

       Alfredo Kenji Kojima kojima@inf.ufrgs.br

       Dan Weeks dan@mango.sfasu.edu

       Guylhem Aznar guylhem@oeil.qc.ca

       Chris Ridd C.Ridd@isode.com

       Rob Malda malda@imagegroup.com

afmtodit Home Page User Commands Index ali