E16 and icewm light-weight desktops for Rocky 8.6

(About e16: It is somewhat old-fashioned and tricky to set up, but is light
and very reliable. Kim Woelders has carefully maintained it for the past
decade, and continues to do so.)

Testing Hardware

The test PC was a HP Compaq DC5800 which has all-Intel device
controllers, so that there were no graphics card or SATA disk controller

Software sources

The applicable source for the e16 desktop is the e16-1.0.25-1.fc36.src.rpm
file downloadable from Download.

The EPEL repository contains most of the packages required, in addition to
a desktop environment (DE), to build a functional installation.

Unlike with an XFCE DE, which can be directly installed from the EPEL
repository (sudo yum group install XFCE), there is no available group
definition for the MATE DE, but fortunately, most if not all of the component
packages are available. This fact greatly simplified the construction of the
installation. Other than with e16, the only other component requiring a
2-step build (rpm -ivh --nomd5 package.src.rpm, rpmbuild -bb package.spec)
was lxterminal. (Terminal emulators from other environments usually worked
but were accompanied by warning messages about missing libraries).

Initial attempts to rebuild lxterminal (and some other packages) were
conducted on fc29 src.rpm’s, but python-related problems were encountered
because direct references to /usr/bin/python were not acceptable.
To overcome this difficulty with lxterminal, fc31 src.rpm’s were used and the
following 2 preparatory steps were necessary:

 -sudo yum install python2
 -sudo alternatives --set python /usr/bin/python2

The 2 source rpm’s from https://archives.fedoraproject.org, Fedora 31
Releases required for the lxterminal rebuild are:
-vte-0.28.2-29.fc31.src.rpm, for the main lxterminal dependency
-lxterminal-0.3.2-4.D20190717gitcb2992e.fc31.src.rpm, for lxterminal itself


Signing Key Collection

From https://archives.fedoraproject.org, Fedora 36 Releases,
the package fedora-gpg-keys-36-1.noarch.rpm, when installed, loads a
large number of fedora-version keys into /etc/pki/rpm-gpg. From there,
the Fedora 31 and 36 required-keys can be imported into the rpm database:

sudo rpm --import RPM-GPG-KEY-fedora-31-x86_64 
sudo rpm --import RPM-GPG-KEY-fedora-36-x86_64

When the EPEL repo is activated, sudo yum install epel-release,
the EPEL public key, RPM-GPG-KEY-EPEL-8, is placed in /etc/pki/rpm-gpg.

The RPM-GPG-KEY-rockyofficial public key is in /etc/pki/rpm-gpg as
part of the Rocky8.6 installation.


The Initial Hard Drive Installation is routine. When installing the Rocky8.6-
minimal .iso, the Server option with basic Development Tools is selected.

The majority of software installs are from the command line without a GUI,
and then the GUI is activated for the DE setup procedure.

-sudo yum group install ‘RPM Development Tools’, installs 68 packages.
-sudo yum group install Fonts, installs 41 packages.
-sudo yum group install base-x, installs 94 packages.
-sudo yum epel-release, to activate the EPEL repository

From a USB stick containing the 3 .src rpm’s and fedora-gpg-keys-36-1.noarch.rpm, as mentioned above, sudo mount /dev/sdb1 /mnt,
upload them and localinstall fedora-gpg-keys-36-1.noarch.rpm

rpm --import the keys as mentioned in the Signing Key Collection section

-sudo dnf config-manager  --set-enabled powertools

activates Rocky powertools repo.

sudo yum install lightdm

, installs 37 packages

-yum list rpmdevtools

to confirm that it is installed


to create /home/user/rpmbuild directory

-sudo yum install python2
-sudo alternatives --set python /usr/bin/python2

Installing Specific DE Packages

The 3 packages that are to be rebuilt from .src.rpm’s each require
a group of dependencies that would be shown as missing after the
rpmbuild -bb package.spec command. To avoid this delay, the
dependencies are listed for each, to allow pre-installation and
timely completion. After build completion, the x86_64.rpm’s are
locally installed, omitting the debug packages.

e16 rebuild
sudo yum install freetype-devel imlib2-devel cpp gcc
rpm -ivh --nomd5 e16-1.0.25-1.fc36.src.rpm

-from /home/user/rpmbuild/SPECS, rpmbuild -bb e16.spec

vte rebuild

