JWM

Related articles
Window manager
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
.
Installation
Install
the
jwm
package.
Starting
You can start a JWM session with a
display manager
. Alternatively, you can run
jwm
with
xinit
.
Configuration
Configuration is done via a single
XML
file. There is native support for customizable panels and buttons, and a
system tray
dock. A sample configuration file is located at
/etc/system.jwmrc
which can be copied to the user configuration
~/.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.
Autostart
Add an
StartupCommand
section in your configuration file to execute one or more commands at startup. For example:
~/.jwmrc
<StartupCommand>
feh --randomize --bg-fill ~/backgrounds/*
xterm -geometry 100x30 &
numlockx
</StartupCommand>
Tips and tricks
Improve <Tasklist> contrast
Change the default
<Tasklist>
settings to match the improved contrast style of the default
<MenuStyle>
and active
<WindowStyle>
:
<TaskListStyle>
<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.
<Restart/>
and
<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
The
Restart
and
Poweroff
menu options can use
systemctl
commands:
<Program label="Restart">systemctl reboot</Program>
<Program label="Poweroff">systemctl poweroff</Program>
Alternatively, use
<Key>
to bind the commands to a chosen key.
See
Allow users to shutdown#Using systemd-logind
for additional information.
Conky
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).
xfdesktop
may conflict with Conky; workarounds include:
Review the
Conky FAQ
for workarounds in
~/.conkyrc
<Group>
Conky and specify the following
<Option>
tags in
~/.jwmrc
:
<Group>
    <Class>Conky</Class>
    <Option>nolist</Option>
    <Option>noborder</Option>
    <Option>notitle</Option>
    <Option>sticky</Option>
</Group>
Minimal font suggestions
<WindowStyle>
<Font>-*-fixed-*-r-*-*-10-*-*-*-*-*-*-*</Font>

<TaskListStyle>
<Font>-*-fixed-*-r-*-*-13-*-*-*-*-*-*-*</Font>

<TrayStyle>
<Font>-*-fixed-*-r-*-*-13-*-*-*-*-*-*-*</Font>
See
xfontsel(1)
and 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>
Note
Run the
env
command to list the modified environments of the current user.
Troubleshooting
Additional troubleshooting
If X is not already running on
tty1
,
Ctrl+Alt+F1
will allow you to review standard output errors and messages. See
script(1)
command for details on how to create a typescript of what is printed to the terminal.
All windows are transparent using picom
Adjust the window transparency in
~/.jwmrc
:
<WindowStyle>
  <Opacity>1.0</Opacity>
</WindowStyle>
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
Note
Configuration changes are applied after restarting JWM via the
<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 -p
between configuration changes to ensure valid markup and a stable environment.
See also
Joe's Window Manager
PuppyLinux JoesWindowManager
Puppy Linux JWM themes exchange