openSUSE and IceWM adventures - minimalist computing

IceWM was an accidental discovery made during my quest for a minimal openSUSE system. I had previously experimented with Xfce and Mate and both were not to my liking, at least on openSUSE. I chose the Generic Desktop option in the installer expecting a minimal, barely usable system. I assumed I would build upon it just like I do on Arch. What I got was a minimal IceWM system. However, it was totally usable and more. It blew my mind.

What is IceWM

IceWM is a Window Manager (WM) for the X Window System:

The goal of IceWM is speed, simplicity, and not getting in the user’s way. It comes with a taskbar with pager, global and per-window keybindings and a dynamic menu system.

A WM is the foundation on which a Desktop Environment (DE) stands. KDE Plasma 5 DE, for example, uses KWin while GNOME uses Mutter as default WMs. However, these can be swapped out for other WMs.

A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface.

Why not a Desktop Environment?

Desktop Environments (DE) are great for people who want a fully-configured, working system right after install. I had been using KDE Plasma 5 for a very long time. I would run it on old hardware too without much trouble. I have used Xfce too.

There are a few reasons for not wanting to use a DE:

  • Complexity
    Desktop Environments are very complex systems. Complexity means too many moving parts. Too many moving parts means huge potential for bugs and breakages. Especially important if one intends to use a rolling release GNU Linux distribution.
  • Black Box
    Presented with a computer running GNOME or KDE Plasma 5, a normal user may not even be able to tell what lies beneath the GUI glitz. Is this GNOME abstracting away a GNU Linux or a FreeBSD running on x86 or x86_64 or ARM? A normal user does not know and does not care as long as their computing needs are met. For a student, this may not be the ideal situation.
  • Control
    Since a good DE abstracts away the underlying system software, the hardware and does almost everything on behalf of the user, there is a loss of control for the power user.

How to get IceWM during openSUSE installation

Very simple. Choose the Generic Desktop option during installation:

IceWM also powers the YaST Installer (image above). So, it is quite important.

Setting up the workstation

VirtualBox Extension Pack

Since no polkit exists in base IceWM install, elevation prompt does not work and error occurs:

> sudo VBoxManage extpack install --replace '<Path_To_Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack'

which results in

--accept-license=33d7284dc4a0ece381196fda3cfe2ed0e1e8e7ed7f27b9a9ebc4ee22e24bd23c
to the VBoxManage command line.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully installed "Oracle VM VirtualBox Extension Pack".

Screenshot application

Tried gnome-screenshot

> sudo zypper in gnome-screenshot

Does not list in IceWM menu. Can be launched from command line, takes screenshot, but no control whatsoever:

> gnome-screenshot
** Message: 01:38:15.430: Unable to use GNOME Shell's builtin screenshot interface, resorting to fallback X11.

Tried flameshot

> sudo zypper in flameshot

Works flawlessly. Has all the desired bells and whistles.

Networking

Wicked did not work properly with my Broadcom BCM43228 wifi card. Installed NetworkManager.

> sudo zypper in NetworkManager

The nmcli works flawlessly. In any case, I use NetworkManager in Arch also. So, it is easy to work with.

Audio

Followed openSUSE documentation and tried to install PulseAudio:

> sudo zypper in pulseaudio pavucontrol paprefs padevchooser paman

The last two, padevchooser and pamando do not exist.

> sudo zypper in pulseaudio pavucontrol paprefs

Everything works. pavucontrol lets me control everything.

Archiver

Downloaded and tried to run peazip

> ./peazip
./peazip: error while loading shared libraries: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

Who provides libgthread-2.0.so.0?

> zypper se --provides libgthread-2.0.so.0
Loading repository data...
Reading installed packages...

S | Name                   | Summary                                        | Type
--+------------------------+------------------------------------------------+--------
  | libgthread-2_0-0       | Portable API from glib wrapping system threads | package
  | libgthread-2_0-0-32bit | Portable API from glib wrapping system threads | package

Installed libgthread-2.0.so.0

> sudo zypper in libgthread-2_0-0

Remove Display Manager

Got rid of lightdm and xdm. The sequence is important. First get rid of lightdm and all its dependencies:

> sudo zypper rm --clean-deps lightdm

Then, get rid of xdm. Running --clean-deps for xdm will nuke the X Window System. So, no --clean-deps:

> sudo zypper rm xdm