7 ms·
Show HN: GuiLite – Tiny UI framework, runs on MCU without OS
- pjmlp 8y agoLooks quite nice.
- zorro_young 8y agoThanks
- btashton 8y agoIf you are looking for something that will run on even smaller embedded devices I highly recommend LittlevGL. I have used it to throw a UI on a few projects, and found it to be surprisingly easy to get going, and fairly responsive long as you can run it in buffered mode. https://littlevgl.com https://littlevgl.com
- zorro_young 8y agoThat's really great, thanks!
- webmobdev 8y agoThis seems fantastic!
- squarefoot 8y agoThanks, this one also supports the Esp32, which is great.
- zorro_young 8y agoThe demo has a Chinese name: 天女散花(means: fairy scatter blossoms)
- tluyben2 8y agoSeems very interesting; nice work for sure. Any chance of a browser port?
- zorro_young 8y agoYes, we have. You can build & run GuiLiteSamples\HostMonitor\BuildWinCmd\WinCmd.sln You will find the UI be displayed in your browser.
- wingerlang 8y agoThe multi language example for Thai looks like it is rendering wrongly. Proper rendering: ความสูง
- sudenmorsian 8y agoSimilarly for the Hindi, where the character combinations are not properly “merging”. Multiscript support (especially Indic scripts) is hard but unfortunately this current stage is unusable. However, this framework looks promising so for instances where multiscript is not needed I’ll be interested in seeing how this one checks out.
- jake_the_third 8y agoDon't complain. Contribute. I've worked on text rendering in the past, and the amount of subtleties in how each language is rendered and the exceptions/code paths that must be implemented to properly support said languages is not insignificant. Mind you, I say this as a native speaker of these languages. I don't want to imagine the amount of effort and work that would be required to support a language I don't speak. Doubly so if I'm not being payed for it. If you need support for a language you speak, help the developer by implementing and contributing the support yourself. PS: This isn't aimed at you specifically, but to those who criticize projects for lack of language support without understanding the effort required.
- jake_the_third 8y agoFolks, downvoting me isn't going bring your language any closer to being supported. If you have a sound argument against what I stated, please voice it instead.
- raphlinus 8y agoIt's not useful advice. One does not simply add complex script support to some simplistic text drawing codebase. You have to take on dependencies to codebases at least an order of magnitude larger than GuiLite itself (wc harfbuzz/src/*.{h,hh,cc} is 86kloc and doesn't include the Unicode functions). Thus, it's a major architectural decision to support complex scripts at all, and to figure out how to do it.
- iveqy 8y agoSo this is a framework to X? Framebuffer? Wayland? Everything? How does this software fit into all other software out there?
- janoc 8y agoIt is for embedded development - e.g. your car radio or washing machine. You wouldn't use this for desktop. BTW, it is written right there in the title "runs on MCU ..." (MCU = microcontroller)
- zorro_young 8y agoFor Linux: It render the framebuffer directly -- you can check the code GuiLiteSamples/HelloParticle/BuildLinux/main.cpp For MCU: It call LCD driver for rendering pixel -- you can check the code GuiLiteSamples/HelloParticle/BuildSTM32F103/main.c For Qt, MFC, iOS, Mac: It build UI as a memory bitmap, and map it on picture Widget of Qt/MFC/iOS/MacCocoa
- pasta 8y agoThe examples of GuiLite and those of Littlevgi (posted in this thread) all look a little outdated and messy. And I can understand this. Most programmers aren't designers. But if you know why it looks outdated and messy it can help to create better looking products. The reasons are: lack of alignment and padding / font sizes all over the place. To make your product look good there are simple tricks you can use: * Only use one size of padding (and multiplications of it). * Align your items horizontal and vertical. * Try to use one font family and maybe only 3 font sizes. The above is why frameworks like Bootstrap work. They are all about alignment and consistent use of space.
- nickjj 8y agoI like to see projects like this pop up because it's so easy to fall into a trap of accepting input latency that other more bloated UI frameworks bring. As we all know, Electron is really bad in this department but it's not limited to Electron. I recently installed native Linux and the problem exists there too. Gnome terminal has a MASSIVE amount of input latency compared to xterm. Even worse than the difference between Electron and any non-Electron app in Windows. I wish more people embraced and went all-in with UI frameworks that were optimized for reduced latency. IMO reduced / low latency input is the most important feature for a terminal or code editor.
- t0astbread 8y agoAgreed. For school I have to use Visual Studio on my laptop and the input lag is just absurd. (Surprisingly Code is pretty good.)
- nickjj 8y agoYeah VSCode is pretty solid in this regard for an Electron app but I hope they continue to try and optimize it. It's still very noticeably delayed compared to something like the default WSL terminal or xterm but VSCode has much lower key press latency than Hyper and a few other Electron terminals like Terminus.
- vijaybritto 8y agoThey've re-written many performance sensitive components in C++. Thats why code performs really well. They've done a great job!
- hueho 8y agoI think Atom has components in C++. VSCode is Javascript only.
- vijaybritto 8y ago
- black_puppydog 8y agoanybody else find the JS on the site they host their demo video on weird? uMatrix shows stuff being loaded from 127.0.0.1. Not a web person, so I'm confused...
- hk-mars 8y agobad design
- maslam 8y agoPlease refrain from unconstructive comments! How would you make the design better?
- zorro_young 8y agoAny idea for improvement? Thanks