Provided by: larswm_7.5.3-6_amd64 bug

NAME

       larswm - Tiling Window Manager for X

SYNOPSIS

       larswm [ -display dpy ] [ -f file ] [ -defaults ] [ -v ]

DESCRIPTION

       larswm  is  a  tiling  window  manager  for X11, based on 9wm by David Hogan.  It provides
       virtual desktops, support for tiled and untiled  windows,  keyboard  shortcuts  and  more,
       while  using  very  little  system resources.  Please see http://larswm.fnurt.net for more
       information.

OPTIONS

       The following command line options are supported:

       -display dpy      lets you specify which display you want larswm to manage.

       -f file           lets you specify a preferences file other than  $HOME/.larswmrc  to  use
                         for configuration.

       -defaults         prints  to  standard  out a complete resource file for larswm containing
                         all options and their defaults.

       -v                prints the current version on standard error, then exits.

FILES

       $HOME/.larswmrc /etc/X11/larswmrc
                         these two files are looked for in the above order when larswm starts up.

The Idea

       When I started working on larswm I had a few ideas that I think are important in a  window
       manager. They are as follows:

       1. The user should not have to spend alot of time arranging windows on the screen, leaving
       more time for the actual work that he or she is trying to accomplish.

       2. Direct manipulation. Instead of accessing windows and desktops through  representations
       of  these,  access  them  directly.  That  means:  No icons when a window is iconified. No
       graphical map of the virtual desktops, larswm is fast enough that it is easier  to  browse
       the  actual  desktops  instead, something that is very quick and easy to do, especially if
       you have a wheel mouse, and since the windows are tiled, you usually do not need much time
       looking  at  a  desktop  to  know  what is on it. And within one desktop, tiling is a good
       example of direct manipulation, a common way to deal with multiple windows on  the  screen
       is  to  overlap  them and select which one you want my clicking on a representation in the
       form of a button on a task bar, however, larswm does not  need  that  because  the  actual
       window, with enough content visible to know which one it is, is always visible.

       3.  No  precision  clicking.  Use the edges of the monitor to make it easy to aim with the
       mouse pointer.

       4. It must be predictable. If the user ever wonders how focus ended up on a window that he
       or  she  did  not  click  on,  something is wrong. larswm has alot of code that deals with
       figuring out where focus should go when different events occur.

       5. It must have a solid feel to it. Part of this is speed, when  you  switch  desktops  or
       windows  are moved around as the result of being tiled it must go quick, and part of it is
       predictability.

       6. The window manager should not use more system resources (CPU time, virtual memory) than
       is  absolutely  necessary for performing the task of managing windows. The GUI is minimal,
       providing borders around the windows, and a status bar at the bottom  of  the  screen.  It
       provides all feedback using plain text on the status bar.

       7.  Quality  control. It has been tested with Electric Fence to catch memory access errors
       and profiled with gprof. So far I have been able to fix everything that I found with these
       tools, but I am no CS major and I am sure some things could be done better.  Nevertheless,
       it works, and during normal circumstances it works using minimal system resources.

Terminology

       Some of this is unique to larswm and some is borrowed from other GUI designs.

       Screen

       Physical monitor. By default larswm will use up to 4 monitors. This can be adjusted in the
       dat.h file.

       Virtual Desktop

       Each  screen  is  logically  divided  into  up  to 16 workspaces. A window is usually only
       visible on one of these workspaces.

       Subdesktop

       Each virtual desktop is then logically divided between  two  subdesktops.  First  we  have
       normal, untiled, windows. They are managed in a way similar to most other window managers.
       Second we the tiled subdesktop, where no window is allowed to overlap  another.  Switching
       between  the  tiled  and  the  untiled  set of windows is very fast with a hotkey or mouse
       click.

       Track

       On the tiled subdesktop, windows are laid out in one of two tracks. By default, the  ratio
       is 60%/40% for left/right track. The ratio can be changed dynamically through hotkeys, and
       a different default can be set in the .larswmrc file. The left track always  contains  one
       window  filling  it  from  top to bottom while the right track contains any other windows,
       evenly sized. There are hotkeys to make any window in the right track expand and  move  to
       the left track while the window that was in the left track is shrunk and placed at the top
       of the right track.

       Status Bar

       The status bar fills two functions. First off,  as  the  name  implies,  it  shows  status
       messages.   This  includes  the  window  title of the focused window, the selected virtual
       desktop, flags that shows what modes are set on the current virtual  desktop  and  a  user
       defined  message  that  is used by the sample clock app to show the current date and time.
       Second, it is a very big button that can be clicked to perform various  functions.  It  is
       easy  to  target,  since you just move the mouse down against the bottom of the screen, no
       need to precision aim for it.

       Tool

       A special kind of window that belongs to  the  untiled  subdesktop,  but  is  still  tiled
       around.  It  is also visible on all virtual desktops. Used for things like clocks and load
       meters.

       Select Zoom

       Maximize a window so that the height/width ratio is the same as  for  a  US  letter  sized
       paper,  and centering it on the screen. Besides wanting to tile windows, this was the most
       common manual move/resize operation I used before it was automated.

       Put Aside

       All this means is that a window is  moved  mostly  off  screen,  leaving  just  a  portion
       visible. It is another way to do iconification.

