367

So I just installed the latest Kali Linux on my laptop which was based on Debian 7 (oldstable). I then dist-upgrad-ed the whole thing to Debian 8.

I've always wanted Wayland instead of X11, so I installed the necessary packages. Then created a minimal ~./config/weston.ini configuration. Now, from the Gnome log-in screen: Login Screen

I can boot to Gnome on Wayland or LXDE (among others). The previous with very limited success and the latter (LXDE) almost perfectly, though the panel needs setting up (I have to look up freedesktop).

Anyways, in LXDE, the GUI is more responsive than it was on the oldstable and possibly as fast when it was running windows 7. I was pleased.

But I want to know if this is because of all the library/module upgrades from Debian 7 to 8 or from using Wayland (if I really am using Wayland at all). I skimmed through htop and found a /usr/bin/Xorg running and no process named "wayland". So which one am I currently running?

3
  • run xprop, this tool will work on xapplications running under emulation but not wayland or gnome-shell on wayland. Aug 10, 2015 at 1:40
  • 8
    I guess I'm the only one to notice that while the OP said he was operating on debian, the screenshot he presented is clearly fedora... Mar 22, 2018 at 13:28
  • 1
    Classical SE: An incorrect/incomplete, complicated answer gets 294 upvotes, and the simpler, correct, and complete one gets only 2. Getting the best answer at the top sure is a hard problem to solve.
    – JoL
    Oct 28, 2020 at 19:01

13 Answers 13

470

Obtain the session ID to pass in by issuing:

loginctl

That will show you something like:

SESSION  UID USER          SEAT  TTY
     c2 1000 yourusername  seat0    

1 sessions listed.

In that example, c2 is the session ID.

Then:

loginctl show-session <SESSION_ID> -p Type

If you want all this on a single command:

loginctl show-session $(awk '/tty/ {print $1}' <(loginctl)) -p Type | awk -F= '{print $2}'

Use the one corresponding to your user name.

Refer to: https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

So, for me it is:

$ loginctl show-session 2 -p Type                                                  
Type=wayland
10
  • 4
    Thanks for the great answer. Please add that OP should run loginctl first to see the sessions.
    – Ho1
    Nov 25, 2016 at 10:33
  • 10
    loginctl show-session `loginctl|grep <YOUR_USER_NAME>|awk '{print $1}'` -p Type
    – solsTiCe
    Dec 7, 2017 at 7:06
  • 8
    According to Fedora 28 docs you can also use echo $WAYLAND_DISPLAY which prints nothing if wayland is not used.
    – robsch
    Jun 25, 2018 at 9:14
  • 7
    @DSJustice your backticks have been markdown'd. One can copy this: loginctl show-session $(loginctl|grep $(whoami) |awk '{print $1}') -p Type
    – Andreas
    Nov 6, 2018 at 7:30
  • 15
    If you don’t use a display manger, this outputs tty no matter whether you use x11 or wayland.
    – Devon
    Mar 12, 2020 at 13:19
372

How to know whether Wayland or X11 is being used?

on X11 systems:

$ echo $XDG_SESSION_TYPE
x11

on some wayland system:

$ echo $XDG_SESSION_TYPE
wayland

edit: This doesn't seem to work in some cases. See comments & use antismap's answer instead

6
  • 39
    What does it mean if this variable is unset? May 26, 2017 at 6:03
  • 2
    Is there a way to show also the version of the running wayland protocols?
    – sunwarr10r
    Aug 31, 2018 at 8:31
  • 5
    I am a Wayland user without a display manager. This outputs tty.
    – Devon
    Mar 12, 2020 at 13:11
  • 7
    I am an X11 user without a display manager. This outputs tty.
    – JoL
    May 11, 2020 at 19:25
  • 3
    See stackoverflow.com/a/45537237/912144 for the proper way of checking this.
    – Shahbaz
    Aug 23, 2020 at 5:08
88

This works on Fedora and Ubuntu 18.04.5 LTS:

loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
4
  • 2
    Power of pipes and unix philosophy. Nice. Sep 10, 2018 at 13:07
  • 11
    /me mumbles something about grep ... | awk, but hey, that's fine.
    – rahmu
    Nov 12, 2018 at 14:58
  • It also works on Kubuntu 19.10. Feb 3, 2020 at 14:22
  • 7
    A minor variation: loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value I guess this assumes a singe session id per user: I'm not sure whether there can be multiple ids.
    – NickD
    Sep 1, 2020 at 14:50
32

I like Ayush's answer the best, but thought I'd say that Andreas's answer can be done in one line:

loginctl show-session "$XDG_SESSION_ID" -p Type

