10 ms·
Gio: Portable, Immediate Mode GUI in Go
- todd8 7y agoIt appears to support Windows, MacOS, Linux, IOS, and Android. See also this youtube video from GopherCon 2019 on this ui library: https://www.youtube.com/watch?v=9D6eWP4peYM&t=636s https://www.youtube.com/watch?v=9D6eWP4peYM&t=636s
- giancarlostoro 7y agoLove the idea not a fan of the tough to google name. I had issues googling for it a couple of times to show people Gio.
- speps 7y agoSame as Go where you search for "golang". I get good results using "gioui".
- coldtea 7y agoHow about "Gio golang UI library"? What exactly is hard about that (or several similar variations) -- which give me a first page full of relevant results? Does the term have to be "Gio" or bust?
- giancarlostoro 7y agoShould I really be forced to memorize word soup to find what I am looking for though? Thats just absurd to me.
- coldtea 7y agoDo you really need to memorize it? You should absolutely be able to derive additional search terms from first principles, assuming you know that Gio is a golang library for GUI... If you don't know what it is, then why would you be searching for it in the first place? If anything, you have it backwards: it is the Gio name itself (or whatever more unique you suggest) that you'd need to absolutely memorize. Additional terms ("golang", "GUI", "library", and several others one could use) come naturally from knowing what Gio is, no memorization required.
- Crinus 7y agoTo me it is more absurd that you act as if it is impossible to search for what you are looking for using more than one word. You aren't supposed to memorize a word soup. You are supposed to search for what you are looking for based on some hints you may remember - e.g. gio gui library for golang. Even duckduckgo which isn't always the best when it comes to searching vague stuff gives gio as the third result (google shows the gio repository as the first result).
- giancarlostoro 7y agoI probably typed into Google several things, and I'm not sure if the filter bubble Google has around me was screwing it up, or not getting the right word soup. Sometimes it shows up, other times it does not. Maybe Gio is finally getting enough attention.
- tiborsaas 7y agoNo screenshots for a GUI library?
- yourapostasy 7y agoWatch his Gophercon talks, around minutes 4-7 show what it’s capable of. Screenshots simply show native interfaces, so it isn’t some kind of skin that’s readily apparent from screenshots. The more interesting action happens in the code and his philosophy towards multi-platform UI.
- unwind 7y agoAs far as I know, the "native interface" in Windows is not immediate-mode. Also Linux barely has one, so that's very confusing too. How does that work out? I too feel the project page really could use a couple of screenshots, since when talking about visual things, pictures do help. Update: I watched the video, it looks really nice and smooth but seems to be the basic framework on which you can build a user interface, not an actual user interface. For instance he shows off basic drawing, and support for dynamic layout of user interface elements, but no ready-made widgets. Maybe I'm still not getting the full picture.
- tom_mellior 7y ago> Screenshots simply show native interfaces Yeah, but accompanied by code snippets they would make a lot of sense on a GUI library's landing page. Not to advertise the look of the widgets, but to advertise the ease or flexibility of the library.
- tiborsaas 7y agoThat's a lazy excuse, sorry :) The talk is not even linked in the readme. Display me what this awesome philosophy is capable of. I understand that this is somebody's side project, but come on, grab my attention, since we have a sea of GUI libraries out there. He must have built something amazing in it, just throw it there. It took me quite a while to find the slide deck link in the readme and I only kept looking because I couldn't believe that I can't see this thing in action.
- 7y ago
- wilt 7y agoNo x11 support?
- nizmow 7y agoYeah, that makes it a no-starter for me.
- vhodges 7y agoIt IS being worked on but in the meantime, gio apps can be run on X using https://github.com/Hjdskes/cage https://github.com/Hjdskes/cage (a very simple wayland compositor)
- Sir_Cmpwn 7y agoI've poked around some of the gioui windowing code. It should be pretty easy to add an X11 backend if you're up for the task.
- jamil7 7y agoThis looks really interesting to me but I'm a bit lost on how exactly it'd work in practise. Are there anymore docs somewhere?
- yourapostasy 7y agoHis GopherCon talks are pretty gentle tutorials. In practice, looks like your program becomes responsible for quite a bit of scaffolding that UI coders take for granted these days, in exchange for multi-platform write-once. Kind of reminds me of GUI programming back in the 80’s, where your program is responsible for managing every state refresh and screen update. It’s efficient, but I’ve seen larger teams without sufficient discipline have a challenge coping with this style. For a lot of useful problem domains however, it’s really tough to beat its time to market and efficiency. Lots of startups would probably love this.
- jamil7 7y agoThanks for the detailed response, I'm going to take a look into the videos.
- pixelrevision 7y agoAt this point electron will beat something like this on a time to market front. I suspect this framework would work better for people who want to do real-time drawing but stick with go and not setup a bunch of OpenGL boilerplate.
- vhodges 7y agohttps://en.wikipedia.org/wiki/Immediate_Mode_GUI https://en.wikipedia.org/wiki/Immediate_Mode_GUI might help.
- coldtea 7y agoA GUI library with no screenshots, no widget gallery, and no (easily found) reference? "Hosting Gio on Sourcehut is an experiment just as Gio itself is." Yeah, nice experiment. Now maybe try GitHub?
- ddevault 7y agoRude. What's you beef with Sourcehut? "Other projects use Github" will not be accepted as an answer.
- coldtea 7y agoThat it's between GNU project webpages and Sourceforge circa 2002? >"Other projects use Github" will not be accepted as an answer Well, not that I care whether it would or would not be accepted, but It would still be a valid answer: using common services others use, makes for less friction: 1) immediate familiarity for most (not having to learn yet another thing) 2) common tooling with what other projects you use, use, 3) more available tooling -thanks to popularity- 4) more dependable to be around, 5) easier to engage with others since they more likely already use it -network effects-, and so on...
- Sir_Cmpwn 7y ago>That it's between GNU project webpages and Sourceforge circa 2002? Even more rude. This looks nothing like either. GNU Savannah has a garish color scheme and completely unplanned UI. Sourceforge is overplanned and looks like a mid-2000's ad-ridden malware distribution site. >Well, not that I care whether it would or would not be accepted, but It would still be a valid answer: using common services other's use, make for less friction Then you'll never get new services. You'll bow to your Microsoft overlords and take what Github gives you, and be thankful for it. Github is proprietary and profit driven. It's going to do what's best for it, not what's best for you. This is a pretty naive and immature line of reasoning.
- coldtea 7y ago
- marcus_holmes 7y agothis looks great, exactly what I need. I'll go try it out and see if it lives up to the promise :) I guess, though, that there aren't any widget libraries for it, yet? Anyone know different?
- pferde 7y agoVery badly chosen name. GIO is already GLib's filesystem abstraction API: https://developer.gnome.org/gio/ https://developer.gnome.org/gio/
- tasogare 7y agoTons of programming projects has the name of an existing project. Go itself is an illustration of that fact.
- remon 7y agoThat'll be fun to get Google results for. I suppose we can be glad they didnt go for Go + UI, you know, GUI.
- mythz 7y agoBasically this is the UI FX used to build https://scatter.im https://scatter.im Best way to view a preview of it: https://youtu.be/9D6eWP4peYM?t=113 https://youtu.be/9D6eWP4peYM?t=113
- rob74 7y agoI wanted to try this out right away, but stumbled over the fact that I don't know how to use "go get" with Sourcehut, or even if it's supported. Of course it's probably easy to find out, but a "getting started" section wouldn't hurt. The "installation" page only describes the installation of the dependencies...
- Sir_Cmpwn 7y agogo get has nothing to do with github. Why wouldn't it work? Just use it the usual way. The readme directs you to a hello world program: https://git.sr.ht/~eliasnaur/gio/tree/master/example/hello/hello.go https://git.sr.ht/~eliasnaur/gio/tree/master/example/hello/h...
- rob74 7y agoOk, after I noticed that the URL of the git repo is at the top of the page (somehow I managed to overlook it), I tried "go get git.sr.ht/~eliasnaur/gio", only to find out that wasn't correct, because the project uses a "vanity URL", so apparently I have to use "go get gioui.org/gio" or something like that. My point was that even if it's pretty straightforward for a reasonably experienced Go developer, it doesn't hurt to mention it...
- deforciant 7y agoGio looks really neat (from the demos), I will definitely try it out as I have been looking for a nice way to build desktop app for quite some time. Other projects that I am considering to use: https://github.com/wailsapp/wails https://github.com/wailsapp/wails (looks very decent and I would be happy to use Vue.js for a UI bit) and Flutter with desktop support (https://github.com/google/flutter-desktop-embedding https://github.com/google/flutter-desktop-embedding, in this case it's not directly using Go but you can bind them together). If this would mean that I can just use Go for everything - that's great but the only concern for me I guess is just the availability of examples and widgets. I don't consider myself a good UI designer so relying on libraries is important :)
- synw 7y agoFor Flutter desktop support consider https://github.com/go-flutter-desktop/go-flutter https://github.com/go-flutter-desktop/go-flutter : imho it works better than the official Google lib actually to compile Flutter desktop guis
- deforciant 7y agoLooks fantastic, thanks!
- chmike 7y agoOn Ubuntu 19.04 I get the error message "wayland: wl_display_connect failed". Can’t run the hello program to see something.
- vfclists 7y agoIs it just me or do are there a lot of developers who don't believe in the saying "One picture is worth a 1000 words"? Is it a Linux thing, something peculiar to developers in the Github era? If you go to a forum such a the Lazarus forums, any announced projects show pics on the forum itself, or on the websites linked. It makes me long for the bad old day so of windows when showing pics of your project was all the rage and still is. This is not just in relation to Gio, but I see so many GUI projects on Github with nary a picture in sight. Do their developers want those intrigued to go to the effort of setting up a development environment (if that succeeds) only to find that the project is half-baked mush of an apple pie?
- pier25 7y agoFirst time I hear about immediate mode GUI. Here's a previous HN coversartion about it: https://news.ycombinator.com/item?id=19744513 https://news.ycombinator.com/item?id=19744513
- pier25 7y agoVector shapes and text can go a long way but what about rendering images, video, or even SVG for icons and such?
- pier25 7y agoOff topic but... In the web world we have benchmarks for UI libraries. Is there anything similar for the native world? I remember a couple of years ago there was the bunny mark benchmark for 2d game engines (OpenFL, Flash, Pixi, etc).