Updated: November 9, 2019
Traditions are there so they can be maintained, nourished, upkept, repeated. Most notably, any time there's a new major CentOS release, I happily jump on the opportunity to test the distro and also provide you with a tutorial that shows all the steps you need to undertake to turn a fairly boring server distro into a fully productive, fun desktop setup.
We've done this with CentOS 6 and CentOS 7 (and there are sequels, too), and it's time we do the same with CentOS 8. So let me show you all the bits and pieces you require to enjoy stability with the latest and greatest software. Over the years, this effort has become easier, so it will be interesting to see whether CentOS 8 makes it even simpler than the previous versions. Let's begin.
1. Additional repositories
CentOS does not have lots of the cool, modern desktop stuff that people expect in its standard repos. So you will need to manually configure these extra channels. The two recommended sources are the EPEL and RPM Fusion ones (both free and non-free).
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
sudo dnf install https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
2. Additional software
Once you have the repos configured, you may want the extra stuff. Some of the stuff is available in standard channels, some comes from EPEL and RPM Fusion. My list includes GIMP, LibreOffice, Steam, VLC. Please note the last item needs separate treatment.
sudo dnf install gimp libreoffice-writer steam
LibreOffice does not (at the moment of writing) come as a meta package, so you will need to install components separately. You can't just specify dnf install libreoffice, you need lines like dnf install libreoffice-writer or dnf install libreoffice-impress.
3. VLC fix
If you try to install VLC, you might see this error:
sudo dnf install vlc
Last metadata expiration check: 0:13:06 ago on Mon 30 Sep 2019 03:29:48 PM.
Problem: conflicting requests
- nothing provides libjack.so.0()(64bit) needed by vlc-1:3.0.8-20.el8.x86_64
- nothing provides libfluidsynth.so.1()(64bit) needed by vlc-1:3.0.8-20.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
The fix is to enable the EPEL testing and RPM Fusion testing repos. This error should go away on its own as packages are promoted from the testing repo to the standard one. Indeed, by the time you read the article, this may no longer be relevant.
Go to /etc/yum.repos.d/, and then open epel-testing.repo and rpmfusion-free-updates-testing.repo files in a text editor, with sudo or root privileges, of course. Then, for each, edit the line that reads enabled=0 to enabled=1. Something like this:
name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch
Then, you can install VLC normally:
sudo dnf install vlc
4. Chrome and Skype
These two applications are not available in the repositories. Go to the official website and download the RPM files. Then, you can install them manually using dnf. This will also configure the necessary repositories for future updates in the background.
sudo dnf install "downloaded chrome or skype rpm"
5. Gnome Shell extension fix
By the time you read this article, you might be super-lucky, and everything works perfectly. But then, you just might encounter difficulties getting extensions enabled. I did face this issue when testing CentOS 8, and I had to first update Firefox, because it thought the Gnome Shell extension was corrupt. Then I had to manually install the chrome-gnome-shell RPM package from the CentOS 7 repo before I could interact with extensions using the browser. An essential part in the Gnome desktop transformation. All of this is explained in rich detail in my dedicated tutorial on this subject.
6. Gnome Tweaks & customization
Once this step is done, you can now prettify your CentOS box. The first step would be to install Gnome Tweak Tool, also known as Gnome Tweaks, which lets you make essential changes like fonts, window buttons, and yes, extensions. Once you have it running, you can adjust the look & feel of your distro.
sudo dnf install gnome-tweaks
This neat extension lets you interface your Android phone with your laptop. I've reviewed it, and I found it quite useful, and it feels kind of cool to have this sort of connectivity on a would-be spartan server distro. In general, it is based on KDE Connect. Just grab it from extensions.gnome.org.
8. Some additional Gnome extensions
However, you don't need to settle with just Dash to Panel and GSConnect, albeit they are awesome. There are quite a few really cool, practical extensions available for the Gnome desktop, and I've reviewed some of them in a dedicated article, so you might as well take a look.
9. Python fix
As part of the chrome-gnome-shell experiment, I noticed that there's no default /usr/bin/python path, which means that applications that explicitly rely on it to be present in the system will not work, e.g.:
bash: ./chrome-gnome-shell: /usr/bin/python: bad interpreter: No such file or directory
The solution is to create a symbolic link to either python2 or python3:
sudo ln -s /usr/bin/python3 /usr/bin/python
There we go. I decided to keep this relatively short and sweet. Of course, we can diverge and talk about all and every piece of software, but I believe the set above is pretty representative. It gives the ordinary users access to modern, practical stuff, improved aesthetics and ergonomics, and there are some practical tweaks, too.
If you like this, and you'd like to read more, feel free to ping me with your specific woes and issues, and I'll see if I can get them fixed or working, and then I will follow up with additional CentOS guides. Meanwhile, you have a recipe for a solid, robust, stable desktop, with great programs that address all them modern needs. Don't forget that CentOS 8 will be supported for about a decade, so if you need the peace of mind, this is a good starting point.