276

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 '15 at 1:40
  • 7
    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 '18 at 13:28
  • 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 '20 at 19:01

11 Answers 11

353

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
  • 3
    Thanks for the great answer. Please add that OP should run loginctl first to see the sessions.
    – Ho1
    Nov 25 '16 at 10:33
  • 6
    loginctl show-session `loginctl|grep <YOUR_USER_NAME>|awk '{print $1}'` -p Type
    – solsTiCe
    Dec 7 '17 at 7:06
  • 6
    According to Fedora 28 docs you can also use echo $WAYLAND_DISPLAY which prints nothing if wayland is not used.
    – robsch
    Jun 25 '18 at 9:14
  • 5
    @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 '18 at 7:30
  • 8
    If you don’t use a display manger, this outputs tty no matter whether you use x11 or wayland.
    – Devon
    Mar 12 '20 at 13:19
288

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

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

This works on Fedora and Ubuntu 18.04.5 LTS:

loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
4
  • Power of pipes and unix philosophy. Nice. Sep 10 '18 at 13:07
  • 4
    /me mumbles something about grep ... | awk, but hey, that's fine.
    – rahmu
    Nov 12 '18 at 14:58
  • It also works on Kubuntu 19.10. Feb 3 '20 at 14:22
  • 2
    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 '20 at 14:50
25

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
  • 1
    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 '20 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 '20 at 15:46
9

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

1
  • 2
    Right, and then if that fails, check DISPLAY to see if X11 is being used.
    – JoL
    May 11 '20 at 19:28
8

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
  • 9
    And what if wayland is the default? Sep 21 '16 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 '16 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 '16 at 8:38
  • 4
    gnome-shell only works if you are using gnome as DM.
    – Sebastian
    Mar 27 '17 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 '18 at 21:07
5

(try to) Run the command 'r' in the Alt+F2 menu. It will restart the environment 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 '20 at 14:27
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/

1

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 '18 at 12:05
  • IMHO, that just means that your wayland session is not pure Wayland. Mar 22 '18 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 '18 at 12:08
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
  • 5
    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 '15 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 '20 at 14:36

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.