A Sample Session

       The  following  assumes  you are using the sample.xsession and sample.larswm config files.
       After logging in, you will see a mostly empty desktop.  Along the bottom of the screen  is
       the  status bar, and in the lower right corner are three smaller windows (xload, xbiff and
       xclock) which in the default config are tagged as tool windows. What this  means  is  they
       should  be  visible on all virtual desktops, and should not be covered by windows that are
       placed automatically on the tiled subdesktop.

       Working with tiled windows

       Now hit Shift-Control-Return. This will bring up a new  terminal  window.  Notice  how  it
       occupies  the left 60% of the screen. Type something in this window and hit Shift-Control-
       Return again. The first window is moved to the right side and shrunk, while the new  xterm
       occupies  the  bigger  area  to  the  left.  Notice that the toolwindows (xload, xbiff and
       xclock) are not overlapped.

       Hit Shift-Control-Return once more and notice how the two previous windows now both are on
       the right side and using half the space each.

       Now hit Control-Button1 on the first window you opened, it should be the xterm right above
       the tool windows on the right side. This will put that window in  the  left  track,  while
       putting the left track window at the top of the right track.

       That is all there is to never having to manually line up your xterms again!

       Working with untiled windows

       For  demonstration  purposes,  we can use xlogo. By default, the xlogo window class is not
       set to be tiled, so it will be opened on the untiled subdesktop,  separate  from  all  the
       xterms. In the focused xterm, type xlogo and hit Return. The xlogo window should appear in
       the middle of the screen above the tiled windows. If you need to switch between tiled  and
       untiled  windows,  you  can  use  Shift-Control-BackSpace.  Hit that key twice and see how
       xlogo is first hidden behind the tiled xterms and then brought to the front again. If  you
       had more untiled windows open, they would all have been lowered and raised together.

       Moving windows to predefined areas

       You  can  move untiled windows to 9 different predefined locations on the screen with only
       one keystroke. With the xlogo window focused, hit  Shift-Control-KP_6.  The  xlogo  window
       should  be  against the right edge of the screen, halfway between the top and bottom, just
       like 6 on the numeric keypad is among the keys 1 through 9.  Hit  Shift-Control  and  each
       number  on  the  numeric  keypad  to see the locations. When done, leave the window on the
       right edge in the middle (Shift-Control-KP_6).

       Select zooming

       With the xlogo window focused and off to the side of the screen, hit  Shift-Control-space.
       Notice  how  it  is  centered  and sized to make it easy to work with. When you hit Shift-
       Control-space again, it is returned to its former place and size. This can be used  as  an
       alternative  to tiling, if you have some windows you would like to mostly manage yourself,
       but want a quick way to concentrate on one of them.

       Set aside windows

       Sometimes when working on the untiled desktop you just want to set a window  aside  for  a
       moment.  Hit Control-Alt-space to move a window sideways off the right edge of the screen,
       leaving just a small portion visible. Clicking on the visible part will  put  that  window
       back  where  it was. If you hit Control-Alt-space with no untiled window focused, the last
       put aside window will be brought back. See the mouse reference section for  more  ways  to
       manipulate windows in this fashion.

       Using the mouse to move and resize windows

       With  the  xlogo  window  unzoomed  and  focused, move the mouse down onto the status bar,
       anywhere will do, and hold down Shift-Alt-Button1. The mousepointer moved to the top  left
       corner  of  the  window and you are able to move the window around by moving the mouse. To
       place the window, let go of the mouse button. Move xlogo to somewhere near the top left of
       the screen.

       Next,  with  the  mouse  on the status bar, hold down Shift-Control-Alt-Button1. The mouse
       pointer is moved to the bottom right corner of the xlogo window  and  when  you  move  the
       mouse, you resize the window. To set the size, let go of the mouse button.

       Moving a window between subdesktops

       Make  sure  the xlogo window is focused and then hit Shift+Alt+space. The xlogo should now
       be tiled and focused in the left track. If you hit Shift+Alt+space once more,  it  becomes
       untiled  again  and  the  other  tiled  windows moves to fill the vacated spot in the left
       track.

       Working with virtual desktops

       So far, we have only used the first desktop. The way to switch between desktops  is  easy.
       Shift-Control-Left  and  Shift-Control-Right  on the keyboard will move you back and forth
       between the desktops. Hit Shift-Control-Right four times. Notice how the status bar  label
       changes  to  show  what  desktop is active. By default there are four virtual desktops per
       screen, so you should be back to the first desktop now.

       If you instead use Shift-Alt-Left or Shift-Alt-Right you will  move  to  the  new  virtual
       desktop while dragging the currently focused window with you.

       Using the mouse wheel

       With larswm, the mouse wheel can be used for quite a few operations. The most common is to
       switch virtual desktop. This can be done by moving the  pointer  to  the  status  bar  and
       rolling the wheel up and down.

       You  can  also use the mouse wheel to move and resize windows quickly. With xlogo focused,
       move the pointer to the status bar and hold down Shift-Alt while rolling the wheel to move
       the  window  sideways. If you hold down Shift-Control-Alt you move the window up and down,
       and with Shift-Control you can grow and shrink the window.

       If you have more than one window open, hold down Shift while rolling  the  wheel  down  to
       cycle  focus through each window. To try it now, shift to the tiled subdesktop by clicking
       on any of the tiled xterms then move the mouse pointer to the status bar, hold down  shift
       and roll the wheel.

       This  is  not  exactly  intuitive, but very fast once you learn the combinations of Shift,
       Control and Alt keys to do these things.

