Gooey: A GPU-accelerated UI framework for Zig

(github.com)

92 points | by ksec 3 hours ago

9 comments

  • ecshafer 34 minutes ago
    This looks good. But the thing that always lets me down on UI frameworks is how much freaking work it is to get something on the screen. My first language was Borland Turbo C++. It was so comparatively simple to do stuff. If I want to write a circle on the screen its just this:

    #include <graphics.h> #include <conio.h>

    int main() { int gd = DETECT, gm;

        initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
    
        circle(320, 240, 100);
    
        getch();
        closegraph();
    
        return 0;
    }

    Making some shapes and forms wasn't that much work either.

    If I think back to VB and Windows (whatever it was then) making a basic window, form and some buttons was so simple and easy, they even made GUI builders because they were so good.

    Somewhere along the lines GUIs became overly complex to implement.

    • coffeeaddict1 15 minutes ago
      This is what you can with Qt:

          #include <QApplication>
          #include <QWidget>
          #include <QPainter>
      
          class widget : public QWidget {
          void paintEvent(QPaintEvent*) override {
              QPainter p(this).drawEllipse(QPoint(320, 240), 100, 100);
          }
          };
      
          int main(int argc, char *argv[]) {
              QApplication app(argc, argv);
              widget w;
              w.resize(640, 480);
              w.show();
              return app.exec();
          }
      
      
      It doesn't seem too complicated to me.
      • ecshafer 7 minutes ago
        That doesn't seem too bad, I agree. Maybe that's why QT is used. I haven't really used QT, but the more modern Windows apis, vulkan, etc all are pretty complicated.
  • noelwelsh 2 hours ago
    Interesting project, but needs documentation. In particular, what's the model it uses? I.e. how are events, state, etc. handled? Normally I'd just work it out from the code examples, but the example in the README is over 200 lines which is too long for me.

    (Don't tell me here. Make your docs better, so everyone benefits!)

  • Erenay09 11 minutes ago
    It is great to see the Zig ecosystem growing, even though it was achieved by AI. I wish humans had done it, but I do not wanna start a debate between those who arent fans of AI and those who are.
  • WD-42 1 hour ago
    This is great, we need more of this. It's high time we began to escape the dark ages of rule-by-Electron. See Bitwarden's recent fumble of a redesign.
  • vova_hn2 2 hours ago
    > Inspiration

    > GPUI - Zed's GPU UI framework

    Cool, but a comparison would also be very helpful.

    If I decide to make a GUI app with Zig, how do I choose between Gooey and GPUI?

    So far, all I know that GPUI is more mature and has at least one successful project built with it, so...

    Also:

    > Gooey: Turn (almost) any Python 3 Console Program into a GUI application with one line

    > https://github.com/chriskiehl/Gooey

    • shorsher 1 hour ago
      GPUI is written in Rust, so in this specific case the decision is already somewhat made for you.
    • torginus 1 hour ago
      If I remember correctly, Zed's framework didn't set the goal of being able to draw arbitrary graphics/UI and by constraining that, it basically managed to represent everything with quads and distance fields in shaders, which reduced draw calls and GPU state management to a minimum.
    • ssernikk 1 hour ago
      > how do I choose between Gooey and GPUI?

      GPUI is for rust, not zig

    • mgrandl 1 hour ago
      I mean GPUI is rust and Gooey is Zig so if you wanna do a project in Zig you probably wouldn’t choose GPUI.
  • kristoff_it 31 minutes ago
    Another Zig GUI project that people might be interested in is DVUI:

    https://github.com/david-vanderson/dvui

  • amelius 44 minutes ago
    Nice work but honestly I haven't seen convincing arguments for writing medium to large GUI applications in a language that has no automatic GC.
  • cookiengineer 54 minutes ago
    Sadface :-(

    (Author of Gooey [1], a GUI framework for WebASM in Go)

    [1] https://github.com/cookiengineer/gooey

    • noelwelsh 11 minutes ago
      I also have one [1]. It's a good name :-)

      [1]: https://github.com/creativescala/gooey

    • Findecanor 16 minutes ago
      I have also found a UI framework in C++ with OpenGL named Gooey (2008-ish).

      And in early 2000, I was in a mailing list for designing a successor/replacement to X11, code-named "Gooey" that never went anywhere.