sudo yum install gobject-introspection-devel intltool gtk2-devel
 libXt-devel ncurses-devel pango-devel pygtk2-devel python2-devel
rpm -ivh --nomd5 vte-0.28.2-29.fc31.src.rpm

from /home/user/rpmbuild/SPECS, rpmbuild -bb vte.spec

lxterminal rebuild
sudo yum install libxslt desktop-file-utils docboook-style-xsl docbook-utils git
rpm -ivh --nomd5 lxterminal-0.3.2-4.D20190717gitcb2992e.fc31.src.rpm

-from /home/user/rpmbuild/SPECS, rpmbuild -bb lxterminal.spec

remaining installs

sudo yum install dbus-x11
sudo yum install pluma
sudo yum install caja
sudo yum install mate-polkit
sudo yum install gparted
sudo yum install icewm

activate GUI

sudo systemctl set-default graphical.target
sudo systemctl enable lightdm
sudo reboot

DE Setup Procedure

Once the GUI has been activated, the e16 DE works sufficiently well to
support file manipulations to tailor/optimize the environment for regular
use. The main drawback at this stage is that shutdown/reboot are not
available from the menu, but are easily invoked from an lxterminal command
line, sudo shutdown -h 0 or sudo reboot.

(The e16 application menu pops up after a left-mouse-button click anywhere
on the screen.
The e16 maintenance menu pops up after a right-mouse-button click
anywhere on the screen. A regular use of the maintenance menu is the
regenerate menus option. e16 does not update the application menu
automatically after installation of additional software; the regenerate
menus option does this quickly.)

The following steps are applicable to both e16 and icewm:

Eliminate extraneous sessions in /usr/share/xsessions

After the installation procedure, the /usr/share/xsessions
directory contains the following:

-rw-r--r-- 1 user user  787 Oct 17 09:33 e16-session.desktop
-rw-r--r-- 1 user user  984 Oct 17 09:33 e16-gnome2-session.desktop
-rw-r--r-- 1 user user  211 Oct 17 09:33 e16-gnome3-session.desktop
-rw-r--r-- 1 user user  969 Oct 17 09:33 e16-kde-session.desktop
-rw-r--r-- 1 user user 3094 Oct  3 00:48 icewm-session.desktop
-rw-r--r-- 1 user user  130 Apr 11  2021 xinit-compat.desktop

The e16-gnome2, e16-gnome3 and e16-kde entries are not required
and should be deleted.

Polkit Authentication

The last 9 lines of the
/etc/xdg/autostart/polkit-mate-authentication-agent-1.desktop file are as

Comment[zh_CN]=MATE 桌面的 PolicyKit 认证代理
Comment[zh_TW]=MATE 桌面環境的 PolicyKit 驗證代理程式
Comment=PolicyKit Authentication Agent for the MATE Desktop

The original second-to-last line was OnlyShowIn=MATE;
The Trinity DE (TDE) is not used; therefore, the effect of the change is
to make the Polkit Authentication active for any DE in actual use.

The Exec statement is copy/pasted or entered into 2 startup-related files:

i) /usr/share/e16/misc/starte16, as follows:


test -z "$s" && s=$0

case "$s" in
	test -x /usr/bin/gconftool-2 && gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string e16
	exec gnome-session
	export KDEWM
	exec startkde
	exec /usr/libexec/polkit-mate-authentication-agent-1 &
	exec /usr/bin/e16 -w ${SIZE:-800x600}
	exec /usr/libexec/polkit-mate-authentication-agent-1 &
	exec /usr/bin/e16

ii) create /usr/share/icewm/startup as follows:


# polkit authentication

  /usr/libexec/polkit-mate-authentication-agent-1 &

make the file executable: sudo chmod 755 startup

Activate Shutdown/Reboot from the menu

i) Additions to /etc/sudoers file.

(To edit the sudoers file,   sudo chmod 640 sudoers, to enable
  standard pluma access to the file.   After editing, 
  sudo chmod 440 sudoers, to restore the original setting.
  If a syntax error is made during editing,  logging in as
  root is required to re-edit the file and correct the problem.)

 The Commands section of the sudoers file is as follows:
## The COMMANDS section may have other options added to it.
## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.

## Allows people in group wheel to run all commands
%wheel	ALL=(ALL)	ALL

## Same thing without a password

