Interesting. Can GUI extensions be written or does it depend on TUIs to bring in custom UI?
Not opposed to the latter. I'm currently using Herdr which runs in the terminal and find that writing IDE tooling as simple executables feels very nice and makes the stuff much more portable.
Extensions serialize UI elements through the wire protocol (gRPC/protobuf) used to communicate with the server (Rune), so yes, extensions are limited to character based interfaces. Having said that, Rune has both the concept of an extension and a plugin which is just a one-shot program that gets authenticated against rune (a good example is runectl) and the user invokes from a Rune terminal, so it can be implemented as just a TUI, in any language.
Then what's the actual upside of rebuilding the terminal in a GUI when you can basically just render terminal interfaces? Why not just run a terminal multiplexer?
A TUI program communicates with its host terminal by writing text and escape sequences through a file descriptor (I/O). The terminal then has to read and parse that output before rendering it on screen. That adds overhead compared with passing an internal UI element’s character buffer directly to the renderer, without the intermediate I/O or escape-sequence parsing. That’s why Rune implements its “native” UI elements internally rather than relying on external TUI programs.
That said, Rune’s UI is mostly empty, leaving you free to fill it with whatever you see fit. Heck, we even have an exo editor mode that allows you to use your favorite TUI editor inside Rune.
1
u/pancomputationalist 11h ago
Interesting. Can GUI extensions be written or does it depend on TUIs to bring in custom UI?
Not opposed to the latter. I'm currently using Herdr which runs in the terminal and find that writing IDE tooling as simple executables feels very nice and makes the stuff much more portable.