hhmx.de

Föderation · Sa 12.10.2024 07:56:58

Someone mentioned they liked the little "" that grew inside of 😉 ...

This gave me the idea I should attempt to document it somehow. If only for my later self 😎. First step: Try to create some visualization. Here's a very early draft of a "class diagram" created with – so far showing only "is-a" () relationships. I hope I can add edges there keeping it still readable, we will see... 🤔

And then, it will of course need quite some text explaining how things work together.

CC: @kaveman@bsd.cafe


Xmoji toolkit class diagram, first draft

(Medien: 1)

Föderation EN Sa 12.10.2024 10:00:06

@zirias tis happening! yet another X toolkit... 🤤

Föderation · Sa 12.10.2024 12:27:51

Haha, well, I'd stick to putting "" in quotes only. For once, it's entirely non-portable to anything other than (with ) via (like e.g. or ) ... xcb types/interfaces are hardwired practically everywhere. And then, although it might be possible to extend it to some "generic" toolkit specifically for that platform, I have no plans doing so. I strictly only implemented what was necessary for 's GUI. 😉

Föderation EN Sa 12.10.2024 15:04:04

@zirias it is already good enough to implement a login manager, a desktop panel/bar and probably a notification system (xnotify is quite nice too)... perhaps it can become the libXt for xcb.

Föderation · Sa 12.10.2024 19:14:52

A major blocker could be that it relies on my "poser" project: https://github.com/Zirias/poser ... it's a small lib, so you could certainly integrate the parts needed, but I didn't do it, I just made build with a bundled (statically linked) by default instead. Another blocker could be that it does quite some trickery to force into an model with and registered event-handlers (provided by poser), so it integrates well with a generic event loop built on (which poser does, anything else based on file descriptors like , , would work as well). It abuses xcb functions meant for tracing/debugging for that purpose. 🙈

And then, of course, it's very different from . It strictly requires , using its "picture" objects as the primary drawing handle, and just offering the core X11 "drawable" on demand. It strictly requires a "true color" visual. It has NO support whatsoever for core drawing primitives and core (bitmap) fonts. It doesn't create a window for every widget but instead manages widgets fully client-side ... all these are probably not "blockers" but just how you'd design a GUI toolkit for X11 nowadays 😉