Weston IVI-Shell provides a shell plugin for the Weston compositor, implementing the GENIVI API for In-Vehicle Infotainment.
Project site : http://cgit.freedesktop.org/wayland/weston/tree/ivi-shell
IVI-Shell is always built when creating an "agl-demo-platform" image, but will only start automatically if you add the following lines to your “conf/local.conf” file :
IMAGE_INSTALL_append = " \ weston-ivi-shell-config \ "
or, in case the image has already been built, if you overwrite its “/etc/xdg/weston/weston.ini” file with this one. Or:
[core] shell=ivi-shell.so backend=drm-backend.so [ivi-shell] ivi-module=ivi-controller.so
If everything went fine, you should see a display similar to this one.
Note also that you might have to turn the screen adding the following lines to “/etc/xdg/weston/weston.ini”
[output] name=HDMI-A-1 transform=270
IVI-Shell provides 2 protocols :
* ivi-application : client-side protocol, needed for client applications to be actually shown. Some toolkits/frameworks supporting it currently :
* ivi-hmi-controller : server-side protocol, allowing customization of shell behavior and look and feel.
If we wanted to use wl_shell, we would create a wl_shell_surface on top of a wl_surface :
struct wl_shell_surface *shell_surface; shell_surface = wl_shell_get_shell_surface (wl_shell, wl_surface);
Similarly, to use xdg_shell, we would create a xdg_surface on top of a wl_surface :
struct xdg_surface *xdg_surface; xdg_surface = xdg_shell_get_xdg_surface (xdg_shell, wl_surface);
IVI-Shell supports creating an ivi_surface on top of a wl_surface, along with a unique ID :
struct ivi_surface *ivi_surface; uint32_t id; // Global numeral ID identifying a managed surface ivi_surface = ivi_application_surface_create(id, wl_surface);
The wayland-ivi-extension project brings additional features to IVI-Shell, including :
get_native_handle() native_handle
$ IVISurfaceCreator --help Usage: IVISurfaceCreator <Process ID> <Window Title> <IVI-Surface ID>
Screeshot here.
Additional information regarding wayland-ivi-extension, most notably detailed design and HOWTO, can be found on the GENIVI wiki : https://at.projects.genivi.org/wiki/display/PROJ/Wayland+IVI+Extension+Design