Framebuffer GUI Toolkit - Page 1
Forum section: electronics / general

author: blueskull
author_rank: Unknown
timestamp: October 23, 2017, 05:21:49 am
content: Hi all. Is there an easy to use, small footprint GUI toolkit that doesn't depend on X11 or Wayland?I know there's Qt and more, but I need a few features specifically:1. 100% static build without even libc dependency.2. If can't be statically linked, it must be Yocto friendly.3. Simple build environment (no Qt mess).4. Free (no uGFX).5. With RAD tool.So far my best candidate is Mono/Winforms, but it doesn't play well with Yocto and the official OE mono layer doesn't compile.Any suggestions on a GUI toolkit or suggestion on how to get mono to work?

author: nctnico
author_rank: Super Contributor
timestamp: October 23, 2017, 10:38:43 am
content: I have used WxWidgets together with the minimal version of X-Windows. I have looked into this as well but without some form of X-Windows you will end up in a world of pain.

author: Fredderic
author_rank: Regular Contributor
timestamp: October 23, 2017, 12:48:19 pm
content: Also, what programming environment are you using? Many of them bring along a lightweight UI toolkit of their own (anything from Microsoft, of course, will be pushing you towards Windows and .NET), which tends to be pretty system agnostic and static, though they often don't have RAD tools — though for anything with those other requirements you list, I've typically found the RAD tools to be more fiddly than just doing it in code (extra files, separate bindings, and a lot of extra allocations and fluff that wouldn't otherwise be necessary). You mention Qt, so probably C++ or it's ilk, but figured it was worth asking.

author: abraxa
author_rank: Frequent Contributor
timestamp: October 23, 2017, 09:24:47 pm
content: The enlightenment foundation libraries (EFL) may be worth a look:https://www.enlightenment.org/abouthttps://www.enlightenment.org/docs/distros/yocto-startAs far as I can tell, the main issue seems to be that there's no RAD tool.

author: nctnico
author_rank: Super Contributor
timestamp: October 23, 2017, 09:34:39 pm
content: Quote from: blueskull on October 23, 2017, 08:03:24 pmYou need to get your disk faster. With an mSata SSD you should be able to get the boot time down a lot.

author: andersm
author_rank: Super Contributor
timestamp: October 23, 2017, 09:40:08 pm
content: I last looked seriously at this maybe five years ago, and back then Qt was the only serious contender. At work we're currently using a browser-based UI running on QtWebKit. We're still on Qt 4.8, which is well supported in Yocto, but the downside is that its version of WebKit is very outdated which has created a few headaches with third-party Javascript libraries.

author: nctnico
author_rank: Super Contributor
timestamp: October 23, 2017, 09:54:49 pm
content: Quote from: blueskull on October 23, 2017, 09:43:37 pmHow about keeping the system in standby and only boot long when the battery went flat? You'll need to figure out the power domains carefully though to get the consumption down to a few mA.

author: Whales
author_rank: Super Contributor
timestamp: October 23, 2017, 11:31:14 pm
content: SDL 1.2 supports directFB as an output device. I suspect there are lots of SDL-based GUI toolkits available. I'm not sure what complexity/level of UI you want (just text, checkboxes and buttons; or combo boxes, hover effects and resizing).QuoteWait, is this on a portable device? [flee emoticon]

author: apelly
author_rank: Unknown
timestamp: October 24, 2017, 01:04:50 am
content: Quote from: blueskull on October 24, 2017, 12:12:29 amI haven't closely read the whole thread, but I reckon that's what I'd do.The guy that wrote this blog post:http://andybrown.me.uk/2013/10/19/vivaz-u5-lcd/from memory has an Atmel & an ARM graphics library on github. You'll have to dig out a link from somewhere on that site though because I don't seem to have a bookmark handy.Qt & Wx seem like way over-kill, and as you pointed out, Wx is about dead anyway.

author: andersm
author_rank: Super Contributor
timestamp: October 24, 2017, 04:43:13 am
content: Quote from: Whales on October 23, 2017, 11:31:14 pmNo, but if you're sensible about it, it doesn't consume much CPU. We're on a dual-core Cortex-A9 at 800MHz, and the idle CPU load is a couple of percent. Also, ever used the browser on your smartphone?

author: abraxa
author_rank: Frequent Contributor
timestamp: October 24, 2017, 05:50:02 am
content: Quote from: blueskull on October 23, 2017, 09:29:44 pmOn the about page I linked to, it says"Framebuffer, Wayland, X11, Windows, OSX Cocoa, SDL, PS3, Linux DRM handling"As for the licenses, I actually forgot to check. Oops. I just did and here's the list in case you want to check for yourself:https://git.enlightenment.org/core/efl.git/tree/COPYING

author: stmdude
author_rank: Frequent Contributor
timestamp: October 24, 2017, 06:30:32 am
content: Quote from: blueskull on October 23, 2017, 08:03:24 pmI see no issue with that actually. SysV init isn't a requirement for X11, so I don't know why you're bunching those together. SysV is plenty fast though, but as soon as you start adding standard distro stuff in it, it slows down. Standard distro stuff would be hardware probing, looking for mountable FSes, etc, etc. Stuff you don't need on an embedded system.X11 starts in <100ms on an ARM9 (no, not ARMv9, a 200MHz ARM9), assuming your display-driver doesn't spend a lot of time probing monitors and crap.The key to starting X11 quickly is to not have any extensions you don't need (as they're all loaded when you start, making the disk IO the bottleneck), and configuring your inputs and displays in the config files and don't let X probe for them.As for kernel boot time, have you looked into the "lpj" kernel argument? That usually shaves off 100ms or so from the boot-time for me.

author: stmdude
author_rank: Frequent Contributor
timestamp: October 24, 2017, 06:58:14 am
content: Quote from: blueskull on October 24, 2017, 06:52:33 amFor a SysV _compliant_ system, runlevel 5 is supposed to start X. But X runs just fine without SysV-anything. It's just an app. Nothing magic. It'll get a bit cranky if you haven't setup your loopback interface and assigned it the 127.0.0.1/8 IP. A host-file entry for "localhost" probably wouldn't hurt either.Quote from: blueskull on October 24, 2017, 06:52:33 amOk, it's not quite that easy. What it does is to skip calculating the "loops per jiffy" variable on each boot. Meaning, you need to look at the kernel output from a boot without the lpj argument, take that loops-per-jiffy number and add it to the commandline like "lpj=123456".

author: stmdude
author_rank: Frequent Contributor
timestamp: October 24, 2017, 09:14:30 am
content: Quote from: blueskull on October 24, 2017, 08:21:00 amMany reasons. Kind of hard to tell from a distance. It could be how you changed the timer interval. It could also be that it's running at a "safe" frequency that early in the boot process, so you're measuring the LPJs of the CPU running at it's slowest frequency.Unless the system is very, very sluggish, I wouldn't worry. But, your kernel command line should be "lpj=30000". It's worth about 250ms of boot time.

author: Whales
author_rank: Super Contributor
timestamp: October 24, 2017, 10:32:58 am
content: For what you're doing I'd definitely run and hide from a full toolkit. Blitting pre-defined bitmaps would be perfect. You have no need for a full WIMP.QuoteI'm not sure if it was once the case that X11 could only be started by root. These days it's definitely not true.I don't run a graphical login manager, so my init does not start anything Xorg related at boot. Once I login I run 'startx'.Sidenote: I'd suggest steering clear of systemd if you can. I've had somevery bad experienceswith it on both my desktop and my previous (ARM based, but that'smostlyirrelevant) laptop. From what I read I'm not the only one. Systemd's goals are 'have every feature' and 'make Redhat great', not 'behave as I expect you to' or be simple.Are you basing your environment off a pre-existing distro? I've had success with Alpine Linux. It's one of the 'comes with nothing by default' lightweight distros (unlike my old friend Debian). It also provides an easy way for you to make your main filesystem read-only and any changes made to it temporary (lost upon shutdown); unless you intentionally run a command to save them. I've found this useful for systems deployed remotely or given to other people.

author: Canis Dirus Leidy
author_rank: Regular Contributor
timestamp: November 01, 2017, 02:05:19 am
content: Quote from: blueskull on October 23, 2017, 11:48:20 pmWhat aboutMakiseGUI?

author: technix
author_rank: Super Contributor
timestamp: November 01, 2017, 04:52:38 am
content: Just throwing this out here: GNUstep. By default it uses cairo on X11, but you can modify it into skipping X11 and spawn cairo directly on a framebuffer.GNUstep does not have its own RAD tool, but due to its compatibility you can develop and test the apps on macOS using Xcode and copy them over later.Speaking of, maybe give Apple's launchd a look as a potential systemd replacement? systemd started off as an imitation of launchd after all.Or even more hard core, iOS's XNU kernel is open source. So XNU + FreeBSD libc + launchd + GNUstep = open source iOS imitation. You may even get to run stock iOS apps.

author: voltsandjolts
author_rank: Unknown
timestamp: November 01, 2017, 10:10:19 am
content: Pygame is nice and simple for quick display hacks.I like the look of Kivy without X11 but haven't tried it yet.e.g.: