How To Install Xfce GUI In CentOS 7 Linux

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.

Xfce Desktop

Xfce Desktop

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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

[[email protected] ~]# 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.

Select Xfce at login

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

[[email protected] ~]# 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.

  1. 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.

  2. 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,

  3. 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.”

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>