Status Bar Menu System

       The status bar is used for a simple menu system. With the pointer on the status bar,  hold
       down  Control  and  click  Button1  and  Button3, or roll the wheel up and down, to scroll
       between the menu  entries.   Control-Button2  selects  the  current  menu  entry,  usually
       toggling a desktop or window setting.

       If  you  instead  of  Control  hold down Alt, you can scroll through the list of iconified
       windows, and Alt-Button2 uniconifies the selected window.

Things You Can Configure

       You can affect alot (but not all!) of the behaviour of larswm by making your own .larswmrc
       file and putting it in your home directory.

       Default setup

       Included  in the distribution files is a file called sample.larswmrc that you can use as a
       starting point for your own config.

       Complete list of config keywords

       Another way to get a default .larswmrc is to run larswm with the -defaults flag.  It  will
       print  out  all  the possible options with their defaults filled in, all you have to do is
       uncomment and edit any lines you wish to change. Rather than reproduce that here, you  can
       create  your  own up to date version by running the command larswm -defaults and piping it
       to a file.

Keyboard commands for all windows and subdesktops

       ┌──────────────┬───────────┬──────────────────────────────────┐
       │Shift-Control │ Prior     │ Prev Screen                      │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ Next      │ Next Screen                      │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ Left      │ Prev Desktop                     │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Alt     │ Left      │ Prev Desktop Drag Focused Window │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ Right     │ Next Desktop                     │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Alt     │ Right     │ Next Desktop Drag Focused Window │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ F1-F12    │ Jump to desktop 1-12             │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ BackSpace │ Toggle Subdesktop                │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ Up        │ Prev Window                      │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Control │ Down      │ Next Window                      │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Control-Alt   │ z         │ Hide Window                      │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Control-Alt   │ x         │ Unhide last hidden window        │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Control-Alt   │ w         │ Close Window                     │
       ├──────────────┼───────────┼──────────────────────────────────┤
       │Shift-Alt     │ space     │ Move window to other subdesktop  │
       └──────────────┴───────────┴──────────────────────────────────┘

