JWM Agnostic X on Arch – Part 1

Published on November 4, 2022 at 12:54 am by LEW


Around a year ago I did a series of posts on setting up Joe’s Window Manager (JWM) on a base Debian install. This time I am taking a leap of faith and installing JWM on Arch.

What I mean by Agnostic is that I am going to, as much as possible, stay away from two major tool kits; GTK and QT.

My original thought for this series was Openbox, even though I am somewhat more familiar with JWM. My reasoning was based on a number of articles I read comparing Openbox to JWM. However, once installed, I found very little to make me stick with Openbox over JWM.

Historical Stuff

I have read that Openbox is “Feature Complete”. There has not been a major release since 2015. I will give credit that Openbox has a large support community, and quite a few official Graphical User Interface (GUI) tools available to make the average users life easier. It is a good Window Manager (WM), and is currently a better choice as Window Manager (WM) for desktop environments like LXQT.

JWM on the other had is still in active development (last release was spring of this year, 2022). When I initially started with JWM, there were no ease of use tools. However I find the feature list similar to Openbox, with a few areas where JWM provides more/additional features with a base install. Today there are also several third party tools for JWM, making it easier to use. Things like a GUI for configuration without manually editing the configuration file (JWM Kit comes to mind as a good example).

Version Infomraiotn

The version of JWM I used in Debian Stable was 2.3.7. The Arch version of JWM is 2.4.3, which is the current release. Debian will be migrating to 2.4.2 in the next stable release (Bookworm, Debian 12). I bring this up because of some updates to JWM between 2.3 and 2.4. Also, in this series I will be spending a large amount of time discussing the JWM configuration options in much greater detail than I have done before.

Base Arch Install

This is going to be a really quick run through. As I have covered installing Arch in a series of previous posts.

The computer I am using for this is a second generation Intel NUC. It has a I5-3427 1.8 Ghz CPU, 16 GB of RAM, 238 GB SSD, Intel 82579LM Network Adapter, and an Intel 3rd Gen Graphics Controller. Strictly for this series of posts, I went with a single large ext4 partition and no swap space.

A quick note on the hardware, while the 2nd gen NUC has UEFI boot, I found it to be somewhat flaky with the installed SSD and non Microsoft Operating Systems. The BIOS supports legacy boot, so I turned off UEFI. This gave me far less trouble than trying to get a flaky UEFI to work properly.

Using the packstrap program I loaded the following packages onto the SSD, which was mounted at /mnt; base, linux, vi, sudo, networkmanager.

One of the things to remember about Arch, it does not install much in the way of extra packages. For example, there is no command line editor in the base package, so I need to install one (I use vi, but could just as easily have installed nano).

After using the genfstab program to create the fstab file for my new install, I use the arch-chroot command to move into my new install, as there are a few things that need to be configured before I can reboot.

From the new install I set the Hardware clock, generate locale information, populate hostname and hosts files, set the root password, enable the network manager, and install/configure the grub boot loader.

Exiting the chroot environment I reboot. If I did everything correctly I should be in my actual Arch install at this point. Since this is a first run, I need to log in and do a few things; like set the time zone, create a non privileged user, setup sudo, and give said unprivileged user sudo privileges.

Installing Xorg and JWM

Once we have Arch setup and running to our satisfaction, it is time to start the GUI install. This will involve installing the proper graphics driver, the Xorg server, various xorg packages, and JWM.

You will need to investigate the graphics driver for your computer. The below command can get you started;

lspci | grep VGA

There will be a few programs, in addition to the xorg-server that will also need to be installed. My install command looks like this (yours will vary depending on required graphics drivers).

sudo pacman -S <graphics drivers> xorg-sever xorg-xinit xterm
               xorg-fonts-misc jwm

The xorg-xinit package provides the startx command (we are not installing a Display Manager (DM) at this point).

The xterm package needs to be installed because it is not included in the basic Arch X install (remember Arch is about doing things your way, so does not install extra packages other Distros might), and we really need a terminal program.

We need to install some xorg-fonts, because the only font present is the one being used by the terminal, and is not really usable by a GUI.

And last, we install our window manager, jwm.


Before doing anything else, we need to copy some configuration files to our home directory for both xorg and jwm.

cp /etc/X11/xinit/xinitrc ~/.xinitrc
cp /etc/system.jwmrc ~/.jwmrc

We will be editing these local files instead of the system files. That way any changes will only affect the local user and the original configuration files remain intact.

For the moment we will focus on the .xinitrc file. Open it in your text editor and scroll all the way to the bottom. Yo9u should see a bunch of lines about twm, xclock, and xterm. Starting with twm &, delete them. But do not delete anything above twm &. You are going to add the following single line in their place.

exec jwm

Now if everything is functioning correctly, you should be able to enter the command startx to start the X server and jwm.

Don’t expect anything supper fancy at this point. The default jwm is rather plane looking. But we will start working on that in the next post.


We have achieved our basic goal of installing arch, then xorg, and lastly jwm. We have not installed a Display Manager, that is for much latter. We will initially be logging in via command line and starting the x server the same way.

For our next post we will discuss various ways of configuring jwm.

JWM Agnostic X on Arch – Part 1 – The Install

JWM Agnostic X on Arch – Part 2 – Adding Some Applications

JWM Agnostic X on Arch – Part 3 – Initial Setup for Config File

JWM Agnostic X on Arch – Part 4 – StartupCommand and Group

JWM Agnostic X on Arch – Part 5 – Building a Menu Structure

JWM Agnostic X on Arch – Part 6 – Tray Attributes

JWM Agnostic X on Arch – Part 7 – Tray Content

JWM Agnostic X on Arch – Part 8 – Desktops, Bindings, Colors, and Fonts

JWM Agnostic X on Arch – Part 9 – Styling of Major Elements

JWM Agnostic X on Arch – Part 10 – Some more Styling

JWM Agnostic X on Arch – Part 11 – Additional functionality

Add New Comment

Your email address will not be published. Required fields are marked *