Home Linux Tips & Tricks How To Check If GUI Is Installed In Linux From Commandline

How To Check If GUI Is Installed In Linux From Commandline

By sk
Published: Last Updated on 67.8K views

The other day one of our blog follower tried to install Katoolin and it broke his Ubuntu machine. He couldn't get past the login screen. He somehow managed to recover his broken Ubuntu system without reinstalling it. However, this time his machine was booting into CLI mode only. It seems like the graphical DE has gone, but he is not so sure. He asked me that how could he find if GUI is there or not at this point. If you've ever been in a situation like this, here are a few tips to check if GUI is installed in Linux from commandline.

Check If GUI Is Installed In Linux From Commandline

There are couple ways to detect whether your Linux system has GUI installed. Please note that all of these methods will only show if is GUI installed or not. It will not, however, help to identify if GUI is running or not.

All steps given below are tested under Ubuntu 20.04 LTS desktop and server editions.

Method 1:

The first method is to make sure if there is any X session installed on your system. To do so, run:

$ ls /usr/bin/*session

If your Linux system has any GUI session, it should display something like below:

/usr/bin/dbus-run-session  /usr/bin/gnome-session-custom-session
/usr/bin/gnome-session

As you see in the above output, my Ubuntu has GNOME Desktop Environment installed.

  • If your system has MATE installed, it will print /usr/bin/mate-session.
  • For LXDE, it will return /usr/bin/lxsession.

If a Linux doesn't has any GUI installed in it, you will see an output like below:

/usr/bin/byobu-select-session  /usr/bin/dbus-run-session
Check If GUI Is Installed In Linux From Commandline
Check If GUI Is Installed In Linux From Commandline

This command works only on Debian-based systems, such as Ubuntu, Linux Mint, Pop!_OS etc. If your system is RPM-based systems like Fedora, RHEL, you will see the following error message:

ls: cannot access '/usr/bin/*session': No such file or directory

In that case, refer the following methods.

Method 2:

The second method to detect if there is any GUI installed on your system is to check the presence of X server with type command:

$ type Xorg

On Linux system with GUI installed, you will see the following output:

Xorg is /usr/bin/Xorg

On CLI-only Linux systems, the output should be:

-bash: type: Xorg: not found
Find If GUI Is Installed In Linux From Commandline
Find If GUI Is Installed In Linux From Commandline

Method 3:

The another method to verify if GUI installed on your Linux system is to check the contents of /usr/share/xsessions/ directory with ls command:

$ ls /usr/share/xsessions/

Sample output on Ubuntu Linux GUI system:

ubuntu.desktop

Sample output from Ubuntu Linux CLI-only machine:

ls: cannot access '/usr/share/xsessions/': No such file or directory
Verify if GUI is installed in Linux from commandline
Verify if GUI is installed in Linux from commandline

Method 4:

This is exclusively for Debian-based systems. You can also check if GUI is installed or not with dpkg and grep commands like below:

$ dpkg -l | grep xserver

This command lists all installed X11 and xserver related packages.

Sample output from Ubuntu Linux GUI system:

 ii  x11-xserver-utils                          7.7+8                                 amd64        X server utilities
 ii  xserver-common                             2:1.20.9-2ubuntu1.2~20.04.1           all          common files used by various X servers
 ii  xserver-xephyr                             2:1.20.9-2ubuntu1.2~20.04.1           amd64        nested X server
 ii  xserver-xorg                               1:7.7+19ubuntu14                      amd64        X.Org X server
 ii  xserver-xorg-core                          2:1.20.9-2ubuntu1.2~20.04.1           amd64        Xorg X server - core server
 ii  xserver-xorg-core-hwe-18.04                3:14.5                                amd64        Transitional package for xserver-xorg-core-hwe-18.04
 ii  xserver-xorg-hwe-18.04                     3:14.5                                amd64        Transitional package for xserver-xorg-hwe-18.04
 ii  xserver-xorg-input-all                     1:7.7+19ubuntu14                      amd64        X.Org X server -- input driver metapackage
 ii  xserver-xorg-input-libinput                0.29.0-1                              amd64        X.Org X server -- libinput input driver
 ii  xserver-xorg-input-wacom                   1:0.39.0-0ubuntu1                     amd64        X.Org X server -- Wacom input driver
 ii  xserver-xorg-legacy                        2:1.20.9-2ubuntu1.2~20.04.1           amd64        setuid root Xorg server wrapper
 ii  xserver-xorg-video-all                     1:7.7+19ubuntu14                      amd64        X.Org X server -- output driver metapackage
 ii  xserver-xorg-video-all-hwe-18.04           3:14.5                                amd64        Transitional package for xserver-xorg-video-all-hwe-18.04
 ii  xserver-xorg-video-amdgpu                  19.1.0-1                              amd64        X.Org X server -- AMDGPU display driver
 ii  xserver-xorg-video-amdgpu-hwe-18.04        3:14.5                                amd64        Transitional package for xserver-xorg-video-amdgpu-hwe-18.04
 ii  xserver-xorg-video-ati                     1:19.1.0-1                            amd64        X.Org X server -- AMD/ATI display driver wrapper
 ii  xserver-xorg-video-ati-hwe-18.04           3:14.5                                amd64        Transitional package for xserver-xorg-video-ati-hwe-18.04
 ii  xserver-xorg-video-fbdev                   1:0.5.0-1ubuntu1                      amd64        X.Org X server -- fbdev display driver
 ii  xserver-xorg-video-fbdev-hwe-18.04         3:14.5                                amd64        Transitional package for xserver-xorg-video-fbdev-hwe-18.04
 ii  xserver-xorg-video-intel                   2:2.99.917+git20200226-1              amd64        X.Org X server -- Intel i8xx, i9xx display driver
 ii  xserver-xorg-video-nouveau                 1:1.0.16-1                            amd64        X.Org X server -- Nouveau display driver
 ii  xserver-xorg-video-qxl                     0.1.5+git20200331-1                   amd64        X.Org X server -- QXL display driver
 ii  xserver-xorg-video-qxl-hwe-18.04           3:14.5                                amd64        Transitional package for xserver-xorg-video-qxl-hwe-18.04
 ii  xserver-xorg-video-radeon                  1:19.1.0-1                            amd64        X.Org X server -- AMD/ATI Radeon display driver
 ii  xserver-xorg-video-vesa                    1:2.4.0-2                             amd64        X.Org X server -- VESA display driver
 ii  xserver-xorg-video-vesa-hwe-18.04          3:14.5                                amd64        Transitional package for xserver-xorg-video-vesa-hwe-18.04
 ii  xserver-xorg-video-vmware                  1:13.3.0-3                            amd64        X.Org X server -- VMware display driver

On Ubuntu server without GUI, you will only see a few X server related packages:

rc  x11-xserver-utils                    7.7+8                               amd64        X server utilities
 ii  xserver-common                       2:1.20.9-2ubuntu1.2~20.04.1         all          common files used by various X servers

However, this is not so reliable method. Because, you could have installed DE without using package managers like dpkg or apt. In such cases, this will not return any results. Even if you installed and then removed the X server, it will still show that X server is installed.

How to find which Desktop Environment you are using in Linux?

This is a bonus method. We can easily find the current Desktop environment in our Linux GUI system using the following command:

$ echo $XDG_CURRENT_DESKTOP
ubuntu:GNOME
Find current desktop environment in Linux
Find current desktop environment in Linux

As you see in the output, I am using Ubuntu GNOME desktop environment. If you don't have any DE, you will see nothing.

Featured image by erfouris studio from Pixabay.

You May Also Like

3 comments

Dan Jones January 30, 2021 - 2:40 am

As to your last suggestion, I would recommend checking `XDG_SESSION_DESKTOP`, instead of `XDG_CURRENT_DESKOP`. The only reason for that is that, in my experience, some light-weight window managers don’t set `XDG_CURRENT_DESKTOP`, but do set `XDG_SESSION_DESKTOP`, but `SESSION` seems to be pretty consistently used.

Reply
Guestuser January 31, 2021 - 8:32 am

I’m not really sure what is meant in this post.
Many of the checks are merely indicative of the presence of files or an installation (or remnants) and doesn’t really examine why an x session is not starting.
I would be examining logs to see if an attempt was made to load x (or wayland) and work out if the installation of the graphical environment had been compromised or altered.

Reply
Victor Mendonca February 4, 2021 - 10:04 am

How about:

systemctl get-default

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More