Update README.md
This commit is contained in:
		
							parent
							
								
									bc0dc93e02
								
							
						
					
					
						commit
						26b993749d
					
				
							
								
								
									
										82
									
								
								README.md
								
								
								
								
							
							
						
						
									
										82
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -1,49 +1,97 @@
 | 
				
			||||||
# wlroots
 | 
					# wlroots
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pluggable, composable modules for building a
 | 
					Pluggable, composable, unopinionated modules for building a
 | 
				
			||||||
[Wayland](http://wayland.freedesktop.org/) compositor.
 | 
					[Wayland](http://wayland.freedesktop.org/) compositor; or about 40,000 lines of
 | 
				
			||||||
 | 
					code you were going to write anyway.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is a WIP: [status](https://github.com/swaywm/wlroots/issues/9)
 | 
					- wlroots provides backends that abstract the underlying display and input
 | 
				
			||||||
 | 
						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.
 | 
				
			||||||
 | 
					- wlroots provides unopinionated, mostly standalone implementations of many
 | 
				
			||||||
 | 
						Wayland interfaces, both from wayland.xml and various protocol extensions.
 | 
				
			||||||
 | 
						We also promote the standardization of portable extensions across
 | 
				
			||||||
 | 
						many compositors.
 | 
				
			||||||
 | 
					- wlroots provides an Xwayland abstraction that allows you to have excellent
 | 
				
			||||||
 | 
						Xwayland support without worrying about writing your own X11 window manager
 | 
				
			||||||
 | 
						on top of writing your compositor.
 | 
				
			||||||
 | 
					- wlroots provides a renderer abstraction that simple compositors can use to
 | 
				
			||||||
 | 
						avoid writing GL code directly, but which steps out of the way when your
 | 
				
			||||||
 | 
						needs demand custom rendering code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Contributing
 | 
					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
 | 
				
			||||||
 | 
					compatability, broad support for many wayland interfaces, and comfortable
 | 
				
			||||||
 | 
					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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See [CONTRIBUTING.md](https://github.com/swaywm/wlroots/blob/master/CONTRIBUTING.md)
 | 
					**Status**: prior to 1.0 the API is not stable, but we've done most of the work
 | 
				
			||||||
 | 
					and various projects are using wlroots to build Wayland compositors with.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wlroots is developed under the direction of the
 | 
				
			||||||
 | 
					[sway](https://github.com/swaywm/sway) project. A variety of wrapper libraries
 | 
				
			||||||
 | 
					[are available](https://github.com/swaywm) for using it with your favorite
 | 
				
			||||||
 | 
					programming language.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Building
 | 
					## Building
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Install dependencies:
 | 
					Install dependencies:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* meson
 | 
				
			||||||
* wayland
 | 
					* wayland
 | 
				
			||||||
* wayland-protocols
 | 
					* wayland-protocols
 | 
				
			||||||
* EGL
 | 
					* EGL
 | 
				
			||||||
* GLESv2
 | 
					* GLESv2
 | 
				
			||||||
* DRM
 | 
					* libdrm
 | 
				
			||||||
* GBM
 | 
					* GBM
 | 
				
			||||||
* libinput
 | 
					* libinput
 | 
				
			||||||
 | 
					* xkbcommon
 | 
				
			||||||
* udev
 | 
					* udev
 | 
				
			||||||
* pixman
 | 
					* pixman
 | 
				
			||||||
* systemd (optional, for logind support)
 | 
					* systemd (optional, for logind support)
 | 
				
			||||||
* elogind (optional, for logind support on systems without systemd)
 | 
					* elogind (optional, for logind support on systems without systemd)
 | 
				
			||||||
* libcap (optional, for capability support)
 | 
					* libcap (optional, for capability support)
 | 
				
			||||||
* asciidoc (optional, for man pages)
 | 
					
 | 
				
			||||||
 | 
					If you choose to enable X11 support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* xkb
 | 
				
			||||||
 | 
					* xkb-composite
 | 
				
			||||||
 | 
					* xkb-xfixes
 | 
				
			||||||
 | 
					* xkb-image
 | 
				
			||||||
 | 
					* xkb-render
 | 
				
			||||||
 | 
					* x11-xcb
 | 
				
			||||||
 | 
					* xcb-errors (optional, for improved error reporting)
 | 
				
			||||||
 | 
					* x11-icccm (optional, for improved Xwayland introspection)
 | 
				
			||||||
 | 
					* xkb-xcb (optional, for improved keyboard handling on the X11 backend)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Run these commands:
 | 
					Run these commands:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    meson build
 | 
					    meson build
 | 
				
			||||||
    ninja -C build
 | 
					    ninja -C build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(On FreeBSD, you need to pass an extra flag to prevent a linking error: `meson build -D b_lundef=false`)
 | 
					On FreeBSD, you need to pass an extra flag to prevent a linking error:
 | 
				
			||||||
 | 
					`meson build -D b_lundef=false`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Running the Reference Compositor
 | 
					Install like so:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wlroots comes with a reference compositor called rootston that demonstrates the
 | 
						sudo ninja -C build install
 | 
				
			||||||
features of the library.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
After building, run rootston from a terminal or VT with:
 | 
					## Running the test compositor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ./build/rootston/rootston
 | 
					wlroots comes with a test compositor called rootston, which demonstrates the
 | 
				
			||||||
 | 
					features of the library and is used as a testbed for the development of the
 | 
				
			||||||
 | 
					library. It may also be useful as a reference for understanding how to use
 | 
				
			||||||
 | 
					various wlroots features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Now you can run windows in the compositor from the command line or by
 | 
					If you followed the build instructions above the rootston executable can be
 | 
				
			||||||
configuring bindings in your
 | 
					found at `./build/rootston/rootston`. To use it, refer to the example config at
 | 
				
			||||||
[`rootston.ini`](https://github.com/swaywm/wlroots/blob/master/rootston/rootston.ini.example)
 | 
					[./rootston/rootston.ini.example](https://github.com/swaywm/wlroots/blob/master/rootston/rootston.ini.example)
 | 
				
			||||||
file.
 | 
					and place a config file of your own at `rootston.ini` in the working directory
 | 
				
			||||||
 | 
					(or in an arbitrary location via `rootston -C`). Other options are available,
 | 
				
			||||||
 | 
					refer to `rootston -h`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Contributing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See [CONTRIBUTING.md](https://github.com/swaywm/wlroots/blob/master/CONTRIBUTING.md).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue