dev log: BGTK and Tai

Published: 2026-02-03

Some time ago I started BGCE, a framebuffer based display server. And I really like it, I want to be able to create applications for it easily. All I wanted was a nice toolkit that could simply write to a void *buffer, but I failed to find it. I admit I got bored quickly and started writing my own.

So I named it BGTK of course, I need better names. And now it have some working widgets:

frame:
A simple widget that adds a border and had a child widget.
scrollable
Yes! A widget with a vertical scroll if you guessed.
label:
A simple text widget.
button:
A button with border, callback and label.
textInput:
This is the hardest so far.
image:
So we can add images.
bgtk scrollable widget with a button, labels and image widgets

I know it is ugly, but serves the testing purpose.

I think this is enough for now, I want to start creating real apps. BGTK has a function to redirect input events that will fan out or find the correct widget to receive the event. The architecture looks very elegant: each widget has its event handler method that checks the event and handles it, some widgets will pass it to its child, and that way, the event just traverses the tree of widgets on its own. I like it.

For now I won't start writing documentation because the library is not stable, rely on the example app in the repo if you want a reference. I have some ideas on what to do now: a configuration editor, image viewer, launcher, file explorer. I'll keep you posted. Or you can check the repo at your own pace: BGTK, there's a commit feed for the good old school folks.

Tai

Tai is my Neovim plugin that integrates AI with my workflow. It is made with my needs and preferences in mind, but it may suit you too, since, I got inspired by Cursor for doing it. Still a work in progress, but I can use it daily. I can say it's a good procrastination, there are so many AI plugins out there, Kilo, Cline, OpenCode, Claude, now Cursor too has a CLI; that I didn't need to create my one. But at least I'm able to pack something special:

It runs commands, reads files and applies patches as all the other clients, it works, most of the time. Sometimes patches go wrong, but Tai re-reads and re-applies them. The last thing I did was adding support for the responses API for OpenAI, so I can use the pro model. I also made the provider and model appear in the status bar, now you know whom you're talking to. This feature matches with the new reload config function, I was tired of exiting Vim, changing the config and getting in again.

For anyone wanting to contribute the workflow uses mailing lists, as always, is on my git forge. I added a mirror in GitHub too, check it out. Thank you!