Introduction
First, this is not a Wayland critique. Wayland has its place and is likely the future of Linux desktops. Still, some applications and workflows remain tied to X11 or don’t behave well under Wayland or XWayland.
The purpose of this video is to build a lightweight, usable Graphical User Interface (GUI) on Debian 13 (Trixie) using Xorg (X11), the SLIM‑Fork Login manager (Display Manager or DM), and JWM (Joe’s Window Manager), instead of more common Desktop Environments and DM’s.
The base setup I propose will work straight out of the box, even for beginners. It won’t be visually polished by default. Improving the appearance requires manually editing configuration files, an intermediate skill I’ll cover in future articles.
Before moving forward, I want to discuss the choices I have mentioned. This is Linux and there are different ways to do everything, and my choices do not imply the only way of doing something.
- Debian 13: Debian prioritizes stability over bleeding‑edge packages. That tradeoff suits 95% users. 5% are niche cases, and may need newer software, prohibitory software, and custom hardware drivers.
- Xorg: Many legacy GUI applications were designed for X11 and may not behave correctly under Wayland or XWayland. So Xorg knowledge remains both useful and needed, in spite of what the experts tell us.
- SLIM‑Fork: A maintained fork of the original SLIM (Simple Login Manager), which has been unmaintained since 2013. Slim-Fork has addressed several existing issues with newer Linux system environments. It is also light weight and relatively easy to configure.
- JWM: Joe’s Window Manager is a lightweight, actively maintained window manager with a small footprint and useful features (panel, menu, basic taskbar). While based on the single xlib library, other libraries can be incorporated for greater capability’s, especially with graphics.
Getting Debian 13
Once your hardware is ready, be it Virtual Machine (VM) or bare metal, the first step si to download a Debian 13 ISO. I recommend the Net Install ISO, as it has a smaller download footprint than some of the other ISO files.
Open your browser and search for “Debian Net Install.” This should bring up the download page as one of the top choices. You can use normal http or bittorrent to download, but chose the version that matches your device. I am using the AMD64 version, which is probably the most common. Click on your version and the ISO should download.
If doing a bare metal install you will need to use a program like Baleen Etcher, Rufus, Fedora media Writer, or dd to create installation media. If you are building a virtual machine you can use the ISO file directly.
Setup VM
Using a Proxmox VE server I will need to upload the ISO file if we have not used Debian 13 before.
- Upload the ISO: In the Proxmox VE web interface select your node (host) → Local → ISO Images. Click Upload and choose the Debian 13 ISO from your computer.
- Create the VM: Click Create VM to start the wizard.
- General Settings: Assign an ID number and a unique name. It can be helpful to group VM IDs, and select descriptive VM Names. I am using ID: 505, and name: Rhea
- CD/DVD: Select the ISO image you uploaded.
- BIOS/UEFI: Choose BIOS or UEFI. UEFI is preferred when practical. If you choose UEFI, assign storage for a small EFI partition. I am using Local-LVM for this.
- Hard disk: Set the virtual disk size according to your needs and available storage. I am using 128 GB for this build.
- CPU: Assign the number of CPU cores based on planned workload. I assigned 4 CPU cores, mainly because of the extra work running a GUI.
- Memory: Set the VM RAM amount according to requirements. I am using 4 GB, again to accommodate the GUI.
- Network: Use the default network unless you need a custom bridge/VLAN.
- Finish: Confirm the configuration. The wizard will close and the VM will be created.
Install Debian
I always like to review the Summary, Hardware, and Options tab before starting a VM for the first time. If I am building a VM that will be around for a long time, I also like to add a few notes, basically as a available record of what I did and why (this has really saved my bacon in the past). For example, this is not a production server, so it does not need to start at boot.
After that I start the VM, and go to full screen mode. When we get to the Debian 13 install screen I am going straight to the graphical install, something I almost never do.
This will advance the install to selecting a language, location, and keyboard layout. For me the language is English, the location is the Philippines, and the Keyboard is American English.07 Setting Up and using Debian Trixie Back-Ports
Next, with no intervention from us, the install will load some components from the installation media. This will take a a few moments to complete.
The next automated task is to detect and configure the network hardware. This is a step that can fail if your network hardware requires proprietary firmware or drivers. Not as much of an issue as it used to be, in that non free firmware is now available in the Debian installer. If it does fail, you will need to search for the required firmware and make it available on the instillation media. Hopefully there is a DEB package available. Unfortunately this is an ongoing Linux issue, as most manufacturers do not build drivers for Linux, and we need to wait for a developer to reverse engineer them.
When we get to the page for setting the hostname, we can select the Go Back button to manually configure our network if we have specific needs,. Probably the most common would be a static IP address. Go ahead and enter a hostname, note do not use capital letters or symbols, or the installer will balk, throw an error, and force you to go back and correct the issue.
You will be asked for a domain name. You will probably not need this for a strict desktop installation. It only becomes important for servers. Same rules as the hostname, no capitals, no symbols, other than a period. Note don’t choose domain names at random. If you want one, they are very inexpensive, or you could use home.arpa, which is specifically designated for local network usage.
Now we can set our root user password. If you leave the password blank, then the root account will be disabled, sudo will be installed, and when you create a non root user, it will be assigned to the sudo group. Note sudo is a program to elevate privileges on a temporary basis for administrative functions.
Now enter a your full User name. This can be anything you want. A login name will be derived from this on the next page. However you can change the login name to anything you desire. Again not capitalization and no symbols. Finish up your non root user with a password.
Now it is time to prepare the storage media. Volumes could be written on this task alone, but I am going to keep it simple for this install. Select Guided – Use Entire Disk. Select your storage media. Unless you installed multiple drives you should only see one option. And again going for simplicity chose All files in one partition. Then you just need to approve your changes.
At this point the base system will be installed. Just wait for it to finish.
After the base system is installed we need to configure the package manager. This is what will install additional software for you. The first question refers to the good old days where we downloaded multiple CD/DVD images. You can still install without internet if you have at some point downloaded the various CD/DVD images. But be advised they are very large. If we are using the net install image (which we are), you can say no here. If you are using a offline cd/dvd set then you would say yeas here and follow the prompts for the package manager to index your disc collection.
The next step in configuring the package manager is to setup a online repository, if you have internet. Select a region geographically close to your location. Then select a repository form that region. As a begienr go with deb.debian.org, which is the safe choice and will always work. Though in some cases. it might not be as fast as some of the others.
Finally you need to enter a proxy server, or leave it blank. If you are on someones network they should have informed you if a proxy is requires. Most home networks do not have a proxy server. In most cases, for the home user it is safest to leave this field blank.
Once the package manager is configured, you will be asked about participating in the popularity contest. Yes this is telemetry, but it is opt out by default. Basically provides statistics on package usage, so developers know where to focus their efforts. If I am running a server or test environment I leave this off. If I am running a long term desktop with no personal information being used, I tend to turn it on.
Next we come to task select. This is where you can set your computer up for a specific task or mode of operation. For a custom GUI build I un-mark everything except standard system utilities.
Once the software is installed, the boot loader will be setup. If you are using UEFI, there will be no manual intervention unless there are multiple EFI partitions. If you are in BIOS mode you will need to select your boot drive.
And the install is finished. At this point you should have a reboot screen.
Sudo user
Okay, time to reboot the system and log in. For this initial login I need to be root, as I have some more software I want to install. The first application being sudo, so I can log in later as a non root user.
Entering root and the root password logs me in to the standard Debian Linux disclaimer about free software, then drops me to a command line. I know then command line is a scary concept for some people, but in this video we will not spend a lot of time here.
Since we are logged in as root, sudo is not necessary, plus the fact that it is not installed yet.
The first thing we need to do is use the Advanced package Tool (apt) to update our system. We use the upgrade option to fetch the latest package list form the repository, and the update option to download and install any packages that are newer tahan what is currently on our system.
apt update
apt upgrade
Since we did a net install we should get a “All Packages are up to date” message. And 0 packages to upgrade. Note if you did a non net install you will see updates being performed.
After that we want to install sudo with apt, using the install option and the package name. Then add our user to the sudo group with usermod.
apt install sudo
usermod -aG sudo <user>
Note the -a option means add, and the capital G is for group. The group is sudo and the user is your login name.
Install the GUI
Okay, just one more command line item to accomplish in this video. We will again use apt with the isntall option to download the needed packages for a functioning GUI.
apt install xorg xinit xterm jwm slim
So lets go through this.
- xorg: This is the graphics server that provides the basic tools for a GUI display. This is a meta package in that it will install additional package for added functionality, like xcalc and xclock.
- xinit: This package provides the tools for star5ting an X Server form the command line, specifically startx. You could forgo this package. It is fairly small and I add it too aid in troubleshooting when I am working on no standard implementations of X.
- xterm: This is one of the original terminal emulators. It does not have a lot of fancy features, but is useful if you need a command line inside of X.
- jwm: This is our window manager. It is very light weight and uses very few resources. It does have some nice features, like menus, panels, and task bars.
- slim: If you research the package, you will find this is technically slim-fork and not slim. It is a display manager or login manager if you prefer.
Reboot into GUI
Okay this is where it all comes together. When we do a restart, we should boot into the slim login manager screen. Pretty cool, no? Entering our name and password, we will be dropped into the jwm window manager. No command line yet, but don’t get to comfortable.
As mentioned, this is not the prettiest display nor the most functional, at least at the moment. But this install is the beginner level.
Conclusions
While this install is straightforward and simple the next several steps will get progressively more complex. They will be covered in follow up videos.
- Adding application (File Manager, Office Suit, Graphics, etc)
- Editing JWM configuration file (menus, windows, taskbar, etc)
- Editing SLIM configuration files (login boxes, messages, backgrounds, etc)
This setup can be made quite functional and very easy to use. But doing so will be more of an intermediate level skill set. But like a lot of things in Linux, if we take it slow, one step at a time, it ends up not being that hard.
you


