Skip to content

Wayland Display Support in R Plot

9 messages · quentin.thorne, Paul Murrell, Simon Urbanek +3 more

#
Hello,

I'm interested in understanding the current state of Wayland display support in R plot, and I was wondering if any progress or discussions have taken place regarding this matter.

As Wayland continues to gain popularity as a display protocol on modern Linux systems, having Wayland support for R's plotting capabilities would be a significant enhancement.

Could anyone provide information on the current status of Wayland support in R plot? Are there any ongoing efforts, discussions, or packages in development that address this issue? I would appreciate any insights or guidance in this regard.

Thank you for your time and assistance.

Best regards,

Quentin Thorne
Message-ID: <2hucKaz80G9FeAnZlo6F3ti_Y4wcvNkje6QvQcPgLGgxzqb3YIY470MwGZAit4VW2REluwTH062EPltAFjfyUfJ1fTk0dmrcwHjwsO0dtG4=@protonmail.com>
2 days later
#
Hi

I am unaware of any Wayland display support.

One useful way forward would be an R package that provides such a device 
(along the lines of 'Cairo', 'tikzDevice', et al)

Paul
On 27/10/23 23:16, quentin.thorne via R-devel wrote:

  
    
#
On 30 October 2023 at 07:54, Paul Murrell wrote:
| I am unaware of any Wayland display support.
| 
| One useful way forward would be an R package that provides such a device 
| (along the lines of 'Cairo', 'tikzDevice', et al)

As I understand it, it is a protocol, and not a device.

Several Linux distributions have long defaulted to it, so we already should
have thousands of users. While 'not X11' it provides a compatibility layer
and should be seamless.

I think I needed to fall back to X11 for a particular applications (likely
OBS) so my session tells me (under Settings -> About -> Windowing System) I
am still running X11. I'll check again once I upgrade from Ubuntu 23.04 to
Ubuntu 23.10

See https://en.wikipedia.org/wiki/Wayland_(protocol) for more.

Dirk
#
Well, X11 is a protocol, not a device, either.

Wayland is a lot worse, since it doesn't really do much at all - the clients are fully responsible for drawing (doesn't even support remote connections).

Given that Wayland is essentially a "dumb" framebuffer, probably the easiest way would be to take Cairo and add a libwayland back-end. Cairo is already modular so it's relatively straight-forward to add a new back-end to it (I'd probably just copy xlib-backend.c and replace X11 calls with libwayland calls since the low-level design is the same).

However, that is limited only to devices, so you would still run R code in the shell (or other GUI that may or may not by Wayland-based). Given that Wayland is so minimal, you'd need some GUI library for anything beyond that - so you may was well just run a Wayland-based browser and be done with it saving you all the bother (oh, right, that's called RStudio ;)).

One package that may be worth adding Wayland backend to is rgl so you get OpenGL on Wayland - I'd simply re-write it to use GLFW so it works across all platforms and including Wayland.

Cheers,
Simon
#
On 29/10/2023 4:20 p.m., Simon Urbanek wrote:
I looked into using GLFW a while ago, but it seemed too hard to do 
without other really major changes to rgl, so that's not going to happen 
soon (unless someone else does it).

I think the issue was that it was hard to get it to work with the 
ancient OpenGL 1.2 that rgl uses.  I forget whether it was just hard or 
actually impossible.

I am slowly working towards having rgl use newer OpenGL versions, but I 
don't expect this to be done for quite a while.

Duncan Murdoch
#
On 30 October 2023 at 09:20, Simon Urbanek wrote:
| > On 30/10/2023, at 8:38 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| > On 30 October 2023 at 07:54, Paul Murrell wrote:
| > | I am unaware of any Wayland display support.
| > | 
| > | One useful way forward would be an R package that provides such a device 
| > | (along the lines of 'Cairo', 'tikzDevice', et al)
| > 
| > As I understand it, it is a protocol, and not a device.
| > 
| 
| Well, X11 is a protocol, not a device, either.

Point taken.

| > I think I needed to fall back to X11 for a particular applications (likely
| > OBS) so my session tells me (under Settings -> About -> Windowing System) I
| > am still running X11. I'll check again once I upgrade from Ubuntu 23.04 to
| > Ubuntu 23.10

Booted an older laptop using 22.04, selected 'not X11' in the gdm dialog but
the same Gnome Menu still says Windowing System: X11.  So I am no longer sure
how I would convince myself if I am under Wayland there or not.  The answers
in https://unix.stackexchange.com/questions/202891/how-to-know-whether-wayland-or-x11-is-being-used
suggest I still run X11 too.  So I got nuttin' here.

In any event, I read OP as asking 'do we need a new device' and I still think
that the answer to that still is 'likely not' as the X11 compatibility layer
should cover this.  

Dirk
#
Duncan,

at least according to the docs GLFW doesn't really care - it will forward whatever OpenGL is available on the platform. In fact it says:

"By default it also includes the OpenGL header from your development environment. On some platforms this header only supports older versions of OpenGL. The most extreme case is Windows, where it typically only supports OpenGL 1.2."

so, really, OpenGL 1.2 is perfect.

You can request a minimal version, but don't have to, i.e., old versions are ok. I have tested libglfw3 (3.3.8) with OpenGL 1.2 (on macOS) and it worked just fine.

That said, both points were meant for the list in general - those are nice self-contained projects (add libwayland to Cairo and GLFW to rgl) for someone with spare time to contribute...

Cheers,
Simon
#
On 29-10-2023 22:29, Dirk Eddelbuettel wrote:
I just tried it on Ubuntu 23.10. It seems to just work.
See screenshot here: https://nextcloud.wligtenberg.nl/s/jnbDT4ZiHw2JQ8H
I should be using wayland, and as far as I know I haven't done anything 
special to make this work. But there might be some compatibility layer 
that is active by default.
If it helps, I could try again using distrobox.

Kind regards,

Willem
#
On 30 October 2023 at 13:17, Willem Ligtenberg via R-devel wrote:
| I just tried it on Ubuntu 23.10. It seems to just work.
| See screenshot here: https://nextcloud.wligtenberg.nl/s/jnbDT4ZiHw2JQ8H
| I should be using wayland, and as far as I know I haven't done anything 
| special to make this work. But there might be some compatibility layer 
| that is active by default.

Same here under trusted 22.04 LTS on that older / not quite healthy laptop.
All it took was to set WaylandEnable=true in /etc/gdm3/custom.conf and a
systemctl call to restart gdm3.

R plots fine in the x11() default device via plot(cumsum(rnorm(100)), type="l").

Like Roger, I had issues with some third-party apps (obs to record lectures
comes to mind, maybe also zoom ?) so "we'll see".

Dirk