XFCE provides a fast, resource-efficient desktop environment for CentOS Stream that runs smoothly on older hardware, virtual machines, and systems where you want maximum performance without sacrificing usability. Whether you need a lightweight alternative to GNOME for minimal server setups, a responsive environment for remote desktop sessions, or a clean desktop for administration tasks without heavy compositing overhead, XFCE delivers low memory usage with a fully functional interface. By the end of this guide, you will have XFCE installed on CentOS Stream with the EPEL repository configured, a display manager enabled, and a session ready to use at login.
XFCE is currently available for CentOS Stream 9 only. As of February 2026, the Xfce group is not available in EPEL 10 for CentOS Stream 10, which removed the standalone Xorg server in favor of Wayland-only. You can track the EPEL 10 packaging discussion on Red Hat Bugzilla (Bug 2366792). This guide covers CentOS Stream 9 installation.
Update CentOS Stream Before Installing XFCE
Refresh your package cache and apply any pending updates to ensure compatibility with the packages you are about to install:
sudo dnf upgrade --refresh
This guide uses
sudofor commands that need root privileges. If your user is not in the sudoers file, either log in asrootto run the commands directly, or have an existing administrator add your account to thewheelgroup withsudo usermod -aG wheel your-username.
Install EPEL and Enable CRB for XFCE Packages
XFCE is not included in the default CentOS Stream repositories. The Extra Packages for Enterprise Linux (EPEL) repository provides the Xfce group, and many of its packages depend on the CodeReady Builder (CRB) repository for development libraries.
Install the EPEL release package from the CentOS Stream extras-common repository:
sudo dnf install epel-release
This also installs dnf-plugins-core, which provides the config-manager subcommand needed to enable CRB. Enable the CRB repository so EPEL dependencies resolve correctly:
sudo dnf config-manager --set-enabled crb
Verify that both EPEL and CRB are active:
dnf repolist | grep -E 'epel|crb'
crb CentOS Stream 9 - CRB epel Extra Packages for Enterprise Linux 9 - x86_64
For more details about EPEL configuration and management, see our guide to installing EPEL on CentOS Stream.
Install XFCE Desktop Environment on CentOS Stream
With EPEL and CRB enabled, install the XFCE desktop environment using the DNF group install feature. This pulls in all core XFCE components, including the Thunar file manager, the XFCE panel, the Xfwm4 window manager, and essential utilities:
sudo dnf group install "Xfce"
After the installation completes, verify that the group installed successfully:
dnf group list installed | grep -i xfce
Xfce
Install Optional XFCE Packages
The base Xfce group provides a functional desktop, but several add-on packages improve the day-to-day experience. These are all available in EPEL:
sudo dnf install xfce4-screensaver xfce4-clipman-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin xfce4-pulseaudio-plugin
xfce4-screensaver– screen locking and screensaver supportxfce4-clipman-plugin– clipboard history manager for the panelxfce4-weather-plugin– weather display in the panelxfce4-whiskermenu-plugin– enhanced application menu with searchxfce4-pulseaudio-plugin– volume control and audio device switching
Choose a Display Manager for XFCE on CentOS Stream
Installing XFCE does not automatically boot into a graphical login screen, especially on minimal or server installs where the default target remains multi-user.target. You need a display manager to present the graphical login and session selector. The Xfce group pulls in GDM by default, but LightDM is a lighter alternative available from EPEL.
| Feature | GDM | LightDM |
|---|---|---|
| Memory usage | Higher (GNOME integration) | Lower |
| Source | Installed with Xfce group | EPEL (separate install) |
| Session selector | Gear icon | Dropdown menu |
| Best for | Systems also running GNOME | XFCE-only or minimal setups |
For XFCE-only systems, LightDM is recommended because it uses fewer resources and pairs naturally with lightweight desktops. If your system also runs GNOME, keep GDM to avoid switching display managers between sessions.
Check your current boot target and display manager state before making changes:
systemctl get-default
systemctl status display-manager --no-pager
Option 1: Enable GDM for XFCE
GDM is already installed as part of the Xfce group. Enable it and set the system to boot into a graphical login:
sudo systemctl enable --now gdm
sudo systemctl set-default graphical.target
Verify that GDM is running:
sudo systemctl status gdm --no-pager
Active: active (running)
Option 2: Install and Enable LightDM for XFCE
Install LightDM and its GTK greeter from EPEL. If GDM is currently enabled, disable it before switching:
sudo systemctl disable --now gdm 2>/dev/null
sudo dnf install lightdm lightdm-gtk
sudo systemctl enable --now lightdm
sudo systemctl set-default graphical.target
The 2>/dev/null suppresses errors if GDM was never enabled. Verify that LightDM is active:
sudo systemctl status lightdm --no-pager
Active: active (running)
Reboot and Select XFCE Session on CentOS Stream
With your display manager enabled, reboot the system to initialize the desktop environment:
sudo reboot
When the system restarts, you will land on a graphical login screen. Use the session selector to choose XFCE before entering your password: GDM shows a gear icon near the sign-in button, while LightDM displays a session dropdown near the username field. Select “Xfce Session” and log in.
If you boot back to a text console instead of a graphical login, return to the display manager section and confirm that your display manager is enabled and the default target is set to
graphical.target.
Your session preference is remembered for future logins, so you only need to select XFCE once unless you want to switch to another desktop.


