XtermWM : Downloads | Screenshots | GitLab Project Page | SourceForge Project Page

This document outlines the procedure to install XtermVM on a "headless" (no X11/Wayland) server, yet still get full keyboard and mouse support. For this demonstration, I am using Debian 10.

Step 1: Obtain And Install Debian Netinst

We start with the Debian 10.4 "netinst" CD: debian-10.4.0-amd64-netinst.iso. This a 352.3MB iso. We create a virtual machine (I am using VirtualBox) with 512 MB RAM, 4 GB disk, and 2 cores.

I set the VM to boot off the netinst CD, and when the Debian installer comes up, I select the Advanced | Expert mode option:
Headless installation

I go through the install options, selecting all default options, except that for task selection I leave everything blank:
Headless installation

After installation, I have a barebones VM using only ### MB of disk:
Headless installation

Unfortunately the console font has been set. XtermWM uses a lot of glyphs that the raw console can do, but not with this font. Let's eliminate console-setup:

  # apt-get purge console-setup console-setup-linux
  

Much better:
Headless installation

Step 2: Install XtermWM Prerequisites

Now that VM is up, let's get XtermWM and its prerequisites installed. We are going to install everything from source, which is the worst-case impact on disk use. We want the following packages:

So after logging in as root, I execute:

    # apt-get install gcc libncursesw5-dev libgpm-dev autoconf automake default-jdk-headless ant git gpm
  

The prereqs took a chunk of disk, but there is still lots left over for what we need:
Headless installation

Step 3: Install LCXterm

LCXterm is an ncurses-based terminal "helper" that can add a few missing features to the raw Linux console. In this case, we want the mouse to work with XtermWM, and will use LCXterm in its "passthru" mode to achieve that. Let's grab it and get it installed:

      # git clone https://gitlab.com/AutumnMeowMeow/lcxterm
      # cd lcxterm
      # ./autogen.sh && make install
  

If all goes well, we will see this:
Headless installation

Step 4: Install XtermWM

The next step is installing XtermWM:

      # git clone https://gitlab.com/AutumnMeowMeow/xtermwm
      # cd xtermwm
      # ./autogen.sh && make install
  

If all goes well, we will see this:
Headless installation

Step 5: Run XtermWM

XtermWM installed the xtwm command. This is a simple shell script that will call java with the right arguments to get it running. But since we are on the raw console, we want LCXterm running first, so that the mouse will work.

      # lcxterm -p
      # xtwm
  

And now we should see something like this:
Headless installation

Let's get a shell running. Click on Application | Programs | Shell:
Headless installation

...and here is the shell:
Headless installation

Let's add the desktop pager. Click on Application | Widgets | Desktop Pager:
Headless installation

We can click the pager icons and switch to desktop 4:
Headless installation

While we are here, let's put some tiled terminals on the desktop. Click on Terminal | Add root terminal:
Headless installation

Let's close the pager to clear up the view, and then split the terminal vertically. Click on Window | Close and then Terminal | Vertical split:
Headless installation

Click the vertical divider and drag the mouse:
Headless installation

Now we can play with the terminals:
Headless installation

Let's go back to desktop 1. Click Window | Next desktop until we see desktop 1 again:
Headless installation

Conclusion

This was a quick look at XtermWM on the raw Linux console. It can also do all of its tricks on a real graphical terminal emulator, or create its own fixed-width display using Swing.