Wayland

Wayland (license MIT, https://gitlab.freedesktop.org/wayland) is the new standard display protocol and consist of the following components:

  • Wayland 1.18 as the display server protocol itself
  • Wayland-Protocols 1.18 extended Wayland protocols
  • Weston 8.0 is the optional reference compositor (not required if you use e.g. Kwin)
  • XWayland 1.20.8 to run legacy X11 only apps in a Wayland environment

Wayland replaces the legacy X11 display and graphic implementation. Wayland is designed as just a protocol and with security in mind. A Wayland application cannot see the content and input devices of another window or of the screen as long as it is not explicitly granted by the compositor. This restricts key loggers and screen monitoring software that could be easily implemented in X11 without permission requests, in fact it was designed like this, any X11 application can read all input and screen content at any time. Wayland is usually installed automatically by distributions. The main Wayland compositors are Kwin from KDE Plasma and Mutter from Gnome.

Toolkits with proper Wayland support are

  • Qt5
  • Gtk3
  • SDL2 + SDL12-compat
  • Clutter
  • EFL
  • GLFW
  • Electron 2.0 will support Gtk3, not yet released.

For more details read https://wiki.archlinux.org/index.php/Wayland#GUI_libraries

Bugs

libinput 1.14

Since some time the libinput is the main driver dealing with all input devices like a mouse, touchpad or touchscreen. For more details read https://wiki.archlinux.org/index.php/Libinput. Libinput is used by Wayland and Xorg and many distributions are in the process to switch over. Except for some corner cases the other drivers are not required.

Check and remove from Arch Linux installs all xf86-input-* drivers except for xf86-input-libinput (required for X11), press 2 times the TAB key to see which package is still installed. Example:

pacman -Rsc xf86-input-synaptics

You may want to clean and remove some config files like:

rm -R /etc/X11/xorg.conf.d/50-synaptics.conf

Pipewire

Pipewire (license LGPL, https://pipewire.org) is a new multimedia framework to replace in the long run JACK and PulseAudio. It was developed mainly with Video routing similar like PulseAudio but with security, Wayland and Flatpak in mind.

Remove legacy tool-kits without Wayland support

Qt4 has been removed successful from Arch Linux.

Gtk2

Gtk2 doesn’t support Wayland, so try to remove it. To see which Gtk2 applications need to be removed or replaced with an alternative, try to remove Gtk2:

 pacman -R gtk2

Add alternatives like KDE Partition Manager.

pacman -Sy partitionmanager

Then remove applications with:

pacman -Rsc gparted

The steam package got rid of this legacy dependency in May 2020.

Python2

Python2 doesn’t support Wayland, so try to remove it, but still several applications make use of it as the transition to Python 3 is not finished yet. To see which Python2 applications need to be removed or replaced with an alternative, try to remove Python2:

pacman -R python2

The issue is that still several software depends from this old toolkit like kodi, getmail, calibre, …

At least some can be removed like the following examples:

pacman -Rsc bzr phantomjs urlgrabber

Some software that doesn’t depend anymore from python2 in Arch Linux (Status: https://www.archlinux.org/todo/die-python2-die/ and https://www.archlinux.org/todo/conversion-of-programs-that-use-python-2-to-python-3/): libvirt, ceph, samba.

SDL1.2

SDL1 doesn’t support Wayland, removing it might break several old games. It is out of maintenance as well.

So hopefully these games get updated soon to SDL2 or will use SDL12-compat. Applications with experimental SDL2 support:

  • dosbox -> dosbox-sdl2 (AUR), but sdl_sound-hg requires still SDL1 as a package dependency

Applications depending from SDL1:

  • steam-native-runtime
  • sdl_sound-hg

SDL12-compat (https://hg.libsdl.org/sdl12-compat) is a library in development as a drop-in replacement for the legacy SDL1.2 that translated everything to SDL2, read https://www.gamingonlinux.com/articles/ryan-gordon-is-re-working-sdl12-compat-a-tool-to-provide-sdl2-to-software-using-sdl12.13744. This offers all the nice features of SDL2 including Wayland support.

yay sdl2_compat12-git
yay lib32-sdl2_compat12-git

Wayland Misconceptions?

Interesting read https://drewdevault.com/2019/02/10/Wayland-misconceptions-debunked.html

Closed Bugs

Debugging

One of the big missing features of Arch Linux are packages with debug symbols in a separate repository that could be offered for installation after a crash so that the next crash could be analyzed, read bug report https://bugs.archlinux.org/task/38755.

Especially for KDE it is helpful to enable debugging symbols and information. Example output of a backtrace that is lacking helpful information:

Thread 1 "kwin_wayland" received signal SIGSEGV, Segmentation fault.
0x00007f7d56510bbc in ?? () from /usr/lib/libwayland-server.so.0
(gdb) bt
#0 0x00007f7d56510bbc in () at /usr/lib/libwayland-server.so.0
#1 0x00007f7d56515619 in () at /usr/lib/libwayland-server.so.0
#2 0x00007f7d56510cff in wl_client_destroy () at /usr/lib/libwayland-server.so.0
#3 0x00007f7d56510db9 in () at /usr/lib/libwayland-server.so.0
#4 0x00007f7d565129b2 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#5 0x00007f7d5f17b2bf in KWayland::Server::Display::Private::dispatch() () at /usr/lib/libKF5WaylandServer.so.5
#6 0x00007f7d5f99c9e1 in () at /usr/lib/libkwin.so.5
#7 0x00007f7d5f9986eb in () at /usr/lib/libkwin.so.5
#8 0x00007f7d5f998904 in () at /usr/lib/libkwin.so.5

The 2 question marks (??) show that you have a package without debug information. To see to which package the mentioned file belongs, run:

pacman -Qo /pathoffile/filename.so

Before compiling anything, you need to activate in Arch Linux the debugging symbols for new compiled packages first in the makepgk file. If the file belongs to Qt, then you can install the Qt5 debug packges via a separate repository without the need for compiling.

Makepkg

Enable debugging symbols for new compiled packages, for more details read https://wiki.archlinux.org/index.php/Debug_-_Getting_Traces. Basically you need to modify in the following file the OPTIONS= line, this will enable debug and disable strip:

nano /etc/makepkg.conf
...
#OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug)
OPTIONS=(!strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx debug)
...

Now you can go ahead and compile the required package with debug symbols.

Compile Arch Linux Package with Debug Symbols

 

  1. Download e.g. from the Arch Linux package website or repository the PKGBUILD file.
  2. run makepgk
  3. If you need to verfify the key, you can do it via: gpg –recv-keys ???????
  4. run makepgk –install

Mesa-git Debug packages

If you need debug packages, you can use them from mesa-git. Add the repository from mesa-git Mesa-Git and LLVM-svn and then install the required packages, e.g. for mesa it would be mesa-git-debug.

Qt5 Debug packages

The Qt5 debug symbol packages are provided via a separate repository, read https://wiki.archlinux.org/index.php/Unofficial_user_repositories#qt-debug

Add the repository to pacman.conf

[qt-debug]
Server = https://qutebrowser.org/qt-debug/$arch

Add the key via mentioned in the link above via

gpg --recv-keys ???????

Kwin debugging

https://community.kde.org/KWin/Debugging

KDE Plasma-Mobile (Bugs)

Plasma-Mobile is created by the KDE community to run on mobile phones by using bleeding edge technology like Wayland. It is based on Qt, Kwin and other great KDE technology for details read https://plasma-mobile.org/overview. As a base layer they use Ubuntu Mobile and a layer to Android drivers.

As I have a spare Nexus 5 still around I followed the instructions on https://plasma-mobile.org/nexus-5 to install Plasma-Mobile. Usually I would note the installation steps, but the short manual is really great and it worked well. As a preparation I only had to install Android tools:

pacman -Sy android-tools

I tried using instead of neon the arch platform, I was not sure about the difference as there is no further explanation. But I guess one is a Linux LXC container of Neon based on Ubuntu and the other Arch Linux. The arch based one was recently updated, but the installation script didn’t work, the phone was stuck in the boot screen with the Google logo for ages. But neon worked and started successful.

To update to a new testing release you probably have to wipe the phone by following the same instructions again, at least I’m not aware about a upgrade path.

Obviously there are a lot of bugs in Plasma-Mobile and is not really usable, but it is a good tech demo and I really hope to see more from the KDE Plasma-Mobile community! Actually the interface scales often quite bad, the phone or some apps can crash, the camera doesn’t work, the battery icon is not selecting the right battery, Firefox looks like a desktop app, …

Plasma-Mobile in a VM

For details how to run Plasma-Mobile inside of a virtual machine in Qemu read http://blog.bshah.in/2017/11/23/emulate-plasma-mobile. You can download a prebuild image from http://blog.bshah.in/2018/01/26/trying-out-plasma-mobile.