How to tame and pimp Xfce on CentOS 7

Updated: September 14, 2016

Hello children of the Internet! Recently, I've taught you how to setup Xfce on CentOS 7, and then slowly transform the system into a near-perfect production combo. However, in the original article, I skipped on most of the Xfce tweaks and changes. You only ate the cake, but you knew nothing of the recipe.

Today, I would like to teach you about all the little steps required to achieve a beautiful, modern and elegant Xfce desktop on CentOS 7. Should your appetite kill the curiosity cat, then you might want to hang around and read some more. This fine little guide covers all my troubles with the Xfce setup, and then how I managed to overcome every single one, and finally enjoy a supreme CentOS 7 desktop. Dr. Distrolove, or: how I stopped worrying and learned to love the Xfce. Which is even more amazing as this is a server distro. Follow me.



That's your step one. You need both Xfce and MATE desktops. This sounds counterintuitive, but without the latter, most of your widgets and applets won't work. You do need to install both frameworks. For whatever reason, these environments are linked.

yum groupinstall xfce "MATE Desktop"

Visual tweaks

The end result of my desktop is as follows:



How did I get there?

Well, let us briefly elaborate then, shall we? I changed the top panel color to match the notification area, as the two were different. I also changed the panel height to 28 px. Going for a slightly larger 36px-wide panel had the negative effect of mismatched icon sizes, low-res icons (even with the Faenza set), and the notification area going all wonky, as some icons would stay fixed at 28 px.

You may not care for this, but I found it quite important, and I spent a little time on the trial and error of getting the dimensions and proportions just right. Try for yourself. You will see that icons change, usually with a sudden size jump rather than a gradual scaling, plus the notification area will look misaligned above 30 px. The icons also have a different look and shape, and for me, the most consistent result was with the aforementioned panel height.

Thick panel 1

Thick panel 2

Thin panel 1

Thin panel 2

You can also hide icons, to make everything even prettier:

Expanded notification area

Some of the icons, like Firefox and Chrome did not have their square equivalents in the MATE Faenza set, for some odd reason, so I used alternative would-be icons to achieve as common look as possible, although Steam is still a black sheep. Then, the choice of applet also dictates the visual layout.

Edit launcher

Panel items

Other visual tweaks

Some additional goodies included:

Trash icon near the notification area; quite handy if you want a clean desktop

Notification area

I manually downloaded several wallpapers, themes and window border decorations, including Greybird and Axiom, which looks quite handsome. The icons were already previously set up while using the Gnome edition. The custom bits and pieces go into the hidden directories ~/.themes and ~/.icons, respectively.

New decorations


Transparent desktop icons text background - just like my Pangolin pimping guide from long ago, the same rules apply. Create a hidden file ~/.gtkrc-2.0, if it does not exist already, and add the following configuration. You will need to log out and log back in to see the effect.

