Desktop mit Wayland und Weston

Gute, einführende Dokumente sind hier zu finden:

Installation

apt-get update && apt-get install weston
...
root@ubuntu:~# dpkg -L weston | grep bin
/usr/bin
/usr/bin/wcap-decode
/usr/bin/weston
/usr/bin/weston-calibrator
/usr/bin/weston-clickdot
/usr/bin/weston-cliptest
/usr/bin/weston-confine
/usr/bin/weston-content_protection
/usr/bin/weston-debug
/usr/bin/weston-dnd
/usr/bin/weston-editor
/usr/bin/weston-eventdemo
/usr/bin/weston-flower
/usr/bin/weston-fullscreen
/usr/bin/weston-image
/usr/bin/weston-info
/usr/bin/weston-launch
/usr/bin/weston-multi-resource
/usr/bin/weston-presentation-shm
/usr/bin/weston-resizor
/usr/bin/weston-scaler
/usr/bin/weston-screenshooter
/usr/bin/weston-simple-damage
/usr/bin/weston-simple-dmabuf-egl
/usr/bin/weston-simple-dmabuf-v4l
/usr/bin/weston-simple-egl
/usr/bin/weston-simple-shm
/usr/bin/weston-simple-touch
/usr/bin/weston-smoke
/usr/bin/weston-stacking
/usr/bin/weston-subsurfaces
/usr/bin/weston-terminal
/usr/bin/weston-touch-calibrator
/usr/bin/weston-transformed
/usr/share/man/man7/weston-bindings.7.gz
root@ubuntu:~#

Nun bitte als einfacher Nutzer ‚tux‘ direkt an der Maschine an einer virtuellen Konsole (z.B. mit STRG-ALT-F1 zu erreichen) einloggen und ‚weston-launch‘ eingeben.

Wir erleben nun, dass sich eine einfache grafische Oberfläche aufbaut, in der es am oberen Rand ein Panel gibt, über das ein Terminal geöffnet werden kann (= ‚weston-terminal‘).

Nun geben wir ein paar von Xorg her bekannte Kommandos ein, die hier allerdings scheitern werden, weil sie einen klassischen X-Server benötigen, der hier aber nicht läuft:

  • setxkbmap de (weil es eben keine DISPLAY-Variable mehr gibt, wir müssen vorerst bei US-Tastaturbelegung bleiben)

  • xrandr -s 1024x768 (Grafikauflösung setzen)

  • apt-get install xterm und als User DISPLAY=:0.0 xterm starten wollen, geht ebenfalls nicht!

  • Starten lassen sich aber weston-flower, weston-smoke, weston-editor, … weston-*

Eine einfache Weston-Config erstellen

Sofern sich die Anwendungen nicht schon automatisch auftun, sind diese Variablen zu setzen:

export GDK_BACKEND=wayland
export QT_QPA_PLATFORM=wayland-egl

Hinterlegt werden kann das Ganze hier (ACHTUNG: andere QT- und GDK-Variablen können sich hinderlich auswirken!):

artix-Linux:~$ cat /etc/environment
#QT_STYLE_OVERRIDE=gtk2
#QT_QPA_PLATFORMTHEME=gtk2
GDK_BACKEND=wayland
QT_QPA_PLATFORM=wayland-egl

Im allereinfachsten Falle soll nur für das Tastaturlayout ‚de‘ aktiviert werden; die neu zu erstellende Datei ~/.config/weston.ini schaut dazu so aus:

[core]
backend=drm-backend.so

[keyboard]
keymap_layout=de

Um die Einstellungen zu testen, starten wir die Oberfläche als User von einem virtuellen Terminal aus mittels weston-launch, zum beenden geben wir später einfach killall weston-launch ein.

Nun bitte ein zweites Weston-Terminal starten und testen, ob wir wie üblich mit ALT-TAB zwischen den beiden Fenstern umschalten können; - nein: wir müssen vorerst WIN-TAB verwenden! Dies ist später wieder dank ‚binding-modifier=alt‘ im Abschnitt ‚[shell]‘ möglich.

Wir installieren nun Xwayland und weitere X-Apps, einen speziellen X-Server, der als Kompatibilitätsschicht dient.

root@ubuntu:~# apt-get install xwayland midori terminator
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen....
.......
root@ubuntu:~#
root@ubuntu:~# exit
Abgemeldet
tux@ubuntu:~$

Und nun noch einmal die weston.ini erweitern: vi ~/.config/weston.ini, so dass sie dann so aussieht:

tux@ubuntu:~$ cat .config/weston.ini
[core]
backend=drm-backend.so
xwayland=true

[keyboard]
keymap_layout=de

[xwayland]
path=/usr/bin/Xwayland

[shell]
type=desktop-shell.so
#background-image=/usr/share/lxqt/themes/dark/wallpaper.png
background-color=0xff002200
panel-color=0x55550000
locking=true
animation=zoom
binding-modifier=alt
num-workspaces=4