You can additionally pass --value to drop the Type= prefix.

2
  • 2
    For me this failed with an error message: Failed to get session path: Caller does not belong to any known session. Apparently $XDG_SESSION_ID is not set on my wayland session.
    – Calimo
    Aug 29, 2020 at 14:52
  • XDG_SESSION_ID is not set for me, although other XDG_ vars are. (I am running wayland, on Ubuntu gutsy 20.10) Nov 20, 2020 at 15:46
16

The simplest thing to do is to check whether WAYLAND_DISPLAY variable is set or not.

1
  • 4
    Right, and then if that fails, check DISPLAY to see if X11 is being used.
    – JoL
    May 11, 2020 at 19:28
10

Give the command

ps aux | grep gnome-shell

It will give the output

/usr/bin/gnome-shell --wayland --display-server

If Wayland is active.

8
  • 11
    And what if wayland is the default? Sep 21, 2016 at 11:34
  • 4
    My "gnome-shell" process was not running with the --wayland option, but when I ran ps aux | grep wayland, I found that /usr/bin/Xwayland was running.
    – paulie4
    Nov 5, 2016 at 2:15
  • 2
    Often you have two gnome-shell processes: one used for gdm, and one used for the user session. Often gdm's gnome-shell uses wayland but the user session's gnome-shell uses X11. Nov 23, 2016 at 8:38
  • 4
    gnome-shell only works if you are using gnome as DM.
    – Sebastian
    Mar 27, 2017 at 19:55
  • 1
    A suggestion - I needed to run ps aux with the 'wide' option (w), otherwise output got cutoff and grep didn't read anything (ps aux w | grep gnome-shell)
    – cbcoutinho
    Mar 11, 2018 at 21:07
7

If you're running Gnome, run the command r in the Alt+F2 menu. It will restart the environment (gnome-shell) in Xorg (without losing windows and processes) but in Wayland it will give the message "Restart is not available in Wayland".

1
  • Via Alt+F2 my Kubuntu 19.10 starts Robo3t, and via terminal i get "Command 'r' not found, but can be installed with: sudo apt install r-cran-littler". Feb 3, 2020 at 14:27
5

Tell which session type with POSIX-shell grammar and no sub-shell:

printf 'Session is: %s\n' "${DISPLAY:+X11}${WAYLAND_DISPLAY:+WAYLAND}"
2

You could run the xdpyinfo command. It gives information about your current X11 server (and display). It would fail if you don't have one (e.g. in a pure Wayland setting).

3
  • seems to be working fine on my wayland session ... Mar 22, 2018 at 12:05
  • 1
    IMHO, that just means that your wayland session is not pure Wayland. Mar 22, 2018 at 12:06
  • sure but the Q is "how to know whether wayland or xorg is used" for the current session... not how to know if there's a X11 server running Mar 22, 2018 at 12:08
1

if you want a visual hint, I wrote a simple GNOME Shell extension that shows an icon that tells you whether you are running Wayland or Xorg

http://www.fepede.net/blog/2017/04/gnome_shell_extension_xorwayland/

0

No, I've noticed a pid called Wayland in htop, when I've switched to Wayland for giggles. Unless it's changed that's what one should see. Update: Here is a screengrab showing Wayland process.

enter image description here

1
  • 6
    I don't see a wayland process in your screengrab; the line you've highlighted is a dbus-launch process, starting a session called gnome-wayland. May 16, 2015 at 21:30
0

Well you could also just check if applications are running in their wayland native form:

cd /usr/bin
ldd $application_name | grep wayland

Furthermore, to check which binaries have wayland support you could try:

cd /usr/bin
find . | xargs ldd | grep wayland -B 55

The above is not really very clean but it works. You can further pipe it to a file and then use vim to navigate.

cd /usr/bin
find . | xargs ldd | grep wayland -B 55 >> candidates
vim candidates
# Use vi movement

The -B flag stands for before and helps to print the binary name.

You could check this for more details. This answer adapted from this question.

1
  • Cleaner is this to list all programs and their X11 or Wayland dependencies: find . | xargs ldd | grep '^[.]\|x11\|wayland' Feb 3, 2020 at 14:36
0

The simple easy way to find out if you have Wayland or X11 is to open Settings, scroll down to About, and then scroll down to Windowing System, and it will tell you there.

In my own search for the answer to this question, after reading some of these "Answers," and finally finding out which I have through various Terminal commands, I found this much simpler way on my own. I'm brand new to Linux and I've been going through a lot of trouble shooting issues, and this kind of problem often comes up. It is extremely frustrating. Why does everyone offer such convoluted answers instead of the simpler more obvious solution?

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.