%BOOK_ENTITIES; ]> Types of Compositors
System Compositor ties in with graphical boot hosts different types of session compositors lets us switch between multiple sessions (fast user switching, secure/personal desktop switching) multiseat linux implementation using libudev, egl, kms, evdev, cairo for fullscreen clients, the system compositor can reprogram the video scanout address to source from the client provided buffer.
Session Compositor nested under the system compositor. nesting is feasible because protocol is async, roundtrip would break nesting gnome-shell moblin compiz? kde compositor? text mode using vte rdp session fullscreen X session under wayland can run without system compositor, on the hw where it makes sense root window less X server, bridging X windows into a wayland session compositor
Embedding Compositor X11 lets clients embed windows from other clients, or lets client copy pixmap contents rendered by another client into their window. This is often used for applets in a panel, browser plugins and similar. Wayland doesn't directly allow this, but clients can communicate GEM buffer names out-of-band, for example, using d-bus or as command line arguments when the panel launches the applet. Another option is to use a nested wayland instance. For this, the wayland server will have to be a library that the host application links to. The host application will then pass the wayland server socket name to the embedded application, and will need to implement the wayland compositor interface. The host application composites the client surfaces as part of it's window, that is, in the web page or in the panel. The benefit of nesting the wayland server is that it provides the requests the embedded client needs to inform the host about buffer updates and a mechanism for forwarding input events from the host application. firefox embedding flash by being a special purpose compositor to the plugin