[Interest] Qt 5.9 with Wayland IVI Extension

Johan Helsing johan.helsing at qt.io
Thu Dec 20 13:47:48 CET 2018

Hi Vikas,

it's a bit confusing, since there are multiple ivi protocols around (https://github.com/GENIVI/wayland-ivi-extension/tree/master/protocol)

In Qt, we support "ivi-application", which is, as Chris wrote, a dead simple protocol which just support surface identification and resizing.

With your command "LayerManagerControl set surface 1234 destination region 50 50 200 200", you are probably trying to use "ivi-controller", another ivi protocol, which allows positioning surfaces from another Wayland client.

"ivi-controller" is not implemented as a part of the Qt Wayland Compositor API, because we believe positioning and animating clients through QML in the compositor itself to be far more flexible and performant than letting it be handled by another client through "ivi-controller".

The reason that you can see ivi-controller in the documentation you linked, is that there is some support for it on the client side, through the "ivi-shell" shell integration plugin.



From: Interest <interest-bounces at qt-project.org> on behalf of Christian Gagneraud <chgans at gmail.com>
Sent: Wednesday, December 19, 2018 1:56:17 AM
To: Vikas.Awadhiya at ifm.com
Cc: interest
Subject: Re: [Interest] Qt 5.9 with Wayland IVI Extension

On Wed, 19 Dec 2018 at 00:01, Awadhiya, Vikas <Vikas.Awadhiya at ifm.com> wrote:
> Hi All,
> I run a simple Qml application in Wayland IVI Extension (Weston 5.0) with following console commands,
> user@$ layer-add-surfaces 1 10
> QT_WAYLAND_SHELL_INTEGRATION=ivi-shell ./simple –platform wayland
> Then my application become visible but I can’t set its positon or to say can’t reposition window and no matter what x and y value are set in Qml, application always open at (0,0) position.

The client application has no control over where it is placed and what
size it should have, that is the responsibility of the compositor.

> But there is way to position window by ILM console commends, so if size of window 200 x 200 and I want to position it at (50, 50) and surface id of app is 1234, then

What is ILM, what framework are you using, which compositor do you use, ...

> user@$ LayerManagerControl set surface 1234 destination region 50 50 200 200
> By this console commend window will be re-positioned to (50, 50)
> After doing all this things I have few questions,
> 1.         Does Qt5.9 supports Wayland IVI extension,

It seems: http://doc.qt.io/qt-5.9/qtwaylandcompositor-index.html

> 2.         If Qt support Wayland IVI extension then how to use inbuilt support and in that case window should repositioned according to x and y.

It depends on you compositor, can you give more details, are you using
geenevi, boot2qt or other specialised framework, or are you on your
own implementing a custom system?

> 3.         If Qt doesn’t support Wayland IVI extension, then what is Qt IVI ? And In that case what I have to develop to enable ILM interaction through Qt itself rather than using ILM console commends?

IVI, is a dead-simple wayland extension, it allows 2 things:
 - client identification
 - surface resizing.

That's all.

> 4.         Or what is correct way of doing Qt programming in Wayland IVI Extension.
> These is also a qt official page at https://doc.qt.io/qt-5.11/qtwaylandcompositor-attribution-wayland-ivi-extension-protocol.html
> What this page explains and how to use it?

It just tells you that IVI is not a Qt specific thing, but is supported by Qt.


PS: you should consider moving to Qt-5.12 if you can.
See http://blog.qt.io/blog/category/wayland/
Interest mailing list
Interest at qt-project.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181220/d8be482b/attachment.html>

More information about the Interest mailing list