JWM (Joe's Window Manager) is a lightweight window manager for Xorg written in C. It is under active development and maintained by Joe Wingbermuehle. It is the default window manager base for distributions such as Puppy Linux and Damn Small Linux.
JWM uses approximately 5 MB of resident memory under normal operating conditions. As of January 2009, the size of the version present in the official Arch Linux repositories is under 76 KB packaged (compare to dwm at under 17 KB) and under 171 KB installed (compare to dwm at 68 KB). A minimally compiled version consumes approximately 136 KB of disk space and occupies under 1500 KB of resident memory.
- 1 Installation
- 2 Starting
- 3 Configuration
- 4 Tips and tricks
- 5 Troubleshooting
- 6 See also
jwm with xinit.
A sample configuration file is located at
$ touch ~/.jwmrc
$ cp -i /etc/system.jwmrc ~/.jwmrc
Edit this file to establish the environment. See JWM Configuration for a complete list of available tags, attributes and values.
See JWM Configuration.
Tips and tricks
Improve <Tasklist> contrast
Change the default
<Tasklist> settings to match the improved contrast style of the default
<MenuStyle> and active
<ActiveForeground>black</ActiveForeground> <ActiveBackground>gray90:gray70</ActiveBackground></TaskListStyle> <TaskListStyle> <ActiveForeground>white</ActiveForeground> <ActiveBackground>#70849d:#2e3a67</ActiveBackground> </TaskListStyle>
Logout and refresh
<Exit/> (Logout) is the menu command to cleanly log out of the current X server.
<Restart/> (Refresh) is the menu command tag which reinitializes the configuration file and updates menus and keybindings accordingly.
<Exit/> can be bound to the
Ctrl+Alt modified keys following the example syntax below:
<Key mask="CA" key="r">exec:jwm -restart</Key> <Key mask="CA" key="e">exec:jwm -exit</Key>
Reboot and shutdown
A system with systemd can be rebooted with the
Poweroff menu options.
<Program label="Restart">systemctl reboot</Program> <Program label="Poweroff">systemctl poweroff</Program>
<Key> to bind the commands to a chosen key.
See Allow users to shutdown for additional information.
Conky can be run within the
<StartupCommand> to provide the display of various data streams (e.g. battery life and AC adapter status for notebooks). may conflict with Conky; workarounds include:
- Review the Conky FAQ for workarounds in
<Group>Conky and specify the following
<Group> <Class>Conky</Class> <Option>nolist</Option> <Option>noborder</Option> <Option>notitle</Option> <Option>sticky</Option> </Group>
Minimal font suggestions
<WindowStyle> -*-fixed-*-r-*-*-10-*-*-*-*-*-*-* <TaskListStyle> -*-fixed-*-r-*-*-13-*-*-*-*-*-*-* <TrayStyle> -*-fixed-*-r-*-*-13-*-*-*-*-*-*-*
xfontseland review the X Logical Font Description article for additional details and pattern descriptions.
Manual tiling support
Tiling support can be added to JWM with the Poor Man's Tiling Window Manager. Assuming
manage.py is part of the local
PATH, various tiling actions can be assigned to keys, for example:
<Key mask="H" key="Up">exec:manage.py swap</Key> <Key mask="H" key="Down">exec:manage.py cycle</Key> <Key mask="H" key="Left">exec:manage.py left</Key> <Key mask="H" key="Right">exec:manage.py right</Key>
envcommand to list the modified environments of the current user.
If X is not already running on
Ctrl+Alt+F1 will allow you to review standard output errors and messages. See command for details on how to create a typescript of what is printed to the terminal.
All windows are transparent using compton
Adjust the window transparency in
<Inactive> <Opacity>1,0</Opacity> </Inactive>
Terminal windows do not fully maximize
Add a group with the
iignore option to
~/.jwmrc, for example:
<Group> <Class>URxvt</Class> <Option>iignore</Option> </Group>
Verify configuration changes
To check the JWM configuration and return syntax errors (including associated line numbers), if any, run:
$ jwm -p
<Restart/>command, available on the initial root menu. There is no need to restart the X server for changes to apply. Users are recommended to use
jwm -pbetween configuration changes to ensure valid markup and a stable environment.