[launcher]
path=/usr/bin/midori
#icon=/home/tux/Bilder/falkon-32.png

[launcher]
path=/usr/bin/weston-terminal
#icon=/home/tux/Bilder/terminator-32.png
tux@ubuntu:~$

Nach killall weston und dem Wiederstarten mit ‚weston-launch‘ als einfacher Nutzer:

tux@ubuntu:~$ pgrep -alfi wayland
tux@ubuntu:~$
tux@ubuntu:~$ pgrep -alfi weston
4630 weston
4631 /usr/lib/x86_64-linux-gnu/weston-keyboard
4632 /usr/lib/x86_64-linux-gnu/weston-desktop-shell
4633 /usr/bin/weston-terminal
tux@ubuntu:~$
Nach dem Starten eine X11-Anwendung 'midori &':
tux@ubuntu:~$ pgrep -alfi weston
4630 weston
4631 /usr/lib/x86_64-linux-gnu/weston-keyboard
4632 /usr/lib/x86_64-linux-gnu/weston-desktop-shell
4633 /usr/bin/weston-terminal
tux@ubuntu:~$
tux@ubuntu:~$ pgrep -alfi wayland
tux@ubuntu:~$
tux@ubuntu:~$ pgrep -alfi mido
4643 midori
tux@ubuntu:~$
tux@ubuntu:~$ su -
Passwort:
root@ubuntu:~#
root@ubuntu:~# ps aux | grep -i wayland
root        4747  0.0  0.0  17684   728 pts/0    S+   14:58   0:00 grep --color=auto -i wayland
root@ubuntu:~#
root@ubuntu:~# ps aux | grep -i mido
tux         4643  0.6  8.0 102642212 105592 pts/1 Sl  14:56   0:00 midori
root        4749  0.0  0.0  17684   724 pts/0    S+   14:58   0:00 grep --color=auto -i mido
root@ubuntu:~#
root@ubuntu:~# ps aux | grep -i weston
tux         4630  0.8  6.0 163724 79880 tty2     S+   14:54   0:02 weston
tux         4631  0.0  0.8  23368 11784 tty2     S+   14:54   0:00 /usr/lib/x86_64-linux-gnu/weston-keyboard
tux         4632  0.0  0.8  22956 11508 tty2     S+   14:54   0:00 /usr/lib/x86_64-linux-gnu/weston-desktop-shell
tux         4633  0.0  1.2  42048 16888 ?        Ss   14:54   0:00 /usr/bin/weston-terminal
root        4751  0.0  0.0  17684   724 pts/0    S+   14:58   0:00 grep --color=auto -i weston
root@ubuntu:~#
root@ubuntu:~#


root@ubuntu:~#
root@ubuntu:~# ## Zu den Icons:
root@ubuntu:~# ls -l /usr/share/pixmaps/*term*
-rw-r--r-- 1 root root 5842 Feb 26  2020 /usr/share/pixmaps/filled-xterm_32x32.xpm
-rw-r--r-- 1 root root 8802 Feb 26  2020 /usr/share/pixmaps/filled-xterm_48x48.xpm
-rw-r--r-- 1 root root 4528 Feb 26  2020 /usr/share/pixmaps/mini.xterm_32x32.xpm
-rw-r--r-- 1 root root 8272 Feb 26  2020 /usr/share/pixmaps/mini.xterm_48x48.xpm
-rw-r--r-- 1 root root 2548 Feb 26  2017 /usr/share/pixmaps/terminator.png
-rw-r--r-- 1 root root 1239 Feb 26  2020 /usr/share/pixmaps/xterm_32x32.xpm
-rw-r--r-- 1 root root 2583 Feb 26  2020 /usr/share/pixmaps/xterm_48x48.xpm
-rw-r--r-- 1 root root 2116 Feb 26  2020 /usr/share/pixmaps/xterm-color_32x32.xpm
-rw-r--r-- 1 root root 2710 Feb 26  2020 /usr/share/pixmaps/xterm-color_48x48.xpm
root@ubuntu:~#
root@ubuntu:~# ls -l /usr/share/pixmaps/*midor*
ls: Zugriff auf '/usr/share/pixmaps/*midor*' nicht möglich: Datei oder Verzeichnis nicht gefunden
root@ubuntu:~#

root@ubuntu:~#
root@ubuntu:~# find /usr -name "*midori*.png"
/usr/share/icons/hicolor/16x16/apps/midori.png
/usr/share/icons/hicolor/22x22/apps/midori.png
root@ubuntu:~#
root@ubuntu:~# find /usr -name "*weston*.png"
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# ### Nach dem Einbinden von vorgefundenen Icons:
root@ubuntu:~# cat /home/tux/.config/weston.ini
[core]
backend=drm-backend.so
xwayland=true

[keyboard]
keymap_layout=de

[xwayland]
path=/usr/bin/Xwayland

