CentOS 8 with IceWM Desktop Environment. Do you need CentOS 8 with IceWM as desktop Operating System? Most likely not. Especially if you want it to work smoothly without any worries and troubles. However, if you enjoy playing with new desktop environments, you might find it fun.
My reasons were as follows:
- I wanted to use the same Linux distribution for server and desktop. Just to minimize possible surprises during the deployment.
- I wanted to know what is going on in the RPM-based part of Linux world. The only way to achieve this is to use such distribution every day.
- I was tired of problems with the Virtual Box guest additions in CentOS 7 (yes , I run it all as a virtual machine), especially after the 3.10 kernel updates. It was time to move on.
- I didn’t want to use Gnome 3, because it’s slow and ugly (however it’s fully functional!). And there were no other DEs in CentOS 8 repositories at that time.
So, I tried CentOS 8 with IceWM (installed it from source) and it worked. IceWM is small, very fast, ascetic, and in some ways quite intuitive. There were some problems with the clipboard (in xTerm and with VBox shared clipboard) and with language switching, but I figured it out and I think that I would probably continue to use it. Below are some notes on how I installed it and resolved the issues.
Basic installation of CentOS 8
I took the NetInstall x86_64 image of CentOS-8-x86_64-1905-boot.iso. For some reason, it didn’t choose the package mirror automatically. I had to enter it manually. Quite a funny bug, the thread is here.
Gnome desktop
After the basic installation, I just installed the X server and Gnome 3 (workstation). I didn’t want to use Gnome, I just wanted to test something that 100% works.
# dnf update
# dnf upgrade
# dnf groupinstall workstation
Btw, bye-bye yum, and hello dnf!
Virtualbox Guest Additions
I use CentOS 8 in a virtual machine on Windows, so it was important for me to make VirtualBox Guest Additions work:
# dnf install kernel-devel gcc make perl elfutils-libelf-devel
# cd /run/media/aleonov/VBox_GAs_6.0.12
# ./VBoxLinuxAdditions.run
After that, I’ve got something usable:
How to fix VBoxLinuxAdditions on CentOS8
If VBoxLinuxAdditions stop working on CentOS8, the most common reasons are:
- You have installed a new version of VirtualBox
- You have installed and used a new version of Linux kernel
To fix this, I delete the installed VBoxLinuxAdditions from
ls /opt/VBoxGuestAdditions-6.0.20/
bin init installer lib LICENSE other routines.sh sbin src uninstall.sh
using uninstall.sh
script
If auto-mount of CD with VBoxLinuxAdditions does not work, I get the right device name using blkid
by its label. Most likely it will be /dev/sr0. Then I install a new version of VBoxLinuxAdditions:
# mkdir /media/iso
# mount /dev/sr0 /media/iso/
# cd /media/iso/
# ./VBoxLinuxAdditions.run
How to install the latest version of Python3
Here’s how you can install the latest version of Python3 from source on CentOS8 (get the versions at https://www.python.org/ftp/python/):
$ sudo dnf -y groupinstall "Development Tools"
$ sudo dnf -y install openssl-devel bzip2-devel libffi-devel xz-devel wget
$ wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
$ tar xvf Python-3.8.3.tgz
$ cd Python-3.8*/
$ ./configure --enable-optimizations
$ sudo make altinstall
$ ln -s /usr/local/bin/pip3.8 /usr/bin/pip3.8
$ ln -s /usr/local/bin/python3.8 /usr/bin/python3.8
On “Failed to synchronize cache for repo ‘AppStream’” error:
$ sudo dnf clean all
$ sudo rm -rf /var/cache/dnf
$ sudo dnf upgrade --releasever=8
In a corporate environment, you may need to use the --no-check-certificate
paramater for wget (if there is a legit MiTM made by NGFW). You may also need to run pip
with --trusted-host
parameter, for example like this:
pip3.8 --trusted-host pypi.org --trusted-host files.pythonhosted.org install <module>
pip3.8 --trusted-host pypi.org --trusted-host files.pythonhosted.org install --upgrade <module>
pip3.8 --trusted-host pypi.org --trusted-host files.pythonhosted.org install -r requirements.txt
Additional repositories:
EPEL
Just install this rpm package from fedoraproject:
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
If you have problems with certificates, you can disable the verification as follows:
# vi /etc/dnf/dnf.conf #Add a new line:
sslverify=0
PowerTools
On CentOS 8 it is recommended to enable the PowerTools repository since EPEL packages may depend on packages from it:
dnf config-manager --set-enabled PowerTools
IceWM
The main thing that upset me in CentOS8 was the lack of alternative desktop environments in the repositories, even in EPEL. There was only a slooow Gnome 3 with terrible junk animations. ? So, I decided to try IceWM, because of intuitive configs and straightforward installation procedure from the source code.
NB: the package for IceWM is available in the CentOS 8 repository, but the dependencies are broken:
# dnf install icewm
Last metadata expiration check: 2:48:03 ago on Sat 28 Sep 2019 08:37:11 PM MSK.
Error:
Problem: conflicting requests
- nothing provides gnome-icon-theme needed by icewm-1.6.1-4.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
That’s why I decided to install IceWM from sources.
- A description how to do this is available on the main site https://ice-wm.org.
- All releases are available on github. Url with sources.
- I took all necessary dependencies from the script here and added also
lzip
# dnf install lzip asciidoc alsa-lib-devel autoconf automake cmake fontconfig-devel fribidi-devel gcc-c++ gdk-pixbuf2-devel gdk-pixbuf2-xlib-devel librsvg2-devel gettext gettext-devel git glib2-devel libSM-devel libX11-devel libXext-devel libXft-devel libXinerama-devel libXpm-devel libXrandr-devel libXrender-devel libXcomposite-devel libXdamage-devel libXfixes-devel libjpeg-turbo-devel libpng-devel libtool make perl-Pod-Html xterm xdg-utils libao-devel libsndfile-devel
Don’t forget to add the PowerTools repo (above), or you will face problems with the packages gdk-pixbuf2-xlib-devel
, libao-devel
and libsndfile-devel
.
I decided to install IceWM in my home directory to make it easier to manage:
$ curl -k -L -s https://github.com/ice-wm/icewm/releases/download/1.6.2/icewm-1.6.2.tar.lz | tar xvpf - --lzip
$ cd icewm-1.6.2
$ ./configure --prefix=/usr
$ make
$ mkdir /home/aleonov/ice-wm/
$ make DESTDIR="/home/aleonov/ice-wm/" install
Installed:
[aleonov@localhost ice-wm]$ find | grep "/bin"
./usr/bin
./usr/bin/icewm
./usr/bin/icewm-session
./usr/bin/icesh
./usr/bin/icehelp
./usr/bin/icewmhint
./usr/bin/icewmbg
./usr/bin/icesound
./usr/bin/icewm-menu-fdo
./usr/bin/icewm-set-gnomewm
./usr/bin/icewm-menu-xrandr
Upd 06.05.2020. How to update the IceWM (to 1.6.5 or newer version)?
In May IceWM 1.6.5 released, so installed it in ice-wm-installation-1.6.5 directory:
$ icewm -V
IceWM 1.6.2, Copyright 1997-2003 Marko Macek, 2001 Mathias Hasselmann.
$ curl -k -L -s https://github.com/ice-wm/icewm/releases/download/1.6.5/icewm-1.6.5.tar.lz | tar xvpf - --lzip
$ cd icewm-1.6.5
$ ./configure --prefix=/usr
$ make
$ mkdir /home/aleonov/ice-wm-installation-1.6.5/
$ make DESTDIR="/home/aleonov/ice-wm-installation-1.6.5/" install
And made the ice-wm directory a link to fresh binaries. So I can easily switch between the different versions:
$ mv ice-wm ice-wm-installation-1.6.2
$ ln -s ice-wm-installation-1.6.5 ice-wm
Updated well:
$ icewm -V
IceWM 1.6.5, Copyright 1997-2003 Marko Macek, 2001 Mathias Hasselmann.
Make it start with startx
To start IceWM create .xinitrc. Upd 06.05.2020. I decided to keep .xinitrc minimal, and use startup script:
$ cat .xinitrc
#-----------------------------------------------------------
# .xinitrc
#-----------------------------------------------------------
PATH="$PATH:$HOME/ice-wm/usr/bin/:/media/data/commands/"
xrdb -merge ~/.Xresources
# run profile to set $PATH and other env vars correctly
. $HOME/.bash_profile
# start icewm, and run xterm if it crashes (just to be safe)
exec icewm-session
xterm
#-----------------------------------------------------------
How to start a program on startup in IceWM
In startup script you can configure the launch of applications, for example VirtualBox client with shared clipboard support:
$ cat .icewm/startup
#!/bin/bash
# setup background
xsetroot -solid '#056'
# setup mouse acceleration
xset m 7 2
# VBoxClient
VBoxClient --clipboard
Note that .icewm/startup should be executable:
$ chmod +x .icewm/startup
Theme installation
The default IceWM theme looks pretty ugly, so I downloaded a new one here and installed it:
mkdir ~/.icewm/themes/
mv Downloads/Araita.tar.bz2 .icewm/themes/
tar xjf Araita.tar.bz2
It looks like this:
Clipboard
If Virtualbox shared clipboard doesn’t work, make sure that VBoxClient with the key clipboard is running:
/usr/bin/VBoxClient --clipboard
Menu
You can easily create a launch menu in IceWM by creating such file (syntax):
$ cat ~/.icewm/menu
prog pycharm pycharm pycharm
prog term term xterm
prog gedit gedit gedit
prog firefox firefox firefox
First value is name, the second is the name of icon and the third is the command. It may be a console command:
xterm -hold -e 'cd ~/mydir/; ./my_script.sh'
Keys
Similarly you can add key strokes in IceWM (syntax). For example, I created key strokes to check different input languages and start Xterm terminal:
$ cat ~/.icewm/keys
key "Alt+Shift+1" setxkbmap us
key "Alt+Shift+2" setxkbmap ru
key "Ctrl+t" xterm
Terminal
Copying to clipboard from Xterm terminal will be much more comfortable if you configure it in .Xresources like this:
$ cat .Xresources
XTerm.vt100.geometry: 80x32
XTerm.vt100.faceName: Liberation Mono:size=10:antialias=false
XTerm.vt100.font: 7x13
XTerm*vt100.translations: #override \
Shift Ctrl <Key> C: copy-selection(CLIPBOARD) \n\
Shift Ctrl <Key> V: insert-selection(CLIPBOARD)
That’s all for now. Thanks for your attention!
Hi! My name is Alexander and I am a Vulnerability Management specialist. You can read more about me here. Currently, the best way to follow me is my Telegram channel @avleonovcom. I update it more often than this site. If you haven’t used Telegram yet, give it a try. It’s great. You can discuss my posts or ask questions at @avleonovchat.
А всех русскоязычных я приглашаю в ещё один телеграмм канал @avleonovrus, первым делом теперь пишу туда.
Oh! Where is my 2001?! 🙂
Pingback: VirtualBox GuestAdditions for Linux Guest OS | Alexander V. Leonov