2018-03-04 22:33:45 +01:00
|
|
|
# wlroots
|
2017-04-25 17:32:52 +02:00
|
|
|
|
2021-02-23 20:43:51 +01:00
|
|
|
Pluggable, composable, unopinionated modules for building a [Wayland]
|
2021-09-08 13:20:40 +02:00
|
|
|
compositor; or about 60,000 lines of code you were going to write anyway.
|
2017-04-25 17:32:52 +02:00
|
|
|
|
2018-04-13 03:29:45 +02:00
|
|
|
- wlroots provides backends that abstract the underlying display and input
|
2021-02-23 20:43:17 +01:00
|
|
|
hardware, including KMS/DRM, libinput, Wayland, X11, and headless backends,
|
|
|
|
plus any custom backends you choose to write, which can all be created or
|
|
|
|
destroyed at runtime and used in concert with each other.
|
2018-04-13 03:29:45 +02:00
|
|
|
- wlroots provides unopinionated, mostly standalone implementations of many
|
2021-02-23 20:43:17 +01:00
|
|
|
Wayland interfaces, both from wayland.xml and various protocol extensions.
|
|
|
|
We also promote the standardization of portable extensions across
|
|
|
|
many compositors.
|
2018-04-13 03:33:51 +02:00
|
|
|
- wlroots provides several powerful, standalone, and optional tools that
|
2021-02-23 20:43:17 +01:00
|
|
|
implement components common to many compositors, such as the arrangement of
|
|
|
|
outputs in physical space.
|
2018-04-13 03:29:45 +02:00
|
|
|
- wlroots provides an Xwayland abstraction that allows you to have excellent
|
2021-02-23 20:43:17 +01:00
|
|
|
Xwayland support without worrying about writing your own X11 window manager
|
|
|
|
on top of writing your compositor.
|
2018-04-13 03:29:45 +02:00
|
|
|
- wlroots provides a renderer abstraction that simple compositors can use to
|
2021-02-23 20:43:17 +01:00
|
|
|
avoid writing GL code directly, but which steps out of the way when your
|
|
|
|
needs demand custom rendering code.
|
2017-08-13 14:29:04 +02:00
|
|
|
|
2018-04-13 03:29:45 +02:00
|
|
|
wlroots implements a huge variety of Wayland compositor features and implements
|
|
|
|
them *right*, so you can focus on the features that make your compositor
|
|
|
|
unique. By using wlroots, you get high performance, excellent hardware
|
2018-05-03 22:43:54 +02:00
|
|
|
compatibility, broad support for many wayland interfaces, and comfortable
|
2018-04-13 03:29:45 +02:00
|
|
|
development tools - or any subset of these features you like, because all of
|
|
|
|
them work independently of one another and freely compose with anything you want
|
|
|
|
to implement yourself.
|
|
|
|
|
2021-04-24 12:43:07 +02:00
|
|
|
Check out our [wiki] to get started with wlroots. Join our IRC channel:
|
2023-02-13 14:21:58 +01:00
|
|
|
[#wlroots on Libera Chat].
|
2017-08-13 14:29:04 +02:00
|
|
|
|
2022-01-09 12:01:58 +01:00
|
|
|
A variety of [wrapper libraries] are available for using it with your favorite
|
|
|
|
programming language.
|
2017-06-06 16:54:53 +02:00
|
|
|
|
|
|
|
## Building
|
|
|
|
|
|
|
|
Install dependencies:
|
|
|
|
|
2018-04-13 03:29:45 +02:00
|
|
|
* meson
|
2017-06-06 16:54:53 +02:00
|
|
|
* wayland
|
|
|
|
* wayland-protocols
|
2021-10-26 15:04:48 +02:00
|
|
|
* EGL and GLESv2 (optional, for the GLES2 renderer)
|
|
|
|
* Vulkan loader, headers and glslang (optional, for the Vulkan renderer)
|
2018-04-13 03:29:45 +02:00
|
|
|
* libdrm
|
2022-05-29 14:09:06 +02:00
|
|
|
* GBM (optional, for the GBM allocator)
|
2021-10-26 15:04:48 +02:00
|
|
|
* libinput (optional, for the libinput backend)
|
2018-04-13 03:29:45 +02:00
|
|
|
* xkbcommon
|
2022-11-23 16:04:43 +01:00
|
|
|
* udev (optional, for the session)
|
2017-08-09 16:24:28 +02:00
|
|
|
* pixman
|
2022-11-23 16:04:43 +01:00
|
|
|
* [libseat] (optional, for the session)
|
2022-06-26 23:11:47 +02:00
|
|
|
* [hwdata] (optional, for the DRM backend)
|
2023-02-02 12:14:11 +01:00
|
|
|
* [libdisplay-info] (optional, for the DRM backend)
|
2022-08-18 19:17:33 +02:00
|
|
|
* [libliftoff] (optional, for the DRM backend)
|
2018-04-13 03:29:45 +02:00
|
|
|
|
|
|
|
If you choose to enable X11 support:
|
|
|
|
|
2021-02-04 17:31:12 +01:00
|
|
|
* xwayland (build-time only, optional at runtime)
|
2021-04-24 12:36:56 +02:00
|
|
|
* libxcb
|
|
|
|
* libxcb-render-util
|
|
|
|
* libxcb-wm
|
|
|
|
* libxcb-errors (optional, for improved error reporting)
|
2017-06-06 16:54:53 +02:00
|
|
|
|
|
|
|
Run these commands:
|
|
|
|
|
2023-02-22 11:01:04 +01:00
|
|
|
meson setup build/
|
2021-02-23 20:36:26 +01:00
|
|
|
ninja -C build/
|
2017-10-10 00:23:43 +02:00
|
|
|
|
2018-04-13 03:29:45 +02:00
|
|
|
Install like so:
|
2017-11-16 21:39:48 +01:00
|
|
|
|
2021-02-23 20:36:26 +01:00
|
|
|
sudo ninja -C build/ install
|
2017-11-16 21:39:48 +01:00
|
|
|
|
2018-04-13 03:29:45 +02:00
|
|
|
## Contributing
|
2017-11-16 21:39:48 +01:00
|
|
|
|
2021-02-23 20:43:51 +01:00
|
|
|
See [CONTRIBUTING.md].
|
|
|
|
|
|
|
|
[Wayland]: https://wayland.freedesktop.org/
|
2021-11-01 17:28:16 +01:00
|
|
|
[wiki]: https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Getting-started
|
2023-02-13 14:21:58 +01:00
|
|
|
[#wlroots on Libera Chat]: https://web.libera.chat/gamja/?channels=#wlroots
|
2021-12-03 11:45:57 +01:00
|
|
|
[wrapper libraries]: https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Projects-which-use-wlroots#wrapper-libraries
|
2021-04-17 09:48:26 +02:00
|
|
|
[libseat]: https://git.sr.ht/~kennylevinsen/seatd
|
2022-06-26 23:11:47 +02:00
|
|
|
[hwdata]: https://github.com/vcrhonek/hwdata
|
2023-02-02 12:14:11 +01:00
|
|
|
[libdisplay-info]: https://gitlab.freedesktop.org/emersion/libdisplay-info
|
2022-08-18 19:17:33 +02:00
|
|
|
[libliftoff]: https://gitlab.freedesktop.org/emersion/libliftoff
|
2021-11-01 17:28:16 +01:00
|
|
|
[CONTRIBUTING.md]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/CONTRIBUTING.md
|