[shell]
type=desktop-shell.so
#background-image=/usr/share/lxqt/themes/dark/wallpaper.png
background-color=0xff002200
panel-color=0x55550000
locking=true
animation=zoom
binding-modifier=alt
num-workspaces=4

[launcher]
path=/usr/bin/midori
icon=/usr/share/icons/hicolor/16x16/apps/midori.png

[launcher]
path=/usr/bin/weston-terminal
icon=/usr/share/icons/gnome/16x16/apps/gnome-terminal.png
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# # apt-get install imagemagick
root@ubuntu:~# identify /usr/share/backgrounds/hardy_wallpaper_uhd.png
/usr/share/backgrounds/hardy_wallpaper_uhd.png PNG 3840x2400 3840x2400+0+0 8-bit sRGB 1.2997MiB 0.000u 0:00.000
root@ubuntu:~#
root@ubuntu:~# vi /home/tux/.config/weston.ini
root@ubuntu:~#
root@ubuntu:~# cat /home/tux/.config/weston.ini
[core]
backend=drm-backend.so
xwayland=true

[keyboard]
keymap_layout=de

[xwayland]
path=/usr/bin/Xwayland

[shell]
type=desktop-shell.so
background-image=/usr/share/backgrounds/hardy_wallpaper_uhd.png
background-color=0xff002200
panel-color=0x55550000
locking=true
animation=zoom
binding-modifier=alt
num-workspaces=4

[launcher]
path=/usr/bin/midori
icon=/usr/share/icons/hicolor/16x16/apps/midori.png

[launcher]
path=/usr/bin/weston-terminal
icon=/usr/share/icons/gnome/16x16/apps/gnome-terminal.png
root@ubuntu:~#
root@ubuntu:~#

tux@ubuntu:~$
tux@ubuntu:~$
tux@ubuntu:~$ ## Die Auflösung lässt sich im Abschnitt '[output]' setzen, dazu muss aber mittels 'weston-info' der Name der GFX-Card
ermittelt werden:
tux@ubuntu:~$ weston-info | grep -A1 output | grep name | head -2
interface: 'zxdg_output_manager_v1', version: 2, name: 4
        name: 'Virtual-1'
tux@ubuntu:~$
tux@ubuntu:~$ grep -C2 'Virtual-1' ~/.config/weston.ini

[output]
name=Virtual-1
mode=1280x768
#transform=90
tux@ubuntu:~$

Insgesamt sieht die Datei jetzt so aus:

tux@ubuntu:~$ cat ~/.config/weston.ini
[core]
backend=drm-backend.so
xwayland=true

[keyboard]
keymap_layout=de

[xwayland]
path=/usr/bin/Xwayland

[shell]
type=desktop-shell.so
#background-image=/home/tux/Bilder/Linux-with-IC-Chips-Box-HD-Wallpaper.jpg
background-image=/home/tux/Bilder/Linux-with-IC-Chips-Box-HD-Wallpaper_1280x768.jpg
background-color=0xff002200
panel-color=0x55550000
locking=true
animation=zoom
binding-modifier=alt
num-workspaces=4

[output]
name=Virtual-1
mode=1280x768
#transform=90

[launcher]
path=/usr/bin/midori
icon=/usr/share/icons/hicolor/16x16/apps/midori.png

[launcher]
path=/usr/bin/weston-terminal
icon=/usr/share/icons/gnome/16x16/apps/gnome-terminal.png

Installation unter openSUSE Leap:

zypper install weston xorg-x11-server-wayland openbox xinit xterm xorg-x11-server

Unter Debian und dessen Derivaten:

apt-get install weston xwayland xterm midori terminator

In einem ersten Test kann ohne eine spezielle Konfiguration von der Konsole aus einfach weston gestartet werden.

Besser ist es aber, die Konfigurationsdatei ~/.config/weston.ini anzulegen und ihr folgenden Inhalt zu geben:

[core]
backend=drm-backend.so
xwayland=true

[xwayland]
path=/usr/bin/Xwayland

[keyboard]
keymap_layout=de

[shell]
type=desktop-shell.so
background-image=/usr/share/lxqt/themes/dark/wallpaper.png
background-color=0xff002200
panel-color=0x55550000
locking=true
animation=zoom
binding-modifier=alt
num-workspaces=4

[launcher]
path=/usr/bin/falkon
icon=/home/tux/Bilder/falkon-32.png

[launcher]
path=/usr/bin/weston-terminal
icon=/home/tux/Bilder/terminator-32.png

Pfade und Namen der Bilder/Icons müssen natürlich angepasst werden, als Bildgröße der Icons sind 32 Bits oder kleiner geeignet. Vorhandene Icons lassen sich auf einfache Weise verkleinern (Voraussetzung ist, dass das Paket „imagemagick“ installiert wurde):

convert -resize 32x32 /usr/share/pixmaps/falkon.png ~/Bilder/falkon-32.png
convert -resize 32x32 /usr/share/pixmaps/terminator.png ~/Bilder/terminator-32.png