Skip to main content

QtWS17 - Device Tailored Compositors with QtWayland, Andreas Cord-Landwehr, CLAAS E-Systems

In this talk, I will give an introduction into the QtWayland framework and its possible applications for automotive use-cases. The goal is to show how to use QtWayland to easily create an awesome user experiences by abstracting from the rather technical view of a window compositor developer but working with the mindset of a QtQuick developer, who mainly has user-interactions and design in their mind. User-friendly HMI is a key customer value when looking at today’s automotive industry. Let it be a car that provides features ranging from driving navigation to cinema-like entertainment for your kids at the back. Or let it be a fully equipped combine harvester where you want to control every tiny bit of the very complex machinery to reach an optimal efficiency. In any case, the user expectations are user-friendly interfaces that — despite of safety regulations — still look awesome. Moreover, from the complexity point of view, with having different applications encapsulated in their own processes for safety reasons, we are rapidly approaching the complexity of a full Linux desktop system. Wayland is today’s standard to compose windows on embedded Linux devices. In cars, one typically uses the automotive specific “IVI” protocol extension to talk to the compositor. This works well if you have a user interface with only limited window dynamics or animations, like a static display of windows from different processes (e.g. display consisting of a radio control window, a climate control window…). But if you want to add fancy window animations of if you have a certain complex workflow for your user interface in mind, the IVI protocol shows its limits. However, typically writing your own Wayland compositor is no option in such a case due to the amount of work and the introduced complexity and possible bugs. Since Qt 5.9, with the QtWayland Compositor API, Qt makes it almost trivial to create your own Wayland compositor. Even adding your own protocol extensions, for which your UX designers can add any fancy (QtQuick) animation you can dream of, is simple. In my talk, I will give an introduction into the QtWayland Compositor framework and show how to use it to create a Wayland compositor from scratch. I will focus on my own experience as an embedded device developer from using the framework in real-life automotive scenarios. My hands-on example will be a simple hypothetical kitchen-aid terminal application that features the following aspects: – Windows from different example applications (clock app, tea cooking timer app, egg cooking timer app) will be composed into a uniform UI by a QtWayland based Wayland compositor. – The compositor provides a custom protocol extension for alarming (“hey, your tea is ready!”). – The windows will have nice animations, actually you can handle them the same way as QtQuick items in the canvas of a QtQuick application. Attending the talk will provide you with the required knowledge to do all of the above on your own and specifically show that window handling in a QtWayland compositor “feels” the same like doing simple declarative QtQuick UI development. Further background to my talk can be found here: