blob: a1af635dd92b1a0bddbc6527fb83de5dd2c217af [file] [log] [blame]
Pekka Paalanen2abe4452015-07-14 13:05:34 +03001 Weston
2 ======
Kristian Høgsberga6f69992010-09-14 12:41:26 -04003
Kristian Høgsberg72e023c2012-07-20 12:26:23 -04004Weston is the reference implementation of a Wayland compositor, and a
5useful compositor in its own right. Weston has various backends that
6lets it run on Linux kernel modesetting and evdev input as well as
7under X11. Weston ships with a few example clients, from simple
8clients that demonstrate certain aspects of the protocol to more
9complete clients and a simplistic toolkit. There is also a quite
10capable terminal emulator (weston-terminal) and an toy/example desktop
11shell. Finally, weston also provides integration with the Xorg server
12and can pull X clients into the Wayland desktop and act as a X window
13manager.
14
Bryce W. Harringtonc74ab152014-02-03 21:37:06 +000015Refer to http://wayland.freedesktop.org/building.html for building
Kristian Høgsberg72e023c2012-07-20 12:26:23 -040016weston and its dependencies.
Bryce W. Harringtonc74ab152014-02-03 21:37:06 +000017
18The test suite can be invoked via `make check`; see
19http://wayland.freedesktop.org/testing.html for additional details.
Pekka Paalanen2abe4452015-07-14 13:05:34 +030020
Jon A. Cruz179c1862015-07-15 19:22:43 -070021Developer documentation can be built via `make doc`. Output will be in
22the build root under
23
24docs/developer/html/index.html
25docs/tools/html/index.html
26
Pekka Paalanen2abe4452015-07-14 13:05:34 +030027
28
29 Libweston
30 =========
31
32Libweston is an effort to separate the re-usable parts of Weston into
33a library. Libweston provides most of the boring and tedious bits of
34correctly implementing core Wayland protocols and interfacing with
35input and output systems, so that people who just want to write a new
36"Wayland window manager" (WM) or a small desktop environment (DE) can
37focus on the WM part.
38
39Libweston was first introduced in Weston 1.9, and is expected to
40continue evolving through many Weston releases before it achieves a
41stable API and feature completeness.
42
43
Emil Velikov2d01e912016-07-04 15:23:50 +010044API/ABI (in)stability and parallel installability
45-------------------------------------------------
Pekka Paalanen2abe4452015-07-14 13:05:34 +030046
47As libweston's API surface is huge, it is impossible to get it right
Emil Velikov2d01e912016-07-04 15:23:50 +010048in one go. Therefore developers reserve the right to break the API/ABI
Pekka Paalanen2abe4452015-07-14 13:05:34 +030049between every 1.x.0 Weston release (minor version bumps), just like
50Weston's plugin API does. For git snapshots of the master branch, the
Emil Velikov2d01e912016-07-04 15:23:50 +010051API/ABI can break any time without warning or version bump.
Pekka Paalanen2abe4452015-07-14 13:05:34 +030052
53Libweston API or ABI will not be broken between Weston's stable
54releases 1.x.0 and 1.x.y, where y < 90.
55
Emil Velikov2d01e912016-07-04 15:23:50 +010056To make things tolerable for libweston users despite API/ABI breakages,
Pekka Paalanen2abe4452015-07-14 13:05:34 +030057libweston is designed to be perfectly parallel-installable. An
Emil Velikov2d01e912016-07-04 15:23:50 +010058API/ABI-version is defined for libweston, and it is bumped for releases as
59needed. Different non-backward compatible ABI versions of libweston can be
60installed in parallel, so that external projects can easily depend on a
61particular ABI-version. Thus they do not have to fight over which ABI-version
62is installed in a user's system. This allows a user to install many
Pekka Paalanen2abe4452015-07-14 13:05:34 +030063different compositors each requiring a different libweston ABI-version
64without tricks or conflicts.
65
66Note, that versions of Weston itself will not be parallel-installable,
67only libweston is.
68
69For more information about parallel installability, see
70http://ometer.com/parallel.html
71
72
73Libweston design goals
74----------------------
75
Emil Velikov99ac6232016-07-04 15:23:49 +010076The high-level goal of libweston is to decouple the compositor from
77the shell implementation (what used to be shell plugins).
Pekka Paalanen2abe4452015-07-14 13:05:34 +030078
Emil Velikov99ac6232016-07-04 15:23:49 +010079Thus, instead of launching 'weston' with various arguments to choose the
Bryce Harrington585eef32016-07-06 14:50:15 -070080shell, one would launch the shell itself, e.g. 'weston-desktop',
81'weston-ivi', 'orbital', etc. The main executable (the hosting program)
Emil Velikov99ac6232016-07-04 15:23:49 +010082will implement the shell, while libweston will be used for a fundamental
83compositor implementation.
84
85Libweston is also intended for use by other project developers who want
86to create new "Wayland WMs".
Pekka Paalanen2abe4452015-07-14 13:05:34 +030087
88Details:
89
90- All configuration and user interfaces will be outside of libweston.
91 This includes command line parsing, configuration files, and runtime
92 (graphical) UI.
93
94- The hosting program (main executable) will be in full control of all
95 libweston options. Libweston should not have user settable options
96 that would work behind the hosting program's back, except perhaps
97 debugging features and such.
98
99- Signal handling will be outside of libweston.
100
101- Child process execution and management will be outside of libweston.
102
103- The different backends (drm, fbdev, x11, etc) will be an internal
104 detail of libweston. Libweston will not support third party
105 backends. However, hosting programs need to handle
106 backend-specific configuration due to differences in behaviour and
107 available features.
108
109- Renderers will be libweston internal details too, though again the
110 hosting program may affect the choice of renderer if the backend
111 allows, and maybe set renderer-specific options.
112
113- plugin design ???
114
115- xwayland ???
116
Pekka Paalanen58f98c92016-06-03 16:45:21 +0300117- weston-launch is still with libweston even though it can only launch
118 Weston and nothing else. We would like to allow it to launch any compositor,
119 but since it gives by design root access to input devices and DRM, how can
120 we restrict it to intended programs?
121
Pekka Paalanen2abe4452015-07-14 13:05:34 +0300122There are still many more details to be decided.
123
124
125For packagers
126-------------
127
128Always build Weston with --with-cairo=image.
129
130The Weston project is (will be) intended to be split into several
131binary packages, each with its own dependencies. The maximal split
132would be roughly like this:
133
134- libweston (minimal dependencies):
135 + headless backend
136 + wayland backend
137
138- gl-renderer (depends on GL libs etc.)
139
140- drm-backend (depends on libdrm, libgbm, libudev, libinput, ...)
141
142- x11-backend (depends of X11/xcb libs)
143
144- xwayland (depends on X11/xcb libs)
145
Pekka Paalanen2abe4452015-07-14 13:05:34 +0300146- fbdev-backend (depends on libudev...)
147
148- rdp-backend (depends on freerdp)
Pekka Paalanen2abe4452015-07-14 13:05:34 +0300149
150- weston (the executable, not parallel-installable):
151 + desktop shell
152 + ivi-shell
153 + fullscreen shell
154 + weston-info, weston-terminal, etc. we install by default
Pekka Paalanen58f98c92016-06-03 16:45:21 +0300155 + screen-share
Pekka Paalanen2abe4452015-07-14 13:05:34 +0300156
157- weston demos (not parallel-installable)
158 + weston-simple-* programs
159 + possibly all the programs we build but do not install by
160 default
161
162- and possibly more...
163
Emil Velikov2d01e912016-07-04 15:23:50 +0100164Everything should be parallel-installable across libweston major
165ABI-versions (libweston-1.so, libweston-2.so, etc.), except those
166explicitly mentioned.
Pekka Paalanen2abe4452015-07-14 13:05:34 +0300167
168Weston's build may not sanely allow this yet, but this is the
169intention.