IVI-Shell

From Tizen Wiki
Jump to: navigation, search

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.