By default a full installation of CentOS 7 will have the GNOME graphical user interface (GUI) installed and it will load up after system boot, however if we have installed CentOS without a GUI installed we can always install one later, or optionally we can install a different GUI.
This quick guide will cover how to install the Xfce desktop on CentOS 7, which will provide a GUI for working with the Linux system. While I don’t suggest using a GUI on a production server, it’s a good option if you’re using CentOS as a desktop.
Xfce is a lightweight desktop environment for Unix like operating systems which aims to be fast and low on system resources.
Install Xfce In CentOS
While there are many different graphical user interfaces available for Linux, in this example we will be using Xfce.
First we need to configure the EPEL repository, as this is where we will be installing packages from.
[root@centos7 ~]# yum install epel-release -y
Next I needed to install the “Server with GUI” group before proceeding. Note that this will also install GNOME, you’ll be able to change to Xfce later though.
[root@centos7 ~]# yum groupinstall "Server with GUI" -y
I did actually find that instead of installing this group, you can use “X Window System”, while it does work and is much more lightweight without including GNOME, I had some random issues likely due to lack of all packages.
Installing the Xfce Desktop is now as simple as installing the “Xfce” package group, which is already configured to install hundreds more packages that are required for a GUI installation.
[root@centos7 ~]# yum groupinstall "Xfce" -y
Note that this may take a while, on my minimal installation I needed to download around 25 packages which took up about 40MB on top of the Server with GUI package group.
Start The GUI
By default after installing these packages, the default target should have automatically updated, meaning that after a reboot the GUI will automatically be loaded. We can check the current default target as shown below.
[root@centos7 ~]# systemctl get-default graphical.target
In this instance the target has been updated appropriately by installing these package groups. If it instead said multi-user.target, then you would need to update it manually.
The target is similar to the old run levels, in this case multi-user.target is equivalent to run level 3 meaning that after a reboot the GUI will not be loaded here. We can set the default to the graphical.target which is equivalent to run level 5.
[root@centos7 ~]# systemctl set-default graphical.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target. [root@centos7 ~]# systemctl get-default graphical.target
While this has changed the default target which is accessed during system boot, our current target is still the multi-user.target. We can change to the GUI by performing ‘systemctl isolate graphical.target’ which will change us to the GUI immediately.
[root@centos7 ~]# systemctl isolate graphical.target
Alternatively a system reboot would also work, as all future boots should boot to the graphical target by default.
When you’re at the login screen, simply select the cog icon and pick Xfce Session, as shown below. This preference should be remembered and automatically selected for next time.
Removing Xfce
If you’ve installed the GUI on a server and realized that it was a terrible mistake, don’t worry! We can also undo this by simply using yum to remove the “Xfce Desktop” package group
[root@centos7 ~]# yum groupremove "Xfce"
Carefully read through the packages that will be removed and ensure that this looks correct prior to removing packages or dependencies.
Summary
As shown we can easily install the Xfce desktop group of packages in CentOS 7 Linux, which will provide us with a graphical user interface that can be used for managing and interacting with the system.
Hello,
Thanks for this article.
I’m testing it currently. I use a SaltStack server to install multiple packages including xfce on machine running a CentOS minimal install. It worked perfectly since a few weeks with only “X Window System”.
When installing “X Window System”, it’s cleaner since you don’t have any other interface to select and then less error from users.
Do you have a solution to remove other graphical interface?
Thanks,
Kevin
You mean removing the default GNOME? I’ve not actually tried, but there is a package group for that too, so my first guess would be running ‘yum remove’ on the GNOME group, assuming you have some other desktop environment installed. I’ve not tested this, so I suggest testing on a test VM first.
Thanks for the article. I’ve been developing a script to customize CentOS7 core to include Xfce, and using your methods worked really well earlier this year. Sometime recently, the packages initial-setup and initial-setup-gui snuck into the configuration and now the auto-setup behaves very differently. Removing those packages gets rid of the prompt at first boot, but I’m still booting into an Openbox desktop initially now (didn’t used to be that way) – do any readers here (at the first Google result for CentOS7 Xfce) have any experience with command line manipulations that would choose Xfce as the default desktop without making a person use the cog icon?
Thanks,
Hello,
Why don’t you start from a minimal install and only add xfce? This way, it’s the only graphical interface available.
Regards,
Kevin
I started installing the required packages from a minimal install.
I also started from a minimal install, and as I said, back in June or so it worked as expected.
Now, I’m doing the same steps (below) and instead of booting to xfce, it’s booting to openbox:
* Install CentOS7 x64 1611 Minimal from USB
* sudo yum install -y epel-release
* sudo yum groupinstall -y “X Window system”
* (new step, helps a little:) sudo rpm -e initial-setup initial-setup-gui
* sudo yum groupinstall -y xfce
* sudo systemctl set-default graphical.target
so, with the new step at least I don’t get the prompts, but I’m still stuck in openbox on first boot. I’m piecing my way through a solution with information from this page:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/user-sessions#configuring-user-default-session
but it would be nice if there were a simpler package-installed solution that “just worked.”
Worked perfectly as described with CentOS-7-x86_64-LiveGNOME-1708 on HP Laptop with 4GB RAM.
Thanks.
Just wondering… is it possible to have LXDE or LXQT as well?
It doesn’t work for me, I get following error
Error: Package: Thunar-1.6.16-1.el7.x86_64 (epel)
Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
Even though libdbus-1.so.3 file is present in /usr/lib64/, still Thunar package doesn’t get installed, Any suggestions?
I am running centos 7.4
Do not follow these instructions!!
1. A full Gnome is installed which is not necessary for running XFCE.
2. This does not work if a minimal CentOS installation is the base as the X Server is missing.
I followed this: http://www.tuxfixer.com/install-xfce-4-desktop-environment-on-centos-7/
And it worked.
No full Gnome installation. Base was a minimal installation.
I guess this was more from swapping from one to the other rather than installing it from nothing.
I had to run ‘startx’ to actually start to GUI, even after isolating graphical.target
Thanks for the detailed tutorial! I was able to successfully install Xfce on my CentOS 7 system using your instructions. The step-by-step guide was incredibly helpful and made the process much easier than I expected. I’m looking forward to exploring the Xfce interface and all its features. Great job!