IVI-Shell
Contents
Introduction
IVI-Shell is an upstream project which intends to implement a Weston interface mapping the GENIVI API for In-Vehicle Infotainment.
The ICO interface explicitly depends on IVI-Shell.
Screenshots and installation instructions
Here are :
- a video of IVI-Shell running with a few applications launched.
- is a tutorial on how to run it by building from source.
Tizen repository (weston-ivi-shell) specifics
Currently, the upstream repository, and the repository found in Tizen ("weston-ivi-shell") differ in that the Tizen repository :
- requires the "genivi-shell" package for its "-config" sub-package ;
- has adaptations needed to run ICO.
API comparison (IVI-Shell vs. XDG-Shell)
("NO EQUIVALENT, BUT CLIENT-MANAGED" means that standard clients will be able to do the same without the shell. For example, regarding opacity, a Wayland client using GL can very well modify its transparency gradient itself. The shell only allows to do it from an external POV)
ivi_layout_surfaceSetVisibility(surface, 0/1); xdg_surface_set_minimized(surface) / xdg_surface_present(surface); ivi_layout_surfaceSetOpacity (surface, 0.x); NO EQUIVALENT, BUT CLIENT-MANAGED ivi_layout_surfaceSetDimension (surface, width, height)); NO EQUIVALENT, BUT CLIENT-MANAGED ivi_layout_surfaceSetPosition (surface, x, y); NOT AVAILABLE ivi_layout_surfaceSetOrientation (surface, 0/1/2...); NO EQUIVALENT, BUT CLIENT-MANAGED ivi_layout_layerSetRenderOrder (layer, surface, order); NOT AVAILABLE ivi_layout_SetKeyboardFocusOn (surface); NOT AVAILABLE ivi_layout_GetKeyboardFocusSurfaceId (&id); NOT AVAILABLE ivi_layout_screenAddLayer/layerAddSurface (); NOT AVAILABLE, EXCEPT FOR FULLSCREEN SURFACES ( xdg_surface_set_output (surface, output); xdg_surface_set_fullscreen (surface); )
Clients support and implementation plans
IVI-Shell does not support "wl_shell" nor "xdg-shell" (the "desktop" shell protocols found in upstream Weston) but a totally different one, named "ivi-application".
This means that standard Wayland clients cannot be displayed on IVI-Shell, unless they somehow use the IVI-Shell protocol. The package itself provides demo clients, but incompatible clients are more common.
Here are 2 possible ways to overcome this :
- implement the IVI-Shell protocol directly in clients and toolkits ;
- wrap the "xdg-shell" in IVI-Shell (standard clients having XDG-Shell support will behave normally under IVI-Shell, as long as they use supported API calls).
The 2nd solution seems to be the more realistic one, in terms of both implementation and ecosystem constraints.