Keyboard commands for untiled windows

       ┌──────────────────┬───────────┬──────────────────────────────┐
       │Shift-Control     │ space     │ Select Zoom                  │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Control-Alt       │ space     │ Put/restore aside window     │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ 0         │ Put aside all other windows  │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Home   │ Move window to top left      │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Up     │ Move window to top center    │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Prior  │ Move window to top right     │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Left   │ Move window to left center   │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Begin  │ Center window                │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Right  │ Move window to right center  │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_End    │ Move window to bottom left   │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Down   │ Move window to bottom center │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control     │ KP_Next   │ Move window to bottom right  │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Up     │ Move window up               │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Down   │ Move window down             │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Left   │ Move window left             │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Right  │ Move window right            │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Up     │ Grow window vertically       │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Down   │ Shrink window vertically     │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Left   │ Shrink window horizontally   │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Right  │ Grow window horizontally     │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Home   │ Grow window both ways        │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_End    │ Shrink window both ways      │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Insert │ Toggle move/resize increment │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Home   │ Maximize window vertically   │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_End    │ Maximize window horizontally │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Alt         │ KP_Begin  │ Maximize window              │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │Shift-Control-Alt │ KP_Begin  │ Full screen                  │
       └──────────────────┴───────────┴──────────────────────────────┘

Keyboard commands for tiled windows

       ┌──────────────────┬──────────┬────────────────────────────────┐
       │Shift-Control-Alt │ KP_Up    │ Maximize left track            │
       ├──────────────────┼──────────┼────────────────────────────────┤
       │Shift-Control-Alt │ KP_Down  │ Restore left track             │
       ├──────────────────┼──────────┼────────────────────────────────┤
       │Shift-Control-Alt │ KP_Left  │ Shrink left track              │
       ├──────────────────┼──────────┼────────────────────────────────┤
       │Shift-Control-Alt │ KP_Right │ Grow left track                │
       ├──────────────────┼──────────┼────────────────────────────────┤
       │Shift-Alt         │ KP_Begin │ Move window to/from left track │
       ├──────────────────┼──────────┼────────────────────────────────┤
       │Control-Alt       │ space    │ Restore aside window           │
       └──────────────────┴──────────┴────────────────────────────────┘

Mouse buttons on the status bar

       ┌──────────────────┬───────────────┬───────────────────┬─────────────────┐
       │    Modifier      │    Button1    │      Button2      │     Button3     │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │None              │ Prev Desktop  │ Subdesktop        │ Next Desktop    │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Control           │ Prev Menu     │ Select Menu       │ Next Menu       │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Alt               │ Prev Hidden   │ Hide/Unhide       │ Next Hidden     │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Shift-Control     │ Shrink        │ Select Zoom       │ Grow            │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Shift-Alt         │ Move Window   │                   │                 │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Shift-Control-Alt │ Resize Window │ Lower Window      │ Maximize Window │
       ├──────────────────┼───────────────┼───────────────────┼─────────────────┤
       │Control-Alt       │ Restore Aside │ Put/Restore Aside │ Put Aside       │
       └──────────────────┴───────────────┴───────────────────┴─────────────────┘

Mouse wheel on the status bar

       ┌──────────────────┬───────────────┬──────────────┐
       │    Modifier      │    Roll Up    │  Roll Down   │
       ├──────────────────┼───────────────┼──────────────┤
       │None              │ Prev Desktop  │ Next Desktop │
       ├──────────────────┼───────────────┼──────────────┤
       │Shift             │ Prev Window   │ Next Window  │
       ├──────────────────┼───────────────┼──────────────┤
       │Control           │ Prev Menu     │ Next Menu    │
       ├──────────────────┼───────────────┼──────────────┤
       │Alt               │ Prev Hidden   │ Next Hidden  │
       ├──────────────────┼───────────────┼──────────────┤
       │Shift-Control     │ Shrink        │ Grow         │
       ├──────────────────┼───────────────┼──────────────┤
       │Shift-Alt         │ Move Up       │ Move Down    │
       ├──────────────────┼───────────────┼──────────────┤
       │Shift-Control-Alt │ Move Left     │ Move Right   │
       ├──────────────────┼───────────────┼──────────────┤
       │Control-Alt       │ Restore Aside │ Put Aside    │
       └──────────────────┴───────────────┴──────────────┘

