Lighter still

19 April –

The end of Windows for me

The evening of 15 November 2018. For many months on end, Windows 10 tries to force its ‘Spring Creators Update’ upon me. But it never succeeds: after about 15 minutes (perhaps shorter, but it feels like at least 15 minutes) the update ends at 30% completed, in an un­handled exception, the nature of which has never become clear. In another wasted quarter of an hour, in which the computer cannot be used, the changes are rolled back, so the Hewlett & Packard Pavilion laptop I’m using, bought on 2 July 2016, is back at a Windows 10 release dating from mid or end 2017.

That fatal evening it’s worse: the rollback also fails. There’s an endless loop of attempts to remedy the situation. Switching the computer off by holding the on-off switch depressed doesn’t help: after that it just starts over.

So I switch to a backup computer, a Packard Bell bought 2 April 2015. It has Windows 8 on it, which doesn’t get that annoying update.

I kept using that older computer until 26 July 2019. Another disastrous incident: I let the laptop slip off my lap, causing it to hit the floor hard on one corner. The system offered a diagnosis and tried to revert it to an earlier Windows revision, but that never succeeded.

At that point I made a decision: to finally say goodbye to MSDOS and MS Windows, OSes I had never liked but had been using since 1990, when I switched to a different employer after five years with Nixdorf Computer, where in 1985 I had got to know Unix. Despite those almost 30 years of missing UNIX, I was still familiar with it, because I was using several implementations of Unix’s userland utilities for MSDOS and Windows, most recently CygWin. And my website was running on VPSes, first under OpenBSD and soon after always under FreeBSD.

Quest

The first Linux I tried was Linux Mint 18.3 Sylvia. I immediately liked it. Where Windows 8 and 10 offered me lots of things I will never need, and hid what I do need ever deeper within the system, like a command line, a text editor and a browser, Linux Mint has a start button in the lower left corner of the screen, and the menu it invokes is full of useful preinstalled programs.

On 7 and 8 September 2023 I noticed that every time I used Youtube under Linux Mint, meanwhile probably version 20.1 Ulyssa, the fan soon became loud. Program top revealed that desktop environment process cinnamon was using up about 230% of processor capacity. Three types of Firefox processes were using around 45% each, so almost all four processor cores (two physical cores, capable of running 4 threads) were in constant use. Then it soon gets hot.

I read that Xfce was more efficient, and an experiment on the unused ex-Windows HP Pavilion confirmed that. The look & feel remained largely the same, so I might switch to it, to Linux Mint Xfce.

However, the problem with Cinnamon was gone after an automatic kernel update. That was in kernel 5.15.0-83-generic. Temporarily returning to 82 or 79 did not make it come back. But while logging out and in again, a landscape-like symbol appeared (per­haps misinterpreted by me; I’m bad with icons) by which I could switch between the efficient and the inefficient version. The cause was ‘software rendering’, i.e. not using the graphical co-processor, so the normal processor cores, which are not very well suited for it, had to do that work.

Detection:
inxi -Fxz | grep -i -B1 render
If it says:
OpenGL: renderer: Mesa Intel UHD Graphics (CML GT2)
the special hardware is used, and CPU usage is low. But with:
OpenGL: renderer: llvmpipe (LLVM 15.0.7 256 bits)
a software emulation for the general processor cores is used, which is much slower and inefficient.

Nevertheless, my quest for more efficient desktop environments had already started, unstoppably.

I had never liked, or never understood, the object-oriented desktop paradigm that was popularised from the 1990s onward. Before they used computers, people were supposed to have rather chaotic piles of documents and folders lying before them on their desk, then pick one up to work on it. Then when computers were introduced, the chaos should move from desktop to screen, where workers clicked or double-clicked on a document, and the OS opened it in the associated program – assuming a one-to-one relation.

Is that really a pleasant or effective way to work? Not for me. I still think in terms of programs (not apps!) from which (or with which, in the CLI – command line interface) you open files. Files that may represent documents, or something else.

Anyway, to each their own, but I always used the desktop as a menu system. That worked in Windows, and it worked in Linux Mint. No documents, but launchers on the desktop, or rather, in subfolders, and sometimes subfolders in subfolders, to keep things organised.

There the problems began with Linux Mint Xfce.

jgmenu

The menu in Linux Mint Cinnamon was OK, when installing a new program it was auto­matically updated, but I never found a way for the user to enhance or alter it.

