Hi,

Been doing some experiments.

It should be possible (and the best way to go) to use wayland-client
without gtk.

Desktop iterations should be done with libportal (such as file dialogs):
https://libportal.org/

It is possible to implement the Robot with libportal "RemoteDesktop" - in
my experiments the only downside is that it asks for permission and is only
for one monitor - but maybe should be enough for testing purposes.

The solution would still use gnome libraries such as glib and gio.
Settings can be obtained using gsettings.

-- Thiago.







Em qui., 16 de nov. de 2023 às 07:57, Thiago Milczarek Sayão <
thiago.sa...@gmail.com> escreveu:

> Hi,
>
> It seems there are some opportunities to explore with Wayland:
>
> For kiosks (Ubuntu frame):
> https://mir-server.io/
>
> https://wayland.app/protocols/
> There are some interesting extensions such as Tizen (samsung OS) and
> "In-vehicle infotainment": https://wayland.app/protocols/ivi-application
> I found it interesting because of the Wayland adoption for those scenarios.
>
> I'm doing some experiments and it seems to fit well using wayland-client
> directly.
>
> I was thinking about keeping GTK for system dialogs such as file open -
> but it can be done with DBUS and xdg-desktop-portal. So if the user is on
> KDE it will display a KDE file open dialog:
> https://flatpak.github.io/xdg-desktop-portal/docs/. Same for "Settings".
>
> xdg-desktop-portal also has interfaces for "RemoteDesktop" which I think
> can be used for Robot (to simulate as if it was using RDP and send cursor
> movements and keys).
>
>  -- Thiago
>
> Em sex., 10 de nov. de 2023 às 09:43, Thiago Milczarek Sayão <
> thiago.sa...@gmail.com> escreveu:
>
>> Hi Johan,
>>
>> Robot will be a challenge.
>>
>> For mouse and keyboard simulation this could work:
>> https://www.kernel.org/doc/html/v4.12/input/uinput.html
>>
>> of maybe:
>>
>> https://docs.flatpak.org/pt-br/latest/portal-api-reference.html#gdbus-org.freedesktop.portal.RemoteDesktop
>>
>> For screenshot:
>>
>> https://docs.flatpak.org/pt-br/latest/portal-api-reference.html#gdbus-org.freedesktop.portal.Screenshot
>>
>> Haven't tested anything yet.
>>
>> I did some experiments on the jfx-sandbox (it displays the window on
>> wayland with software rendering), but the conclusion so far is that it's
>> better to ditch gtk and use wayland-client directly, except for system
>> dialogs such as file open.
>>
>> -- Thiago.
>>
>>
>> Em sex., 10 de nov. de 2023 às 06:39, Johan Vos <johan....@gluonhq.com>
>> escreveu:
>>
>>> Hi Thiago,
>>>
>>> Thanks for the work on Wayland. I spent some time on it in the past as
>>> well, and I'll hope to find some time to look at your work soon.
>>>
>>> The main worry I had in the past was how to deal with the robot, where
>>> we need to get pixels from the screen -- did you tackle that?
>>>
>>> - Johan
>>>
>>> On Fri, Nov 3, 2023 at 1:14 AM Thiago Milczarek Sayão <
>>> thiago.sa...@gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> About Wayland:
>>>>
>>>> Porting es2 to use EGL instead of GLX is pretty straightforward, so
>>>> converting a X11GL* to WaylandGL* is easy (GLX is X11 only, so this is why
>>>> EGL is needed).
>>>> The problem is Gtk4 and/or Gtk3 with Wayland won't allow you to paint
>>>> directly to the window as es2 do.
>>>> I've tried to use Gtk4 and composite it with a GL texture - it would
>>>> work, but does't fit well with es2 as it is designed to swapBuffers.
>>>>
>>>> I'm looking for the shortest path to get it working.
>>>>
>>>> I'm thinking now to use wayland-client directly for most things, so it
>>>> will be possible to create the WaylandGL* infrastructure and render
>>>> directly to a surface.
>>>> Compositing directly with wayland would be better anyways. Using Gtk (3
>>>> or 4) would require rendering somewhere else (other than onscreen wayland
>>>> surface) and then composite the result with Gtk.
>>>>
>>>> So, the conclusion for now is that Gtk won't work with wayland for the
>>>> use of another toolkit (outside of the gtk rendering scope).
>>>>
>>>> wayland-client, here I go.
>>>>
>>>> -- Thiago.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Em sáb., 21 de out. de 2023 às 18:12, Thiago Milczarek Sayão <
>>>> thiago.sa...@gmail.com> escreveu:
>>>>
>>>>> EGL is the way to go for Linux on Wayland and X11.
>>>>>
>>>>> I don't know how to do it yet, but it seems the solution is to use
>>>>> DMABUF with EGL and share it with GTK (I suspect on a GtkGLArea widget, 
>>>>> but
>>>>> not sure yet).
>>>>>
>>>>> Firefox and WebKit GTK uses the same technic.
>>>>>
>>>>> Gtk4 does not allow application painting, so direct surface context is
>>>>> not possible.
>>>>>
>>>>> We are using gtk3 and it is still possible, but I want to use
>>>>> GtkHeaderbar and clean up glass code. Since it means sharing the
>>>>> window/surface with GTK, direct surface rendering also doesn't work.
>>>>>
>>>>>
>>>>> https://mozillagfx.wordpress.com/2021/10/30/switching-the-linux-graphics-stack-from-glx-to-egl/
>>>>>
>>>>>
>>>>> https://blogs.igalia.com/carlosgc/2023/04/03/webkitgtk-accelerated-compositing-rendering/
>>>>>
>>>>> https://blog.gtk.org/2021/05/10/adventures-in-graphics-apis/
>>>>>
>>>>> It's been nice to learn.
>>>>>
>>>>> Em seg., 16 de out. de 2023 20:51, Thiago Milczarek Sayão <
>>>>> thiago.sa...@gmail.com> escreveu:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am investigating about prism on Wayland.
>>>>>>
>>>>>> It looks like we could just replace the GLX calls on X11 backend to
>>>>>> EGL and it will work on both (maybe rename it).
>>>>>>
>>>>>> It will need some work to pass the native display around - it assumes
>>>>>> X11 Display everywhere and it could be a Display or a wl_display.
>>>>>>
>>>>>> -- Thiago.
>>>>>>
>>>>>> Em dom., 15 de out. de 2023 às 16:06, Thiago Milczarek Sayão <
>>>>>> thiago.sa...@gmail.com> escreveu:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Update: It now works on wayland with -Dprism.order=sw
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Em dom., 15 de out. de 2023 às 10:49, Thiago Milczarek Sayão <
>>>>>>> thiago.sa...@gmail.com> escreveu:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> https://github.com/openjdk/jfx-sandbox/tree/tsayao_wayland
>>>>>>>>
>>>>>>>> I did some experiments here. So far, so good.
>>>>>>>>
>>>>>>>> 1) Replaced GDK events for Gtk Signals - It's the way to go for
>>>>>>>> newer gtk.
>>>>>>>> 2) Replaced drawing directly in the window and added a
>>>>>>>> GtkDrawingArea with a GtkHeaderBar which allows control over the whole
>>>>>>>> window
>>>>>>>> size and allows to get rid of extents* calls - this cleans up a lot.
>>>>>>>> 3) Unified the WindowContext to clean it up.
>>>>>>>>
>>>>>>>> I also integrated the IME replacement proposed here:
>>>>>>>> https://github.com/openjdk/jfx/pull/1080
>>>>>>>>
>>>>>>>> It almost runs with software rendering on Wayland, but something
>>>>>>>> still touches X11.
>>>>>>>>
>>>>>>>> To finally make it work on Wayland it requires to implement it on
>>>>>>>> prism es2. I see that there's a EGL part of Monocle. I still don't
>>>>>>>> completely understand it, but wouldn't it work as a drop-in 
>>>>>>>> replacement?
>>>>>>>>
>>>>>>>> -- Thiago.
>>>>>>>>
>>>>>>>>
>>>>>>>>

Reply via email to