2024-12-23 16:27:08 +09:00
Add
2024-12-23 16:27:08 +09:00
Add
2024-12-23 16:27:08 +09:00

Duel head

Display

Configuration

Package

sudo apt install gnome-icon-theme weston=9.0.0-4ubuntu1

The package gnome-ichone-theme is used for weston shortcut icon.

UDev /etc/udev/rules.d/99-weston.rules

odroid@gnome-desktop:~$ cat /etc/udev/rules.d/99-weston.rules
ACTION=="add|change", SUBSYSTEM=="drm", DEVPATH=="/devices/platform/soc/fe000000.apb4/fe050000.spi/spi_master/spi0/spi0.0/drm/card1", ENV{ID_SEAT}="seat-weston"
#SUBSYSTEM=="graphics", ENV{ID_FOR_SEAT}=="graphics-platform-fe050000_spi-cs-0", ENV{ID_SEAT}="seat-weston"
ACTION=="add|change", SUBSYSTEM=="input", ENV{ID_FOR_SEAT}=="input-platform-fe050000_spi-cs-1", ENV{ID_SEAT}="seat-weston"
ACTION=="add|change", SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", OWNER="odroid", ENV{LIBINPUT_CALIBRATION_MATRIX}="1.366975 0.036143 -0.072346 -0.092563 -2.159515 1.082110"

The key is to set ID_SEAT on the device to be separated. In the example above, it was set to seat-weston.

Simply set ID_SEAT on at least one graphics output device and the input device you want to isolate. also, set the touch calibration values.

If ID_SEAT set, GDM and ubuntu desktop not use these devices. (They use seat0 - default)

weston.ini /etc/xdg/weston/weston.ini

odroid@gnome-desktop:~$ cat /etc/xdg/weston/weston.ini
[core]
require-input=false
locking=false
idle-time=0
#gbm-format=abgr8888
#repaint-window=16
background-color=0x00ffffff
background-type=scale
panel-position=none
startup-animation=none
close-animation=none

[shell]
background-color=0xff002244
clock-format=minutes
locking=false

[libinput]
touchscreen_calibrator=true
calibration_helper=/usr/bin/save-calibration

[launcher]
path=/usr/bin/weston-terminal
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png

[launcher]
path=/root/tc
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png

[launcher]
path=/usr/bin/weston-simple-egl
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png

#[input-method]
#path=/usr/libexec/weston-keyboard

#[xwayland]
#path=/usr/bin/Xwayland

#[autolaunch]
#path=/usr/share/odroid-kiosk-weston/weston-autostart.sh
#watch=true

[output]
name=UNNAMED-1
mode=320x240
ui-size=320x240
priority=9
seat=seat-weston

The key is seat=seat-weston in section [output]. Set the seat used for display.

In weston9, the SPI-1 device is recognized as UNNAMED-1, so we set it to UNNAMED-1.

Systemd

Socket /etc/systemd/system/weston.socket

odroid@gnome-desktop:~$ cat /etc/systemd/system/weston.socket
[Unit]
Description=Weston, a Wayland compositor

[Socket]
ListenStream=%t/weston-0

Service

odroid@gnome-desktop:~$ cat /etc/systemd/system/weston.service
[Unit]
# Make sure we are started after logins are permitted.
Description=Weston Wayland compositor startup
Requires=systemd-user-sessions.service
After=systemd-user-sessions.service
After=plymouth-quit-wait.service
Wants=dbus.socket
After=dbus.socket
Requires=weston.socket
RequiresMountsFor=/run
After=getty@tty7.service
Conflicts=getty@tty7.service plymouth-quit.service
Before=graphical.target
ConditionPathExists=/dev/tty0

[Service]
Type=notify
StandardInput=tty
UtmpIdentifier=tty7
User=root
#Group=odroid
EnvironmentFile=-/etc/default/weston
Environment="XDG_RUNTIME_DIR=/run/user/0"
Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus"
#Environment=XDG_SEAT=seat-weston
Environment=XDG_SESSION_CLASS=user
#Environment=XDG_SESSION_TYPE=wayland
#Environment=XDG_SESSION_DESKTOP=weston
#Environment=HOME=/home/odroid
#Environment=SEATD_VTBOUND=0

PAMName=login

TTYPath=/dev/tty7
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes

StandardInput=tty-fail
StandardOutput=journal
StandardError=journal

UtmpIdentifier=tty7
UtmpMode=user

ExecStart=/usr/bin/weston --log=/home/odroid/weston.log --seat=seat-weston --drm-device=card1 --socket=weston-0 --tty=7 --modules=systemd-notify.so

[Install]
WantedBy=graphical.target

In ExecStart...

SPI Display's DRM device name is card-1, so must set --drm-device=card1

Create a socket weston-0(weston.socket) and set it(--socket=weston-0) so that it does not overlap with sockets on the existing Ubuntu desktop.

TODO

  • Run weston without root
Description
No description provided
Readme 37 KiB
Languages
Shell 100%