It came as a relief to discover jgmenu. Fully configurable. I started using that for Linux Mint Xcfe in the fourth quarter of 2023, and also for Lubuntu in early 2024. Lubuntu is Ubuntu with LXQt (formerly LXDE) as the desktop environment.

By June 2024 I had to make a choice of whether to go from Lubuntu 23.10 to 24.04, or change to Bunsenlabs Boron, of which I had become a fan. Bunsenlabs was the winner. And the meanwhile all too familiar jgmenu is one of its components, I was glad to discover.

Bunsenlabs Boron was OK, based on Debian 12 Bookworm, but like so many Linux distributions, it too requires periodic upgrade. I looked at the RC3 (Release Candidate 3) of the successor, Bunsenlabs Carbon, built on Debian 13 Trixie. And I didn’t like it. Ugly icons in the system tray, with fat black lines on white or gray backgrounds.

I found that taskbar tint2 was replaced by xfce4-panel.

Linguistic intermezzo: to me a panel is something with a considerable width, but also a considerable height. A bar, like a taskbar, is wide, but has a limited height, like for one of text and icons. (I like my taskbars horizontal, not vertical.)

In Bunsenlabs Carbon, the panel is vertical and put against the left side of the screen. OK, that’s configurable of course. But when you change it to horizontal, it is NOT placed top or bottom, but in the middle of the screen, at half-height. Why is that the default? Why would anyone ever want such a position? I don’t see it.

Repositioning was sometimes possible, sometimes not, or it was unclear how exactly to do that.

Fluxbox

In the first months of 2026 I experimented with various routes towards a rolling release solution, involving Alpine Linux, Fluxbox, Openbox, Manjaro and Arch Linux. Eventually I managed to get Fluxbox running satisfactorily on Debian Testing, which is currently Forky. I have this installed on all my non-server computers now.

It is a very light and rather simple system, that nevertheless serves all my needs. Unlike Bunsenlabs Linux, Fluxbox does not need separate components for a taskbar (formerly tint2, now xfce4-panel) and a menu (jgmenu). Fluxbox has that all included out of the box.

Three of its facilities I do not use, so it seems this basic and simple system is still too complicated and advanced for me:

Although Fluxbox can be seen as a replacement for other desktop environments (DE), in fact it isn’t a desktop, not in the sense that you could put files or documents on it – which I never do; nor any program launchers – which in the presence of a flexible menu system I do not need.

You can however specify a photograph file as the desktop background.

Installing Fluxbox on Debian

Install no desktop

I used Debian, but the basis can probably be any Linux distribution, like Alpine Linux, Arch Linux, Ubuntu, etc. In fact, many instructions I found were for Arch Linux, but most worked also for Debian.

So I installed a normal Debian ISO from a memory stick, and at the point where you can select one or more desktop environments (Gnome, KDE, Mate etc.), I selected none! That shortens up the installation process a lot, because a lot of application programs, like Open Office and a browser, will not be installed.

After rebooting when so instructed, having the memory stick removed, the computer should boot to a non-graphical login prompt. Log in with the prepared user name and password.

Keyboard and touchpad

Two preparations to make life easier:
sudo nano /etc/default/keyboard
Make sure it has
XKBVARIANT="intl"
so you will be able to type international letters (á, ç, ß and some such) using deadkey. That is, if you need that and want that.

Then do, for the touchpad if your computer has one:
sudo nano /etc/X11/xorg.conf.d/99-touchpad.conf
and put this there if it isn’t already:

Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Driver "libinput"
    Option "Tapping" "on"
    Option "ScrollMethod" "edge"
    #Option "NaturalScrolling" "true"
EndSection

As a result, you will be able to tap the touchpad to emulate a click, instead of having the press the left touchpad button. ¿Why isn’t that the default?, I wonder.
It also sets scrolling to work at the right border of the touchpad, not with two fingers (twofinger, the default) in the middle. Just a personal preference. You can choose your own.

NaturalScrolling is like swiping on a tablet or smartphone. I prefer to move the window, not the text.

See also my article Comfortable command line.

Installing Fluxbox and Xinit

A crucial moment: we are going to install Fluxbox now.
sudo apt update
sudo apt install fluxbox
sudo apt install xinit
cp -p /etc/X11/xinit/xinitrc ~/.xinitrc

With the command startx you can now already activate Fluxbox! Hurray.

For initial testing it is good to install a terminal emulation, like lxterminal or alacritty, and a browser.

