ebpa / tui.el

An experimental text-based UI framework for Emacs modeled after React - **requires emacs 26.1 or newer**
GNU General Public License v3.0
183 stars 6 forks source link

Suggestion for comparison between TUI and The Widget Library #9

Open bryce-carson opened 1 year ago

bryce-carson commented 1 year ago

I was able to get TUI to render a timer in IELM, which is impressive enough for me.

I think it would be a good idea to compare this library and its goals with the built-in Widget Library, as there are differences that would be interesting to see when someone is looking for a TUI-like library, or a component library for making interfaces and forms of some sort... application programming within Emacs in general, I suppose.

At the moment, I'm using the Widget Library, but I'm having difficulty with some of its documentation and some of its behaviour, but otherwise I think it meets my needs more appropriately than TUI. I may be wrong, however!

If TUI provides buttons, editable fields, lists, most of what Widget provides, then I might try implementing my setup-buffer in TUI instead.

What do you think, Erik? I think it'd be good for the README section where you mention other similar projects, Emacs and non-Emacs.

ebpa commented 1 year ago

That's a great idea! I know that I've struggled with widgets too. It would be really good to have an enumeration of the widgets - at least for the sake of tracking completeness of a standard component library.

If you interested in helping get that started, I've created a document here: https://github.com/ebpa/tui.el/blob/master/COMPONENTS.org. PR's for additional components are welcome too- of course :-)

You likely notice my perspective has mostly been from the lens of HTML elements. Ultimately I'd like to see richer textual components and layout tools for use in eww. I haven't tackled components systematically though; only as specific personal needs have arisen. Is there a particular input widget that you've struggled with recently? I can try my hand at wrapping an input widget with tui to see if that would present a more palatable API for you.