JWM
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
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>
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
<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.