Clicking on unfocused windows

       Button1 is used to focus windows.

       If skip_focus is on (this is the default) you can force a tiled window into the left track
       by Control-Button1 clicking.

       If  skip_focus is off, then Control-Button1 clicking will prevent moving the newly focused
       window to the left track.

       If you Control-Button1 click on a window that is not on the active  subdesktop,  you  will
       switch focus without also switching subdesktop.

       If  you  Control-Button1  click on an aside window, that window will be put back while all
       other untiled windows are put aside.

Indexed resources

       In the sample.larswmrc, all the entries that end in a number are  indexed  resources.  The
       number can be between 0 and 63, and must be unique within each resource type.

Multi-head

       When  specifying  an  option  that  only affects one of the virtual desktops, you can also
       limit it to a specific monitor. For instance, larswm.0.0.dtname: One would name the  first
       virtual  desktop  on  the first monitor only. Due to precedence, you can set an option for
       all desktops one way, and then specific desktops another.  The ways to specify screens and
       desktops are, listed in order of precedence:

       ┌────────────────────┬────────────────────────────────┐
       │      Format        │   Affected desktops/screens    │
       ├────────────────────┼────────────────────────────────┤
       │larswm.S.D.resource │ Only desktop D on screen S     │
       ├────────────────────┼────────────────────────────────┤
       │larswm.S.?.resource │ All desktops on screen S       │
       ├────────────────────┼────────────────────────────────┤
       │larswm.?.D.resource │ Only desktop D on all screens. │
       ├────────────────────┼────────────────────────────────┤
       │larswm.?.?.resource │ All desktops on all screens.   │
       ├────────────────────┼────────────────────────────────┤
       │larswm*resource     │ All desktops on all screens.   │
       └────────────────────┴────────────────────────────────┘
       As  an  example,  if  you  want all desktops except the first on the second monitor to not
       resize windows that are tiled, you would put the following lines in your .larswmrc:

       larswm*tile_resize: false

       larswm.1.0.tile_resize: true

       The first line is needed because the default is to resize windows.

The Status Bar

       The thin window across the bottom of the screen is the status bar.  On  the  left  is  the
       window title of the focused window, and on the right is a status area.

       Mode flags

       Between  the  virtual desktop label and the user defined message (date/time in the default
       setup) is a block of flags in upper case [TCRSBH]. They indicate the following:

       T Subdesktop

       T for tiled or U for untiled.

       C Clickthru

       Whether clicks on an unfocused window should focus and pass the click on to the client, or
       just focus and discard the click. C means pass to client.

       R Tile Resizing

       Whether tiled windows are resized or not.  R means they are resized. If not, they are just
       stacked in the right track, each having the top left corner visible.

       S Skip Focus

       Whether giving focus to a window in the right track makes it jump to  the  left  track.  S
       means  no,  you have to Control-Button1 click it to make it jump. If off, you can Control-
       Button1 click to make a window stay in place while getting focus.

       B Big Move/Resize

       Whether the keyboard and mouse wheel commands to move and resize  windows  should  work  a
       pixel at a time, or 5% of the screen width/height at a time.

       H Hidden Windows

       Whether  any  windows  are  hidden (iconified) on any screens. It is there so you will not
       forget about them, since larswm has no visual representation of iconified windows.

       Window mode flags

       The status bar will also show the class of the focused window and instance in  the  format
       (Class~Instance).  Just to the right of that is another set of flags in lower case [nftsz]
       that mean:

       n Notile

       Window belongs to the untiled subdesktop.

       f Floating

       Window always stays on top of non-floating windows.

       t Tool

       Window is tiled around, not over.

       s Sticky

       Window is visible on all virtual desktops.

       z Zoomed

       Window is in one of the zoomed states.

       User defined message

       If you want, you can put any message you like in the right most portion of the status bar.
       This  can  be used for things like clocks, email notifiers, stock tickers etc. Included in
       the distribution is a small example of a clock called larsclock.  It  is  started  by  the
       default session script.

       If  you  do  not  run  larsclock,  you  can set the message from any shell script with the
       command larsremote message TEXT, which would show TEXT on the status bar.