Start XFCE Without a Display Manager (Optional)
If you prefer to skip a graphical login manager entirely, launch XFCE manually using startx. Install the Xorg server and xinit, configure your X session, then start it:
sudo dnf install xorg-x11-server-Xorg xorg-x11-xinit
printf '%s\n' 'exec startxfce4' > ~/.xinitrc
startx
Manage XFCE on CentOS Stream
Update XFCE Packages
XFCE updates arrive through EPEL alongside your regular system updates. Apply all available updates, including XFCE components:
sudo dnf upgrade --refresh
DNF refreshes the package database and upgrades all installed packages from both the base CentOS Stream repositories and EPEL in a single transaction.
Remove XFCE from CentOS Stream
If you enabled a graphical login specifically for XFCE, disable it and revert the default boot target before removing packages. Otherwise, the system will attempt to start a missing desktop stack at boot.
If you still use another desktop environment on this system, do not disable your display manager. Only revert changes you made specifically for the XFCE setup.
Revert the default target back to text-mode boot:
sudo systemctl set-default multi-user.target
Disable whichever display manager you enabled:
If you are using GDM:
sudo systemctl disable --now gdm
If you are using LightDM:
sudo systemctl disable --now lightdm
Remove the XFCE group and clean up orphaned dependencies:
sudo dnf group remove "Xfce"
sudo dnf autoremove
If you only installed EPEL for XFCE and no longer need it, optionally remove the EPEL repository:
sudo dnf remove epel-release
Remove User Configuration Files
The following commands permanently delete your XFCE configuration files, including panel layouts, keyboard shortcuts, and desktop preferences. If you want to preserve these settings, back them up first with
cp -r ~/.config/xfce4 ~/xfce4-backup.
rm -rf ~/.config/xfce4
rm -rf ~/.cache/xfce4
Reboot to complete the removal:
sudo reboot
Verify Complete XFCE Removal
After rebooting, confirm that XFCE has been completely removed:
dnf group list installed | grep -i xfce
No output indicates the removal was successful. If you still use a graphical login for another desktop, confirm your session choice at login.
Troubleshoot XFCE on CentOS Stream
XFCE Group Not Found During Installation
If DNF reports “Module or Group ‘Xfce’ is not available,” verify that EPEL and CRB are both enabled:
dnf repolist | grep -E 'epel|crb'
crb CentOS Stream 9 - CRB epel Extra Packages for Enterprise Linux 9 - x86_64
If either repository is missing, install EPEL and enable CRB as shown in the repository setup section. Also confirm you are running CentOS Stream 9, as the Xfce group is not available in EPEL 10 for CentOS Stream 10 (see Bug 2366792).
No XFCE Option at Login Screen
If you boot to a text console instead of a graphical login, verify the default target and display manager status:
systemctl get-default
systemctl status display-manager --no-pager
If the graphical login appears but XFCE is missing from the session selector, check that the session file exists:
ls /usr/share/xsessions/ | grep -i xfce
xfce.desktop
If the file is missing, the XFCE session package may not have installed correctly. Reinstall it:
sudo dnf reinstall xfce4-session
startx Command Not Found
If startx returns “command not found,” the xinit package is not installed. This is expected on minimal installs because the Xfce group does not include xinit by default. Install the required packages:
sudo dnf install xorg-x11-server-Xorg xorg-x11-xinit
After installation, create the ~/.xinitrc file as described in the optional startx section above, then run startx.
Not currently. CentOS Stream 10 removed the standalone Xorg (X11) server in favor of Wayland-only, and XFCE has not been ported to Wayland. The Xfce group is not available in EPEL 10. You can track progress on Red Hat Bugzilla Bug 2366792.
Yes. RHEL 9 uses the same EPEL 9 repository as CentOS Stream 9. After enabling EPEL and CRB on RHEL 9, you can install the Xfce group with the same commands shown in this guide.
Yes. Both desktop environments coexist without conflict. The Xfce group install does not remove GNOME. At the login screen, use the session selector (gear icon in GDM or dropdown in LightDM) to choose between XFCE and GNOME.
Conclusion
You now have XFCE running on CentOS Stream 9 with EPEL configured for ongoing updates. Customize your setup through xfce4-settings-manager for panel layouts, appearance, and keyboard shortcuts. For server environments, consider adding firewalld to manage network access alongside your new desktop.
Formatting tips for your comment
You can use basic HTML to format your comment. Useful tags currently allowed:
<code>command</code>command<strong>bold</strong><em>italic</em><blockquote>quote</blockquote>