Build with meson; portable wlroots fallback (pinned wrap) + README

This commit is contained in:
Andrew Hamilton 2026-08-09 12:46:14 +10:00
parent ea6fea80d7
commit 6b049debf0
5 changed files with 118 additions and 24 deletions

65
README.md Normal file
View file

@ -0,0 +1,65 @@
# tabbed-wlroots
A nested Wayland compositor (built on wlroots) that presents several
client apps as tabs in a single window on the host Wayland compositor.
Each command-line argument launches one tab.
## Building
The project builds with [Meson](https://mesonbuild.com/) + Ninja. On most
distributions the non-wlroots dependencies are available in the standard
repositories; `wlroots` is used from the system where one is installed, and
otherwise is fetched and built automatically from a pinned source tarball
(`subprojects/wlroots.wrap`).
```sh
meson setup build
meson compile -C build
```
The resulting binary is `build/tabbed-wlroots`.
### Debian / Ubuntu
```sh
sudo apt install build-essential meson ninja-build pkg-config \
libwayland-dev libwayland-bin wayland-protocols \
libwlroots-dev libxkbcommon-dev \
libegl1-mesa-dev libgles2-mesa-dev \
libpixman-1-dev libdisplay-info-dev libliftoff-dev libseat-dev
```
`libwlroots-dev` already satisfies the wlroots dependency on this platform.
### Arch
```sh
sudo pacman -S base-devel meson ninja pkgconf wayland wayland-protocols \
wlroots xkbcommon mesa pixman
```
### Fedora
```sh
sudo dnf install gcc meson ninja-build pkgconf-pkg-config \
wayland-devel wayland-protocols-devel wlroots-devel \
libxkbcommon-devel mesa-libEGL-devel mesa-libGLES-devel pixman-devel
```
### When the system wlroots dep is missing / the fallback can't find one
The Meson setup searches for `wlroots-0.19` then `wlroots`; if neither is
installed it builds the pinned 0.19.1 from `subprojects/wlroots.wrap`, which
only needs the wayland, wayland-protocols, xkbcommon and EGL/GLES2 dev
packages listed above. Optional wlroots features (Vulkan, X11, libinput,
etc.) are auto-detected and skipped when their build deps aren't present, so
a minimal install works too.
## Usage
```
tabbed-wlroots <prog> [prog...]
```
Each `<prog>` is one shell command; quote it when it takes arguments, e.g.
`tabbed-wlroots "foot -e htop" "firefox -no-remote"`.