Window Types

       Here is a more detailed look at the different types larswm can associate with a window.

       Transient windows

       Windows that have the WM_TRANSIENT_FOR property set are put on the untiled subdesktop even
       if the window class has been specified as tiled.

       When  a transient window first gets mapped, it will always show up, no matter what desktop
       you are viewing.  The transient window will be assigned to the desktop  where  the  parent
       window  is  though,  so as soon as you change desktop, it will only show up on the virtual
       desktop the parent belongs to.

       Untiled windows

       Any window that is not tiled is assigned to the  untiled  subdesktop.  These  windows  are
       completely separate from the tiled subdesktop. The untiled subdesktop behaves more or less
       like any traditional window manager, but adds a few keyboard shortcuts for moving  windows
       to different parts of the screen or zooming them in both dimensions.

       larswm   will   not  tile  a  window  unless  its  class/instance  can  be  found  in  the
       larswm.dotileclass list.

       The way to move between your tiled and untiled desktop is  through  a  keyboard  shortcut,
       which by default is Shift-Control-BackSpace

       When  a  window  is mapped on the untiled subdesktop for the first time, it is centered on
       the screen, unless it has had its desired position set in the hints.

       Floating windows

       Floating windows will always stay on top of  other  non-floating  windows,  regardless  of
       which  subdesktop  is  active.  This  can  be used for small windows, like xcalc, that you
       always want accessible. If clickthru is on, clicks will be passed on to  floating  windows
       regardless of which subdesktop was active before the click.

       Sticky windows

       Sticky  windows  are  windows  of  a  class  and  instance  that  matches  an entry in the
       larswm.stickyclass list. They are always visible no matter which virtual desktop  you  are
       on.

       Tools

       Tools  are  windows you always want visible. Examples of tools are xclock, xload and other
       small informational windows. When a window has been identified as a tool window,  it  will
       be assigned to the untiled desktop, it will be sticky and the tiled windows will not cover
       it.  Also, if clickthru is on, any clicks on tool windows will be passed on to the client,
       regardless  of  which  subdesktop  was  active  before  the click. Tools will never end up
       focused unless you click on them.

Internals

       A little more detail about how larswm does things.

       Every time a window is mapped or unmapped, or (if skip_focus  is  off)  you  focus  a  new
       window on the tiled subdesktop by clicking on it the following process is executed:

       1. The width of the two tracks are calculated. This is by default set up so the left track
       uses 60% of the screen width, but it can be configured in the .larswmrc file.

       2. It calculates how many windows should be in each track, one in the left track  and  the
       rest in the right.

       3. The height of each window in each track is calculated.

       4. It goes through the list of all windows and places them in the designated spot.

       5. After this it returns to the event loop.

       That  is  pretty  much  it.  If  skip_focus  is  off (default is on), when you click on an
       inactive window in the right track, it will pop over into the left track, and  the  window
       that were there will pop over to the top of the right track.

       At  all  times,  the right track will contain tiled windows in the order that they were in
       the left track, starting with most recent.

Associating windows with a virtual desktop

       You can associate certain window classes/instances to a certain virtual desktop number  by
       adding resources to your .larswmrc.

       An example of how to associate all Netscape windows with the second virtual desktop:

       larswm.dtclass.0: Netscape

       larswm.dtnum.0: 1

       When  any  Netscape  window opens, larswm will first switch to the specified desktop, then
       map the window.

Hidden windows

       larswm iconifies windows by hiding them. To unhide a hidden window, you must first  locate
       its label using the status bar. Please see the section about using menus on the status bar
       for information on how this works.

       You can also unhide the last hidden window with one keystroke, Control-Alt-x.

Focus handling

       To change focus to a window, you just left click on it, and  if  skip_focus  is  off  that
       window  will  pop into the left track, and the window currently there will pop over to the
       top of the right track.

       If you have it set up to automatically put the focused window in the left track, you might
       still  sometimes  want to type something into one of the tiled windows without rearranging
       all the windows, and to do that you Control-Button1 click on a window. Focus will  change,
       but  all  windows  will  stay where they are. This will also prevent any transient windows
       owned by the application from immediately be raised and get focus.

       If you have it in the default mode, where selecting a new window to have  focus  does  not
       make it pop into the left track you can do that by Control-Button1 clicking it.

Clickthru

       When  you  click on a window to give it focus, that click is also passed on to the client.
       This makes it easier to work with a multi-window application. You can  turn  this  feature
       off, in which case the click used to focus a window is never seen by the application.