style "xfdesktop-icon-view" {
XfdesktopIconView::label-alpha = 0

fg[NORMAL] = "#ffffff"
fg[SELECTED] = "#ffffff"
fg[ACTIVE] = "#ffffff"

widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"

Transparent icon text

System sounds

Trying tab completion on non-existent paths or commands, hitting Backspace inside the empty search box in the menu, or trying to log out would create very loud, annoying beeps that would piss me off every single time. So I disabled bells system-wide:

xset b off

Whisker menu

Standard Xfce menu out, Whisker in. This is a very neat little menu tool, and you can also use the Super button to invoke it, which is quite rad, and very much Windows 7. This means pretty much instant keyboard-only search. Plus the CentOS icon, too.

Whisker menu

Whisker, super key

PulseAudio tweaks

This is the ugliest, most cumbersome step in the whole process. I will be repeating myself, but this is pretty much word-for-word section from my Xfce review, with some extra stuff added later on. Read, weep and try not to weep a lot.

My problems were many fold. One, you don't really have a mixer, because the graphic frontend, Pulse Audio Volume Control (pavucontrol) is missing. It is not available in the repositories, either the official or unofficial ones, and if you want the mixer, and you do need it, you will have to manually download it from old Fedora repositories. This works, but you won't get any updates or fixes. BTW, this is an official bug. So sad.

Pavucontrol missing

yum install pavucontrol-3.0-1.fc22.x86_64.rpm

Then, it will work, and you can play with volume and whatnot, but it's still crowded, buggy, and completely unsuited for purpose. This thing is so horrible it can completely wean you off Linux, just on its own.

Pavucontrol running

The second problem is that my microphone volume was abysmally low, and I was not able to hear myself on Skype, which is quite critical if you want to talk to people and whatnot. Manually testing and tweaking, I soon learned the problem only affects Skype, or rather PA-enabled applications, and that recording from the command line using the ALSA tools works just fine.

I solved this by using a headset - which took a while getting configured. After that, I was able to enjoy audio, on all levels. But it does leave me with a big sense of unease, as something so trivial can be so crippling to the desktop experience.

Headset disabled, why

It took a reboot for the headset to show as an active device.

Anyhow, what you need to do is manually change the playback, recording and input devices if you want to use anything other than the internal microphone. With a headset, I was able to finally hear my own voice properly. Still, I don't really have anything too smart to tell you as this interface is convoluted and busy and completely counterintuitive.

PulseAudio, correct setting

There are many other problems here, too. You have the MATE volume applet and the PulseAudio applet, and they don't necessarily cooperate well, and there are half a dozen utilities to manage audio, and it's one big steam of radioactive waste. PulseAudio and everything sound related in Linux needs to be purged with supernova and bleach.

MATE volume control

Anyhow, changing anything using the conventional MATE applet did not work, so you probably don't want to bother, but just in case, a few more quick screenshots to highlight the pain and agony - to lead you down the wrong path.

Correct mic config

The correct mic setting; alas input level does not respond at all.

This does reminds me of all the audio problems we had when using the KDE edition, but there, the fix was relatively simple. Furthermore, if you search online, you will find a wealth of source explaining how to manually troubleshoot your audio system.

There are several other things to take into consideration. One, is your audio working at all? If it is, is your problem just limited to the microphone (recording) subsystem? Lastly, can you hear anything? Maybe it is just a matter of volume, the same way I had it.

Unfortunately, things are a little more complicated than that. I was able to record audio from the command line with the internal microphone - with ALSA, but not using Skype. I will assume this has to do with the volume control through Skype and PulseAudio configuration, which has caused us grief in the past. But then, who knows with these stupid systems? I guess the simple solution is uninstall PulseAudio. Always a good plan.

arecord -d <seconds> -f dat <audio file.wav>
aplay <audio file.wav>

This worked from a BASH shell, but not with Skype. Then, this is ALSA!

More reading

More reading for you, fellas:

Archlinux forum discussion on this sorry topic

PulseAudio troubleshooting on Arch Wiki

ALSA microphone troubleshooting on Arch Wiki


There you go. This is the ordeal that I had to undergo to finally have a fully working Xfce desktop in CentOS 7.2, loaded with all the right goodies, like software, codecs, and support for my gadgets, plus the necessary aesthetics. Most people take this kind of work for granted, and expect results from distro developers and distributions, which is perfectly legitimate. So if you find this unnecessary, I totally agree with you.

Except, CentOS is a server distro, and it brings its special perks to the desktop, for the price of some extra work on your behalf. Moreover, you won't need to be repeating yourself, and you won't be plagued with regressions, so your effort won't be wasted. In the end, it comes down to ROI. For me, the technical bits culminate in some expected look & feel tweakology, a new menu, sound and audio changes, and a few other bits and pieces. Much simpler and shorter after you've done this once and know what to expect. Perhaps then, this little exercise won't be an ordeal for you, but a pleasurable little escapade and a long-term investment. I hope you enjoy it. See ya.