-What is Wayland
-
-Wayland is a project to define a protocol for a compositor to talk to
-its clients as well as a library implementation of the protocol. The
-compositor can be a standalone display server running on Linux kernel
-modesetting and evdev input devices, an X applications, or a wayland
-client itself. The clients can be traditional appliactions, X servers
-(rootless or fullscreen) or other display servers.
-
-The wayland protocol is essentially only about input handling and
-buffer management. The compositor receives input events and forwards
-them to the relevant client. The clients creates buffers and renders
-into them and notifies the compositor when it needs to redraw. The
-protocol also handles drag and drop, selections, window management and
-other interactions that must go throught the compositor. However, the
-protocol does not handle rendering, which is one of the features that
-makes wayland so simple. All clients are expected to handle rendering
-themselves, typically through cairo or OpenGL.
-
-The wayland repository includes a compositor and a few clients, but
-both the compositor and clients are essentially test cases.
-
-
-Building Instructions
-
-The instructions below assume some familiarity with git and building
-and running experimental software. And be prepared that this project
-isn't at all useful right now, it's still very much a prototype. When
-the instructions suggest to clone a git repo, you can of course just
-add a remote and fetch instead, if you have a clone of that repo
-around already. I usually install all software I'm working on into
-$HOME/install, so that's what I'll use in the instructions below, but
-you can use your favorite directory of course or install over your
-system copy (pass --prefix=/usr --sysconfdir=/etc, generally).
-
-
-Modesetting
-
-At this point, kernel modesetting is upstream for Intel, AMD and
-nVidia chipsets. Most distributions ship with kernel modesetting
-enabled by default and will work with Wayland out of the box. The
-modesetting driver must also support the page flip ioctl, which only
-the intel driver does at this point.
-
-
-Building mesa
-
-Wayland uses the mesa EGL stack, and all extensions required to run
-EGL on KMS are now upstream on the master branch. The 7.9 release of
-mesa will have all these extensions, but for now you'll need to build
-mesa master:
-
- $ git clone git://anongit.freedesktop.org/mesa/mesa
- $ cd mesa
- $ ./configure --prefix=$HOME/install --enable-egl --enable-gles2
- $ make && make install
-
-If you're using an intel chipset, it's best to also pass
---disable-gallium to ./configure, since otherwise libEGL will try to
-load the gallium sw rasterizer before loading the Intel DRI driver.
-
-
-libxkbcommon
-
-Wayland needs libxkbcommon for translating evdev keycodes to keysyms.
-There's a couple of repos around, and we're trying to consolidate the
-development, but for wayland you'll need the repo from my get
-repository. For this you'll need development packages for xproto,
-kbproto and libX11.
-
- $ git clone git://people.freedesktop.org/~krh/libxkbcommon.git
- $ cd libxkbcommon/
- $ ./autogen.sh --prefix=$HOME/install
- $ make && make install
-
-
-cairo-gl
-
-The Waland clients render using cairo-gl, which is an experimental
-cairo backend. It has been available since cairo 1.10. Unless your
-distribution ships cairo with the gl backend enabled, you'll need to
-compile your own version of cairo:
-
- $ git clone git://anongit.freedesktop.org/cairo
- $ cd cairo
- $ ./autogen.sh --prefix=$HOME/install --enable-gl
- $ make && make install
-
-
-Wayland
-
-With mesa and libxkbcommon in place, we can checkout and build
-Wayland. Aside from mesa, Wayland needs development packages for
-gdk-pixbuf-2.0, libudev, libdrm, xcb-dri2, xcb-fixes (for X
-compositor) cairo-gl, glib-2.0, gdk-2.0 (for poppler) and
-poppler-glib:
-
- $ git clone git://people.freedesktop.org/~krh/wayland
- $ aclocal; autoconf; ./configure --prefix=$HOME/install
- $ make && make install
-
-Installing into a non-/usr prefix is fine, but the 70-wayland.rules
-udev rule file has to be installed in /etc/udev/rules.d. Once
-installed, either reboot or run
-
- $ sudo udevadm trigger --subsystem-match=drm --subsystem-match=input
-
-to make udev label the devices wayland will use.
-
-If DISPLAY is set, the wayland compositor will run under X in a window
-and take input from X. Otherwise it will run on the KMS framebuffer
-and take input from evdev devices. Pick a background image that you
-like and copy it to the Wayland source directory as background.jpg or
-use the -b command line option:
-
- $ ./wayland-system-compositor -b my-image.jpg
-
-To run clients, switch to a different VT and run the client from
-there. Or run it under X and start up the clients from a terminal
-window. There are a few demo clients available, but they are all
-pretty simple and mostly for testing specific features in the wayland
-protocol: 'terminal' is a simple terminal emulator, not very compliant
-at all, but works well enough for bash
-
- 'flower' moves a flower around the screen, testing the frame protocol
- 'gears' glxgears, but for wayland, currently broken
- 'image' loads the image files passed on the command line and shows them
-
- 'view' does the same for pdf files, but needs file URIs
- (file:///path/to/pdf)