Multi-Head

       When  a  window  gets  mapped,  for whatever reason, it is usually given focus. But if the
       MapRequest event occurs on a different screen than the one  you  are  working  on,  things
       could  get confusing. I solved this by adding the following rules to how focus is assigned
       when windows open and close:

       1. If the currently focused window is on the same screen, then the  new  window  will  get
       focus.

       2. If the currently focused window is on a different screen, the new window will get focus
       only if the mouse pointer is on the same screen as the new window.

       3. If no window is focused, a newly mapped window will get focus only if the mouse pointer
       is on the same screen as the new window.

       4.  If  the focused window closes, focus will revert to another window, usually the window
       that was focused before the one that just closed. Focus will  revert  only  if  the  mouse
       pointer is on the same screen as the window that closed.

       I  believe  these  rules  will help eliminate most cases of having your keystrokes go to a
       window you did not intend it to.

Atoms

       The following atoms are created and monitored by larswm and can be  used  in  third  party
       tools:

       LARSWM_EXIT

       Tells larswm to exit.

       LARSWM_RESTART

       Tells larswm to restart, reloading the .larswmrc file.

       LARSWM_BARTEXT

       When  this  is  updated, the content of this atom is shown as text on the status bar until
       the atom is updated again.  See larsclock and larsremote for examples of how to use this.

Compatibility

       Terminal Windows

       xterm windows might look like they are not redrawing correctly, but they are in  fact.  It
       is up to the program running inside it to detect window size changes and redraw the screen
       as necessary. One way to deal with this is to run screen inside  the  xterm,  as  it  will
       handle resizing and redrawing correctly.

       On  some, mostly older, systems you need to make terminal windows know that they have been
       resized when they are first opened and tiled.

       Put this line in your .cshrc or .bashrc:

       eval `resize`

       It will ensure that it is set to the correct number of rows and columns when it is opened.

       Size Hints

       The PResizeInc and PMaxSize hints are honored. PMinSize is not, as it might have  problems
       fitting all the windows in when tiling them.

       Resizing Windows

       For  windows  that do not cope well with being resized, you can disable automatic resizing
       on a particular desktop, making the windows in the  right  track  be  stacked  on  top  of
       eachother instead. This can also be used for windows that resize slowly, like Netscape, to
       speed things up considerably.

       Multi-Head Displays

       It does work well with multi-head displays. One of my development systems is  a  dual-head
       Sun  running  Solaris  9,  so  this functionality has been tested quite alot. It currently
       behaves in a predictable manner when  you  switch  focus  between  screens,  move  between
       desktops etc.

       GTK Applications

       Some  GTK  apps do not set WM_TRANSIENT_FOR correctly on their dialog boxes, and they also
       sometimes have a different class string on those subwindows, making things  confused.  The
       best way to deal with those kinds of problems is to specify both the class and instance of
       the top level windows you do want tiled. In some cases, this still does not work, like  in
       some  builds  of  Mozilla  where  every  window  it  creates  has  class/instance Mozilla-
       bin/mozilla-bin.

       Standards Compliance

       At this time there is no GNOME/KDE/Motif/whatever compatibility.  It follows the ICCCM  as
       much as it can while still providing all the automatic functionality that it does.

LICENSE

       Many  thanks  to  David Hogan for writing 9wm and releasing it under such a license that I
       could use it as a base to build larswm on.

       Here is the original license for 9wm:

       ---

       9wm is free software, and is Copyright  (c)  1994-1996  by  David  Hogan.   Permission  is
       granted  to  all  sentient  beings  to  use  this  software,  to make copies of it, and to
       distribute those copies, provided that:

       (1) the copyright and licence notices are left intact

       (2) the recipients are aware that it is free software

       (3) any unapproved changes in functionality are either

       (i) only distributed as patches

       or (ii) distributed as a new program which is not called 9wm and whose documentation gives
       credit where it is due

       (4) the author is not held responsible for any defects or shortcomings in the software, or
       damages caused by it.

       There is no warranty for this software.  Have a nice day.

       ---

       Please consider my code to be under the same type of license as  9wm,  inserting  my  name
       where appropriate.

SEE ALSO

       larsclock(1x), larsmenu(1x), larsremote(1x)

AUTHORS

       larswm was created by Lars Bernhardsson <lab@fnurt.net> by building on 9wm by David Hogan.

                                                                                       larswm(1x)