## Allows members of group wheel to execute shutdown/reboot/poweroff without a password
%wheel   ALL=(ALL)  NOPASSWD:  /sbin/shutdown -h 0
%wheel   ALL=(ALL)  NOPASSWD:  /sbin/reboot
%wheel   ALL=(ALL)  NOPASSWD:  /sbin/poweroff

## Allows members of the users group to mount and unmount the 
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

The commands for executing shutdown/reboot/poweroff without a password
are an insertion to the original file.

ii) For e16 only, alterations to the /home/user/.e16/e_config–0.0.cfg file.

The file contains a large number of setup parameters;  what is shown here
is only the small number that should be modified:  (1 means on/active, 2
means off)

desktops.edge_flip_mode = 0 turn off (cosmetic)

misc.session.enable_script = 1                                          turn on
misc.session.script = $EROOT/scripts/session.sh
misc.session.enable_logout_dialog = 1
misc.session.enable_reboot_halt = 1                                 turn on
misc.session.cmd_reboot = sudo /sbin/reboot                   enter command
misc.session.cmd_halt = sudo /sbin/shutdown -h 0           enter command 
tooltips.enable = 0                          turn off  (cosmetic)

For e16 only, enlarging menu text size

The default menu text size is quite small, so the following are the steps
to enlarge it.

-from /usr/share/e16/themes/winter, copy the fonts.theme.cfg file
into /home/user/.e16, rename it to fonts.cfg.
-edit the fonts.cfg file, change the font-menu value from “normal/7“
to “normal/12“ or larger.
-on reboot, the menu text size is enlarged.

caja file manager handling of USB sticks

-when a USB stick is inserted into a port, caja detects the presence of the
device but doesn’t automount it, and it doesn’t have a mount command
-mounting is done by quickly opening and closing the device
-when a USB stick is to be unmounted, caja has an eject command.

Len E.

@LenE Have you considered writing this procedure up officially for Rocky Linux documentation? It would fit nicely into the “Desktop” category here

Do these desktops work with Wayland?

Hi Gerry: As with the LXDE installation, I installed xorg-X11-server-Xwayland.
I didn’t notice any operational difference, but nothing was broken with the addition.
The short answer to your question: I don’t know.

Hi Steven: I appreciate your interest in my providing “official” Rocky documentation,
but I’m quite new to working with Rocky, and not really qualified to do that.
Two recent small incidents illustrate my lack of depth with Rocky:
i) Gerry’s latest question and my vague answer to it.
ii) In perusing the Documentation category, I found that I was totally unaware of the
Standard package group which is obviously very useful in constructing proper
desktop environments.

Len E.

Xwayland is an X server and a Wayland client. It plays the role of a proxy between legacy X clients which do not support the Wayland protocols and the Wayland server.

If the DE runs on X11 session, then Xwayland (xorg-X11-server-Xwayland) is not used and hence no difference.
If the DE runs on Wayland, then legacy X client programs cannot run at all, if you don’t have Xwayland.

You can start Gnome in both Wayland and X11 modes*. Then you can look what processes are running.
Similarly, you can start E16 session and check which server processes you get.

*No, I have no idea how Gnome does it.

I think Xwayland is a compatibility wrapper to cope with things that can’t talk to Wayland direct, which tend to be older applications. Some defaults are changing, for example SDL2 are planning to have Wayland as the default.

(Two situations in the past which Kim Woelders guided me

i) After installation of htop process viewer (sudo yum install htop, and menu
regeneration), htop does not work from the normal System sub-menu.

It needs to be added to the User Application List, the first/top entry in the
main menu as follows:

-in directory /home/user/.e16/menus, edit the user_apps menu, add the
following line at the end of the file:
“Htop” NULL exec “xterm -geometry 120x60 htop"

(NB – make sure xterm is installed).
-regenerate menus

When htop is invoked from the User Application List, the text size of the
screen output is very small. Move the cursor near the top edge of the htop
window, press the Ctrl key and right-click the mouse. A pop-up menu gives
the choices of small, medium, large or huge text size. Select huge, and the
screen detail will be very legible.

(Further to the previous 2 entries on this post, the htop output on the test
machine showed no entries related to xorg-x11-server-Xwayland).

ii) Normally, at the bottom right corner of the screen, e16 has an Iconbox for
application windows which have been minimized, and from which
applications can be restored to the screen.

  Sometimes the iconbox disappears.   From the desktop sub-menu of the
  maintenance (Settings) menu, there is a Create new Iconbox option.

Len E.