One step further (assuming bash is your shell of preference) put the following at the bottom of ~/.bashrc (the symbol ~ stands for your home directory):

if test -z "$DISPLAY" && test -n "$XDG_VTNR" && test "$XDG_VTNR" -eq 1
then
# exec startx
  startx
fi

This causes Fluxbox to start automatically after the non-graphical server-like console login. If you are satisfied with that, in fact you are already done at this point!

(You don’t have to remove the above code, if you add the display manager.)

Display manager

Display manager is a strange term, in my opinion. What in fact is meant by it, is a graphical login program. Several exist. I chose lightdm. After installation (sudo apt install lightdm) it works right away: the system boots into it, and after you enter user and password, Fluxbox starts.

If in /etc/lightdm/lightdm.conf you comment out:
greeter-hide-users=false
, the default administrative user will be pre-filled, and all you need to enter is the password.

How is it possible that this works immediately, even though this was a non-graphical Debian install? The answer is in the intricacies of systemd. When I do an
ls -ld `locate default.target | grep -v timeshift`
one of the things I see, regardless of whether a display manager has already been installed or not, is this:
/usr/lib/systemd/system/default.target -> graphical.target
But the command
file /etc/systemd/system/display-manager.service
only shows a result after a display manager has been installed:
/etc/systemd/system/display-manager.service: \
    symbolic link to /lib/systemd/system/lightdm.service

(Note that /lib is a symbolic link to usr/lib on this system.)

This means that before the display manager is there, the system already wants to run in full graphical mode, but it can’t, because of the absence of a desktop environment including a display manager. Prediction: installing a display manager will make it work without any further measures. And indeed it does!

Configuring Fluxbox

Directory

All the configuration files for Fluxbox are in the directory ~/.fluxbox, although there can be references to other locations. That’s .fluxbox with a dot, so the directory is normally hidden, but it can be seen with the ls option -a.

I publish a few of my own config files here in the web tree, in a directory with that same name .fluxbox . Although of course your config wishes may be very different from mine, you may want to examine and try mine as a starting point for your own experimentation, to reach your optimal way to use Fluxbox.

An impression of my Fluxbox screen Impression of Fluxbox Desktop screen is here (click to enlarge). This also shows how light this system is: I had to do quite some clicking to and fro between the processes, in order to make the Fluxbox process appear in the CPU usage sorted top list at all.

init

Some notable changes I made in the init file, in comparison with the defaults – which will only become visible in the file, once you have made a change using one of the Fluxbox submenus – I’ll describe below.

session.screen0.toolbar.tools

The default for this is:
prevworkspace, workspacename, nextworkspace, clock, prevwindow, nextwindow, iconbar, systemtray

I don’t like that. I don’t do workspaces, I want the clock at the right of the horizontal taskbar, and in addition to being able to call up the menu by right-clicking in the desktop (which is unreachable when one or more windows are maximised), I want a start button, like in Windows 95 or 98 etc., and like in Linux mint, in the left end of the task bar. In addition, I arranged that Ctrl-Escape, Windows-m, Windows-space also invoke the menu.

So the setting session.screen0.toolbar.tools in file ~/.fluxbox/init in my configuration of Fluxbox is:
rootmenu, iconbar, systemtray, clock

session.screen0.iconbar.alignment

Also, session.screen0.iconbar.alignment is not Relative for me, but Left. Relative means that the space in the iconbar is divided equally between active tasks. I want each to take just enough space so it is recognisable, and they should be left aligned.

session.screen0.fullMaximization

I have this set to false, not true, so maximising a window leaves room for the taskbar, and does not hide it.

session.screen0.iconbar.mode

The default value for this is {static groups} (minimized=no). It means a minimised window and task disappears from the desktop (of course, that’s the purpose of minimising), but it also disappears from the taskbar, so it is nowhere to be seen anymore at all. Only Alt-Tab can make it reappear. I find that confusing.

Therefore, the value in my ~/.fluxbox/init is: AllWindows, which means that all tasks, minimised or not, can always be seen in the taskbar.

session.screen0.focusModel

I have ClickFocus here, although MouseFocus also has its charm.

overlay

The ~/.fluxbox/overlay file is useful to record small deviations from an existing Fluxbox style. Of course my preferences will be very different from yours, but my file may be useful to see how you can change things, not to what.

startup, menu, keys

I publish those too, without any comments, for your inspiration. The menu file was slightly edited for privacy reasons.