196

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?

  • run xprop, this tool will work on xapplications running under emulation but not wayland or gnome-shell on wayland. – Mike Mestnik Aug 10 '15 at 1:40
  • 4
    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... – user1404316 Mar 22 '18 at 13:28

11 Answers 11

262

Obtain the session ID to pass in by issuing:

loginctl

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
|improve this answer|||||
  • 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
  • 5
    loginctl show-session `loginctl|grep <YOUR_USER_NAME>|awk '{print $1}'` -p Type – solsTiCe Dec 7 '17 at 7:06
  • 2
    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
  • 3
    @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
  • 1
    If you don’t use a display manger, this outputs tty no matter whether you use x11 or wayland. – Devon Mar 12 at 13:19
199

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 Alex's answer instead

|improve this answer|||||
  • 30
    What does it mean if this variable is unset? – Gavin S. Yancey May 26 '17 at 6:03
  • 1
    Is there a way to show also the version of the running wayland protocols? – baermathias Aug 31 '18 at 8:31
  • I am a Wayland user without a display manager. This outputs tty. – Devon Mar 12 at 13:11
35

This works on fedora

loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
|improve this answer|||||
  • Power of pipes and unix philosophy. Nice. – Talespin_Kit Sep 10 '18 at 13:07
  • 1
    /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. – Cees Timmerman Feb 3 at 14:22
15

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.

|improve this answer|||||
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.

|improve this answer|||||
  • 6
    And what if wayland is the default? – anatoly techtonik Sep 21 '16 at 11:34
  • 3
    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. – Marius Gedminas Nov 23 '16 at 8:38
  • 3
    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
2

(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".

|improve this answer|||||
  • 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". – Cees Timmerman Feb 3 at 14:27
1

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

|improve this answer|||||
  • 4
    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. – Stephen Kitt May 16 '15 at 21:30
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/

|improve this answer|||||
1

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

|improve this answer|||||
0

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

|improve this answer|||||
  • seems to be working fine on my wayland session ... – don_crissti Mar 22 '18 at 12:05
  • IMHO, that just means that your wayland session is not pure Wayland. – Basile Starynkevitch 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 – don_crissti Mar 22 '18 at 12:08
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.

|improve this answer|||||
  • Cleaner is this to list all programs and their X11 or Wayland dependencies: find . | xargs ldd | grep '^[.]\|x11\|wayland' – Cees Timmerman Feb 3 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.