Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
larswm(1x)							    larswm(1x)

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 im-
       portant 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 desk-
       tops, larswm is fast enough that	it is  easier  to  browse  the	actual
       desktops	 instead,  something  that is very quick and easy to do, espe-
       cially 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  manipu-
       lation,	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 representa-
       tion 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 win-
       dows, 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 simi-
       lar 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 fill-
       ing it from top to bottom while the right track contains	any other win-
       dows, 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	 func-
       tions. 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.lar-
       swm config files.  After	logging	in, you	will see a mostly empty	 desk-
       top.   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  subdesk-
       top.

       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 win-
       dows 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 un-
       tiled 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  re-
       turned 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 side-
       ways  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 win-
       dow, 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 mov-
       ing 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	combi-
       nations 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.	  Con-
       trol-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  -de-
       faults  flag. It	will print out all the possible	options	with their de-
       faults 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 sub-
       desktop,	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  in-
       dexed 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 desk-
       tops, you can also limit	it to a	specific monitor. For  instance,  lar-
       swm.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 follow-
       ing 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  win-
       dows 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 represen-
       tation of iconified windows.

       Window mode flags

       The status bar will also	show the class of the focused window  and  in-
       stance in the format (Class~Instance). Just to the right	of that	is an-
       other 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 noti-
       fiers, stock tickers etc. Included in the distribution is a small exam-
       ple  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	 asso-
       ciate with a window.

       Transient windows

       Windows	that have the WM_TRANSIENT_FOR property	set are	put on the un-
       tiled 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 as-
       signed 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 dif-
       ferent 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  en-
       try  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 con-
       figured in the

       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 des-
       ignated 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	speci-
       fied 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 sec-
       tion 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_fo-
       cus  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 fo-
       cus.

       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  ap-
       plication.  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 fo-
       cus. 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  larsre-
       mote 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 sys-
       tems 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 auto-
       matic 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=larswm&sektion=1&manpath=FreeBSD+13.2-RELEASE+and+Ports>

home | help