Fui: C library for interacting with the framebuffer in a TTY context

github.com

164 points by Bhulapi 6 days ago


abnercoimbre - 5 days ago

It's so cool to see more terminal(-adjacent) experiments! We're overdue in evolving this space.

Self-plug: last month I demoed [0] my own terminal. The goal is to dispense with traditional shells and see what happens. It generated quite a bit of hooplah, with a 50-50 split on how people felt about it.

I'll keep an eye on Fui; might come in handy for future Linux builds.

[0] https://terminal.click/posts/2025/04/the-wizard-and-his-shel...

markisus - 6 days ago

Can someone explain what “the framebuffer” is? I’m familiar with OpenGL programming where the OS can provide a framebuffer for an application but I’m confused about whether there is a global framebuffer for the entire desktop. Is this a Linux specific concept?

clbrmbr - 6 days ago

Awesome! Reminds me of the good old days of QuickBasic and SCREEN 13, when you could write very small programs with fullscreen graphics.

I still have not figured out how to do fullscreen graphics on my Mac.

kristianp - 6 days ago

What does "in a TTY" context mean here? It doesn't mean in a terminal window, right?

mouse_ - 6 days ago

Don't type commands from the Internet, especially as root, especially when dd is involved. That being said,

If you're ever bored, from a TTY, type

sudo dd if=/dev/urandom of=/dev/fb0

This provides a nifty demonstration of how both the framebuffer and urandom works.

you can also take a sort of "screenshot" in a tty by typing dd if=/dev/fb0 of=./shot.fb

and then you can view it by flipping those filenames around, so that the shot.fb is now the input and /dev/fb0 is now the output.

RetroTechie - 5 days ago

This kind of thing begs to be run bare metal (no Linux fbdev using modern 3D GPU with a complex driver stack under the hood). Or some small RTOS at most.

yazantapuz - 5 days ago

Very nice!!! It remains me of the old days with pascal and msdos writing into A000:0000 :)

nimish - 6 days ago

Interesting, I guess you could port LVGL to this and get a full GUI?

actionfromafar - 6 days ago

Any license on this?

cellis - 6 days ago

Super cool! Looks small enough to still be grokkable!

antirez - 5 days ago

Related, at a different layer of abstraction: Kitty graphical protocol, implemented also by Ghostty terminal emulator.

anthk - 5 days ago

Remember SVGAlib and libggi? Maybe FUI it's like the last one.

speed_spread - 6 days ago

Are we TempleOS yet?

ivanbelenky - 6 days ago

Awesome