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)