Using libweston with GTK/GDK

adlo adloconwy at gmail.com
Mon Jun 3 07:38:12 UTC 2019


> On 1 May 2019, at 10:34, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> 
> On Wed, 1 May 2019 03:24:04 +0100
> adlo <adloconwy at gmail.com> wrote:
> 
> it is all just the normal Wayland protocol exchange but with a new
> interface of your own design. I'm not sure if there is a really
> minimal example, but I'll list at least some.
> 
> One example of such private protocol extension is
> https://gitlab.freedesktop.org/wayland/weston/blob/master/protocol/weston-desktop-shell.xml
> 
> The server-side implementation of it is in shell.c and the
> entrypoint to that is
> https://gitlab.freedesktop.org/wayland/weston/blob/master/desktop-shell/shell.c#L5143
> 
>    wl_global_create(ec->wl_display,
>                 &weston_desktop_shell_interface, 1,
>                 shell, bind_desktop_shell)
> 
> which installs the protocol extension in the compositor. You can
> see everything about the implementation by following all callbacks
> that get registered, starting with bind_desktop_shell().
> 
> The privacy of the protocol extension, the installed wayland global
> really, is achieved in
> https://gitlab.freedesktop.org/wayland/weston/blob/master/desktop-shell/shell.c#L4366
> 
>    shell->child.client = weston_client_start(shell->compositor,
>                          shell->client);
> 
> which creates the Wayland connection before forking the child
> process and bind_desktop_shell() then verifying the client trying
> to bind to the global is the client that was forked.
> 
> 
> The client-side implementation is in desktop-shell.c with the entry
> point at
> https://gitlab.freedesktop.org/wayland/weston/blob/master/clients/desktop-shell.c#L1392
> 
>    if (!strcmp(interface, "weston_desktop_shell")) {
>        desktop->shell = display_bind(desktop->display,
>                          id,
>                          &weston_desktop_shell_interface,
>                          1);
>        weston_desktop_shell_add_listener(desktop->shell,
>                          &listener,
>                          desktop);
> 

How do I ensure my client will still launch no matter what directory I run my compositor from? How do I get the absolute path of my client?

Also, how do I ensure it will still launch correctly no matter whether I am running it from the builddir or the installdir? The locally built version should launch the locally built client and the installed version should launch the installed client.

Regards

adlo


More information about the wayland-devel mailing list