[HN Gopher] Show HN: Xlibe: a serverless Xlib (X11) compatibilit... ___________________________________________________________________ Show HN: Xlibe: a serverless Xlib (X11) compatibility layer for Haiku Hello HN, While there are some projects that implement partial versions of Xlib APIs on non-X11 platforms for compatibility (most notably, Tk), I don't know of any others sophisticated enough to run Cairo and GTK applications (albeit with a few hacks). So I figured this might be technically interesting. As of now it just implements the base Xlib APIs, it doesn't implement XRender, GLX, XInput2, etc. (though it's more than possible, I just didn't see a need yet.) Cross-program interaction is also very limited, and there are plenty of X11 features that likely can't be implemented; but this works sufficiently well that GTK3 is now in Haiku's default package repositories, with GIMP and Inkscape atop it to boot, using this. And for the fun of it, I did try to compile Xnest (the X.org server variant running on top of Xlib) on top of this; it crashed on startup in the keyboard handlers. However, that could potentially be because I didn't have the necessary data files and not because of anything missing in Xlibe; I didn't investigate too far (or it could be an actual incompatibility; Xlibe's keyboard subsystem is rather primitive and is most of the reason I had to patch GTK for full functionality.) (A few more screenshots, including GTK and WINE running atop Xlibe: https://www.haiku- os.org/blog/waddlesplash/2022-01-10_haiku_...) Author : waddlesplash Score : 25 points Date : 2022-04-26 14:00 UTC (1 days ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | [deleted] | loxias wrote: | Interesting! I love stuff like this (compatibility layers like | wine, darwin). | | I think a better title might include mentioning what Haiku _is_ , | though 15 seconds of googling worked just as well. :) | waddlesplash wrote: | A few more technical details, for the interested: | | * Every X11 "Window" gets its own BView (which is itself vaguely | analogous to a QWidget in Qt, etc.) and of course top-level | "Window"s attached to the root get their own "BWindow" as well. | | * All drawing goes through the Haiku drawing APIs. (This does | create some artifacts in applications that expect X11 drawing | isn't antialiased, like most Xt/Xaw applications, but it works | tolerably well.) | | * Since Haiku has no "display server" / "windowing system" | divide, all operations related to both are directly handled in | Xlibe. This creates some trickiness when applications request | "window manager bypasses" in tandem with modality management, and | also in decorations/borders handling, but it works well enough. ___________________________________________________________________ (page generated 2022-04-27 23:00 UTC)