So You Really Want A GUI

Published on September 17, 2021 at 7:39 am by LEW


You have built a base Debian Linux system but you need to run applications that will require a Graphical User Interface (GUI), like word processors and spreadsheet programs! However you want to keep to a minimalist philosophy and avoid bloat, or you are running really old hardware. Whatever the reason, I am going to step through setting up a minimal GUI environment on top of the a base build.

Generally it is not recommend to put a GUI on servers, from a security standpoint. This introduces more running software, and potentially more vulnerabilities. If you have older non server hardware, you can get a performance boost from a minimal GUI, instead of a full blown desktop.

One thing I want to point out before diving in, bloat is a relative term, especially in Linux. Though they are considered bloated by a lot of Linux Users, desktops like KDE and/or Gnome both still take up far less space and resources than some other operating systems desktops. But they do require more resources than what we will be doing today.

What makes up a GUI

X-windows: To run a GUI under Linux, you first need a graphical framework for screen rendering. The old boy on the block is X-Windows. The new kid is Wayland. While Wayland will eventually replace X-windows, it still suffers form compatibility issues with a lot of existing software. So we will be using X-windows, and specifically the Xorg branch.

Window Manager: The next thing we need is a Windows Manager (WM). This is what manipulates the screen images, allowing opening, closing, moving, and rendering of windows and the screen background. There are a lot of WM’s out there from the absolute minimum to the complex. We will be using Joe’s Window Manager (JWM), which is very light on resources, but also has a reasonable set of features.

Note that all full desktops have an underlying window manager. The desktop just adds more features on top of the window manager.

Display Manager: For handling various startup and log in tasks, we need a Display manager (DM). There are also a few of these out there with varying sets of features and resource usage. Assuming this is not a server and no remote log in is required, we will be using SLIM. Not fancy, but it does allow graphical log ins.

One note on SLIM, the project is currently unsupported, but it is feature complete. There are some compatibility issues with systemed, but unless we are doing something more than just local login, they will not affect us. There are several branch projects that resolve this problem. I am hoping one will become mainline at some point. If you are uncomfortable with this, then you might want to go with something like LightDM instead.

Installing Xorg

If you want the entire Xorg package, then the command is fairly simple.

apt install xorg

This will install a lot of packages. If this is your first time around, I would recommend this. If you have some experience and want to keep it minimal, then you could try this.

apt-get install --no-install-recommends \
xserver-xorg \
xinit \

This will install an absolute minimal Xorg X-windows server.

Assuming you do not have any additional firmware requirements for your hardware this is basically it for installing a version of X-windows.

Installing JWM

This is the easy part. JWM has no dependencies that were not meet by installing Xorg Server.

apt install jwm

Note that JWM does have one recommend and one suggest. The recommend is the menu package which can automatically generate a part of the start menu. The suggest is x11-apps package which includes some basic apps like a calculator and text editor. If you wanted you could do the –no-install-recommends again if you wanted.

Installing SLIM

Just as easy as JWM to install SLIM.

apt install slim

Slim does have a few recommends and suggests. The recommend for xterm was take care of by the JWM install, as it is a requirement there. The suggests are scrot (command line based screen capture utility) and xauth (authentication utility). Again, you can chose not to install them with —no-install-recommends.


Okay, we are done, now we just need to restart and we should boot to a graphical log in screen. As to actually navigating and customizing the appearance of SLIM or JWM once you log in, that is a subject for another post.


In this post we installed the Xorg Xserver, the JWM Window Manger, and the SLIM Display manager to create a GUI environment. This is a light weight simple environment. I have actually run this setup on my main Linux computer for years. It should do most of the things you expect from a traditional GUI. For those who want more, I will discuss full desktops at some point in another post.

Add New Comment

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