Table of Contents

Name

heliwm - highly essential, light and itsy-bitsy window manager for X11

Synopsis

heliwm [ -d display ] [ -f filename ] [ -v ]

Description

heliwm is a light window manager for X Window System. Its design goal is minimum consumption of memory and CPU time, so it provides nothing more than basic window operations such as window moving, resizing, iconifying, raising and lowering. Window maximizing is optional. No menus, gorgeous look, virtual screens, etc. heliwm is for people who don't want to spend much of their computer resources for a window manager. Most deficiencies you will find are due to the resource saving strategy.

It depends on a keyboard for window manipulation, especially for moving and resizing, which cannot be done without using one. The idea, that window manipulation can be done without using a mouse, is inherited from Robert Nation's fvwm(1) version 1.x. Thank you, Robert. :-)

Options

-d display
Specify X server to use.
-f filename
Specify non-default configuration file to use.
-v
Print version number along with compilation options (see below).

Compile Time Options

There are four compile time options.
FRAME
If heliwm is compiled without this option, it is called alpha particle version. It doesn't decorate client windows to save even more resources.
NLS
Native Language System support. Set environmental variable LANG to name of your locale (e.g., ja_JP for Japanese), to use characters other than ASCII for window and icon titles. Ensure that f option in your configuration file has a comma-separated list of required fonts. If you don't know which fonts are required, run heliwm with fixed specified for the f option and it will report missing character sets, if any. Use xlsfonts(1) to look for fonts for each character set.
SHAPE
X non-rectangular window shape extension support. Clients such as oclock(1) and xeyes(1) are written using the extension, but can be run without it. Some non-rectangular windows generate many X events upon exposure, and can be a burden to CPU, so compile heliwm without this option, if you would.
MAXIMIZE
Optional automatic window maximizing feature. Window maximizing can be done manually with resizing, so if you don't want to spend extra resources, compile heliwm without this option.

Configuration

System default configuration file is read at startup, when you don't have your own as ~/.heliwmrc or specify one by -f option. If none of them is available, default values are used.

Configuration file format is quite strict, and all invalid lines are silently ignored. First of all, a line must start with an option key, which is an alphabet letter. Some of them require a sub-key, which must be the second character of the line. Each word is separated by exactly one character, which may be a space or a tab. Take a look at the default configuration file for an example.

Here is a list of available customization options:

cS color_name
Specify color to use. S here is one of following sub-keys: f, b, o, i, a. They correspond to foreground, background, border (outmost frame), innermost frame and band, respectively.

Foreground color is used for window title text, and band color is used for a move/resize band. You may need to choose a color for the latter, which is in contrast with most part of your screen, or you may find it hard to see.

Background, border and innermost frame colors are used to draw a frame around a window. If you want a pseudo 3D look, specify darker color for border and innermost frames than background, for example. Alpha particle version doesn't recognize innermost frame color, since it doesn't have a chance to draw the portion.

wS width
Specify frame width in integer. S is either b for border or m for frame. Alpha particle version doesn't recognize these options.
f font_name
Specify font to use for window and icon titles. They are written in `foreground' color.
kS modifier key
Specify window manipulation key. S here is one of operation sub-keys: m, r, i, n, p, a, l, d, t, x. See section OPERATIONS for details. Modifier is the sum of one or more integers representing modifier keys. See section MODIFIERS for details. Key is one of the key names in /usr/include/X11/keysymdef.h, with the prefix XK_ removed.
bS modifier button
Specify window manipulation button. S and modifier are the same as those for key option. Button is mouse button number: 1 through 5.
o other_option
Specify other options. There are five of them, and a number is assigned to each. Pick up options you want and add their numbers, or specify 0 if you want none of them.
1
Set focus to a window when it is raised.
2
Set focus to a window when the pointer is circulated and points it.
4
Set focus to a window when a window is mapped.
8
Raise a window when the pointer is circulated and points it.
16
Warp pointer to upper-left corner of a window, when it is focused.

"Circulated" here means when `next' (n sub-key) or `previous' (p sub-key) window operations are executed.

Operations

Following operation sub-keys are available:
m
Trigger move operation.
r
Trigger resize operation.
i
Iconify/deiconify a window.
n
Move pointer to next window.
p
Move pointer to previous window.
a
Raise a window.
l
Lower a window.
d
Delete a window, if it defines WM_DELETE_WINDOW protocol. If it doesn't, it cannot be deleted by heliwm.
t
Terminate heliwm.
x
Maximize/unmaximize a window. This is available only when MAXIMIZE compile time option is selected.

Move and resize operations are triggered by pressing a key or a mouse button, as described above. The cursor changes, a band appears to show current position and size of the window, and an indicator window appears at the center of the screen. Use arrow keys (up, down, left and right), vi(1) style (k, j, h and l) or emacs(1) style (p, n, b and f) cursor movement keys to move or resize a window. Holding down a shift key makes the change smaller, while a control key makes it even smaller. Modifier 1 key, if available, makes it larger. Press Enter key or a button to complete the operation.

When a window is iconified for the first time, the band shows up for placement of icon. Use the keys to move it to anywhere you want.

n operation moves the pointer to upper-left corner of next window in a list of windows which heliwm manages. p operation moves the pointer to previous one.

Maximizing a window makes it as large as possible within the size of the screen. When a client has a maximum size set, heliwm admires it, so it is impossible to make the window larger than the size.

Modifiers

Following modifiers are available:
0
Require no modifier to be pressed.
1
Require a shift key to be pressed.
2
Require a control key to be pressed.
4
Require a modifier 1 key to be pressed.
8
Require a modifier 2 key to be pressed.

For example, if you want a modifier 1 key and a shift key to be pressed while pressing a key, specify 5 as modifier. Run xmodmap(1) to see what keys are assigned to modifier 1 and 2.

Memory and Cpu Time Saving Tips

Compile heliwm without FRAME option to make it alpha particle version.

Avoid wrapping windows as much as possible. Every time obscured part is exposed, it has to be drawn, consuming extra CPU time.

Use rxvt(1) instead of xterm(1) when possible.

Use X(1) only when necessary. :-)

Author

Hidetoshi Ohtomo <hok@lab.rim.or.jp>

Distribution Site

http://www.cc.rim.or.jp/~hok/heliwm/

Files

/usr/lib/X11/heliwm/heliwmrc
System default run control file.
~/.heliwmrc
User run control file.

Design

Following strategies were taken in order to make the program small and/or lessen CPU load:

No automatic icon placement. When a window is first iconified, user must determine where to place the icon.

Moving and resizing operations can't be done with mouse. Tracking pointer movement is quite heavy task for CPU.

Bugs

This window manager was named lithiwm at first, but it was soon renamed.

It may be hard to distinguish bugs from deficiencies due to design.

If you find a bug or a way to make the program lighter, I would like to be informed about it. Please contact me by sending an email to the address above.

License

Copyright (C) 2000, 2001 Hidetoshi Ohtomo. All rights reserved.

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.

The license can be found at

http://www.gnu.org/copyleft/gpl.html.
See AlsoX(1), fvwm(1), rxvt(1), xlsfonts(1), xmodmap(1), Linux Ecology
HOWTO by Werner Heuser and Wade W. Hampton, and Periodic Table of the Elements.