flwm - The Fast Light Window Manager
flwm [-d[isplay] host:n.n] [-g[eometry] WxH+X+Y] [-fg color] [-bg
color] [-bg2 color]
flwm is a very small and fast X window manager, featuring no icons and
"sideways" title bars.
.xinitrc / .xsession
To run flwm as your login script, you need to create or replace
~/.xinitrc or ~/.xsession (or both). Newer Linux systems with a login
panel use .xsession, older systems where X was started after login use
.xinitrc. You may also have to pick "default" from the "type of
session" popup in your login window.
The .xinitrc or .xsession file should look like this:
xsetroot -solid \#006060
# xset, xmodmap, other configuration programs
# xterm, other automatically-launched programs
-d[isplay] host:#.# Sets the display and screen for flwm to manage
-v[isual] # Visual number to use (probably only works for
-g[eometry] WxH+X+Y Flwm will act as though the screen is only the
specified area. It will constrain initial window positions to this
area and stop them at the edges when dragging them around. This can be
used to surround the screen with fixed "toolbars" that are never
covered by windows. These toolbars must be created by a program using
override-redirect so that flwm does not try to move them.
-m[aximum] WxH Set the size of windows when the maximize buttons are
pushed. Normally this is the size of the screen. This is useful for
XFree86 servers that are run with a smaller screen than display memory.
-x The menu will say "Exit" instead of "Logout" and will not ask for
confirmation. This is a good idea if you are running flwm in some other
way than with exec at the end of .xinitrc, since it won’t log you out
-fg color, -bg color Set the label color and the color of the window
frames and the menu.
-c[ursor] # What cursor to use on the desktop (you will have to
experiment to find out what each number means)
-cfg color, -cbg color Colors for the desktop and window resizing
In addition to these switches there is much customization that can be
done by editing the config.h file in the source code and recompiling.
GCC is your friend.
Flwm can launch programs from its menu. This is controlled by files in
the directory ~/.wmx (this was chosen to be compatible with wmx and
Each executable file in ~/.wmx is a program to run. Usually these are
symbolic links to the real program or very short shell scripts.
Each subdirectory creates a child menu so you can build a hierarchy (up
to 10 deep).
Cut and paste the following lines you your shell to create some example
ln -s /usr/bin/gimp ~/.wmx/"The Gimp"
cat << EOF > ~/.wmx/"Terminal"
chmod +x !*
On Debian, flwm has been modified to support a system-wide menu
/var/lib/flwm/wmx when no ~/.wmx exists, and scripts were added to take
advantage of the Debian menu system (see update-menus(1)).
Left-click on a window border raises window.
Left-drag will move the window when in the title bar, and will resize
it in the edges. If the window cannot be resized then it will always
move the window. What it will do is indicated by the cursor shape.
Middle-click on a window border lowers it to bottom.
Middle-drag anywhere on window border will move the window.
When you move a window it will stop at the edges of the screen.
Dragging about 150 pixels further will unstick it and let you drag it
off the screen.
Right-click on a window border pops up the menu.
Any button on the desktop will pop up the menu.
The empty button "iconizes" the window: it will completely vanish. To
get it back use the menu.
The vertical-bar button "shades" (or "Venetian blinds"?) the window.
Click it again to restore the window. You can also resize the shaded
window to a new height or "open" it by resizing horizontally.
The two buttons below it toggle maximum height and/or maximum width.
The X button at the bottom closes the window.
Right-click on window border, or any-click on the desktop, or typing
Alt+Esc or Alt+Tab or Alt+Shift+Tab will pop up the menu.
Releasing Alt will pick the current menu item. This makes flwm work
very much (exactly?) like the Windows 95 shortcuts.
Each main window is a menu item. If the window is "iconized" the little
picture shows an open rectangle, otherwise it shows a filled rectangle.
Picking a menu item deiconizes and raises that window and warps the
pointer so it is current.
New desktop asks for a name of a new desktop and makes it current. The
desktop will initially be empty (except for sticky items).
To move windows to the current desktop, pop up the menu and pick
windows off of other desktops (if using the keyboard, use left arrow to
go to the desktop names, move up and down to the other desktop, and use
right arrow to enter that desktop). The window will be moved from the
other desktop to the current one.
To switch to another desktop, pick the title of the desktop (if using
the keyboard, use left arrow to go to the desktop names, move up and
down to the other desktop).
If a desktop is empty you can delete it. Its sub menu will show delete
this desktop. Pick that and the desktop is gone.
Sticky is a special "desktop": windows on it appear on all desktops. To
make a window "sticky" switch to the Sticky desktop and pick the window
off its current desktop (thus "moving" it to the Sticky desktop). To
"unstick" a window go to another desktop and pick the window off the
sticky desktop menu.
New xterm will run a new xterm on the current desktop. Useful if you
accidentally close everything. This item does not appear if a ~/.wmx
Logout will ask for confirmation and if so flwm will exit.
Exit will exit flwm without confirmation. This item will appear if flwm
was run with the -x switch.
These are the defaults, the hot keys may be different depending on how
flwm was compiled:
Alt+Escape Pops up the menu with the current window preselected
Alt+Tab Pops up the menu with the next window preselected
Alt+Shift+Tab Pops up the menu with the previous window preselected
Ctrl+Tab Switch to the next desktop.
Ctrl+Shift+Tab Switch to the previous desktop.
Ctrl+Function key Switch to desktop N.
Alt+Up Raise the current window.
Alt+Down Lower the current window.
Alt+Delete Close the current window (same as clicking close box).
Alt+Enter "Iconizes" (hides) the current window.
It is impossible to move windows smaller than 100 pixels off the
Only obeys "keep aspect" if the aspect ratio is 1x1.
This program was inspired by and much code copied from the "wm2" window
manager by Chris Cannam <firstname.lastname@example.org>
Thanks to Ron Koerner for the recursive .wmx directory reading code.
Copyright (C) 1999 Bill Spitzak
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this library; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
Written by Bill Spitzak email@example.com
15 May 1999 flwm(1)