andlabs / libui

Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.
Other
10.69k stars 614 forks source link

Master issue for other platforms and backends #327

Open andlabs opened 6 years ago

andlabs commented 6 years ago

Putting all of this in one place. Note that this does not include build configurations that aren't explicitly listed or made out of the box yet are still possible (such as the various BSDs, desktop on ARM, etc.); I'll probably make a separate issue for that.

Qt Status: unplanned

Android, iOS, other mobile devices (maybe even Palm OS if I'm masochistic enough) Status: unplanned I'm pretty sure the paradigms of mobile devices differ enough from those of desktop devices that this would be better served by a separate library, but I'm not 100% sure.

ncurses, other terminal APIs Status: unplanned ncurses does not have GUI components, IIRC... This page looks promising, though. There are also people who aren't as privy to ncurses as they are to other libraries like Termbox.

Haiku Status: BACK (see remodel branch)

HTML+CSS (possibly with enscriptem, or as an HTTP server, or something) Status: unplanned I have no idea where to start with this. The concept of a window would also be a pain point. Existing notes:

Plan 9 Status: wanted My nostalgia makes me want this. libcontrol is a bit incomplete; integrating libthread (required by libcontrol last time I checked) might be problematic; I forget if libdraw supports alpha transparency or floating-point coordinates; window events become moot. What even is the currently supported Plan 9 version or distribution??

OS/2, eComStation, ArcaOS Status: wanted I kinda want this both for novelty and because it seems to be making a comeback among big open source projects. I own sealed copies of OS/2 Warp 3, but I don't know what development tools I would need to get to be able to work with this, or what APIs it provides that prevent libui from working as desired here. If it turns out I would need a newer OS/2, I would need to get those as well...

Out-of-tree backends Status: unplanned I have no idea where to start with this, if it even is possible...

andlabs commented 6 years ago

It seems that the only way to do modern vector graphics with any version of OS/2 — including ArcaOS — is with cairo. Is that correct?

mischnic commented 6 years ago

HTML+CSS (possibly with enscriptem, or as an HTTP server, or something)

Qt apps can be compiled to emscripten, the performance ... depends on the app: http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki

Demos: http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki/Demos

andlabs commented 5 years ago

https://visopsys.org/developers/

andlabs commented 5 years ago

Oh I forgot about AmigaOS too

I couldn't get the 4.1 ISO to boot in WinUAE with the PPC support enabled, and supported computers are stupid expensive, so...

No clue about AROS.

andlabs commented 5 years ago

Also forgot about RISC OS, if I could even figure out how to write C code for it

andlabs commented 5 years ago

OpenVMS? It appears I'd be stuck with Motif in that case?

QNX with Photon?

andlabs commented 5 years ago

Also for the record, the reason I ask about cairo on OS/2 (and allegedly AmigaOS 4.x too? I am incredulous) is because cairo's license conflicts with libui's, so I can't bundle it except in the DLL form (which defeats the purpose of having the static library option). On Unix it's not a problem because cairo is already a dependency of GTK+, which has to be provided by the distro anyway (and if the part about AmigaOS is true then that might also be the case there), but OS/2 doesn't come with cairo (and I'm not sure about eComStation or Arca Noae).

andlabs commented 5 years ago

NetSurf apparently supports all of these and Atari TOS and maybe a few others to boot; will need to check its code

andlabs commented 5 years ago

PC/GEOS aka Breadbox Ensemble? I can't find any documentation so I don't know about the graphical capabilities it gained over time, but I do see the ExtUI has some stuff we can use...

andlabs commented 5 years ago

Okay so it is possible to write graphical programs in C++ for Fuchsia: https://fuchsia.googlesource.com/topaz/+/refs/heads/master/examples/ui/paint/paint_view.cc (I think this specific repo is outdated though)

andlabs commented 5 years ago

QNX 4.25 Photon's API doesn't seem to have alpha blending, so that's a dead end for libui's graphics requirements. Not sure about newer versions, since 4.25 is rather old. (If all else fails, QNX can just use the GTK+ version via X11 instead of Photon, assuming GTK+ has been ported to QNX.)

andlabs commented 5 years ago

QNX 6.0 Photon has alpha blending; it appears this was the first version to do so, but I would need to find QNX 5.0 Photon release notes to find out. It doesn't seem to have floating-point geometry, though... unless I missed something.

andlabs commented 5 years ago

Systems I need to investigate:

andlabs commented 5 years ago

Madeline Autumn-Rose, [24.05.19 18:06] ITS graphics are weird and exciting

Pietro Gagliardi, [24.05.19 18:06] oh

Pietro Gagliardi, [24.05.19 18:06] I linked the wikipedia page on ITS because it had an interesting usability model

Pietro Gagliardi, [24.05.19 18:06] heh

Pietro Gagliardi, [24.05.19 18:06] but I don't see it has graphics????

Madeline Autumn-Rose, [24.05.19 18:06] it can kind of do graphics with special hardware and special terminals

andlabs commented 4 years ago

I did not know that GDI+ did use floating-point coordinates after all. I'm pretty sure it supports alpha-blending too. I was avoiding it under the impression that it was entirely software with no hardware acceleration whatsoever, but... maybe Windows XP can come back??? Also, https://github.com/mity/windrawlib

flisboac commented 4 years ago

Any chance of having the Qt backend done? What are the possible pain points related to it, e.g. would it be trivial or too much work?

mischnic commented 4 years ago

Here is an old unfinished branch for a Qt5 backend: https://github.com/mischnic/libui/tree/qt5

andlabs commented 4 years ago

help how do I TRON/ITRON/BTRON/µTRON

Chromium OS for the Chromium OS window managers? Assuming that it's the same as the Chrome OS window manager, and assuming that's not literally just a window manager. (Same with Webconverger? I thought Firefox OS was abandoned?)

NetWare 5 and 6 have GUIs?

Oberon/Bluebottle? Contiki? That new Redox operating system written in Rust (I can't figure out if they're writing a custom toolkit or just going to port an existing Unix toolkit over to their custom display server)?

EMBEDDED/NICHE-CPU RTOSES: THE PIPE DREAM DOMAIN

I can't tell if eCos has A GUI library, or if it's down to the POSIX/TRON compatibility layers. Same for RTEMS; I see various Unix libraries and FLTK available for it but IDK if that's just the POSIX compatibility layer or not, and I see the "Flickernoise" software provided by M-Labs has a GUI. Same for the Green Hills INTEGRITY and INTEGRITY-178 systems or the RTXC Quadros or TI-RTOS (aka DSP/BIOS) or Amahi or AUTOSAR.

https://en.wikipedia.org/wiki/Embedded_Wizard What does this use?

https://www.mentor.com/embedded-software/nucleus/ claims it supports Qt, but what does that run on top of? Directly to a framebuffer (no platform UI library)?

http://rtos.com/solutions/threadx/real-time-operating-system/ Also worth looking into, as well as the OSEK thingy it claims to have a compatibility layer for

https://www.micrium.com/rtos/gui/ and https://doc.micrium.com/pages/viewpage.action?pageId=10753198 are also promising???

Server error: http://www.dmoz.org/Computers/Software/Operating_Systems/Realtime/ http://mcu.emea.fujitsu.com/mcu_tool/detail/SWB_(FR)_V6.htm

andlabs commented 4 years ago

ToaruOS?

VSTa/MGR?

PhantomOS looks interesting but it appears to require building from source for now. NuttX is the same way.

Also need to find more info about: PowerNex

andlabs commented 4 years ago

https://twitter.com/pgandlabs/status/1212876809458659328

lol turns out the NetWare 6 GUI is just XFree86, IceWM, and either Java AWT or Swing (not sure which but I'm 90% sure it's not a native toolkit) with some apps from scratch

I'm guessing NetWare 5 GUI is the same but I haven't been able to run it successfully so

oh well, rip

andlabs commented 4 years ago

what could possibly go wrong?

https://github.com/DC-SWAT/DreamShell

This appears to use SDL as the basis for its drawing library, and provides GUI facilities through something it calls "SDL_gui", but I can't figure out if it's any existing sdl-gui or a custom thing (or where the SDL_gui source code even is in this repo). It might actually be feature complete enough for a libui port, though

It prefers applications defined using an XML specification to define the actual program itself, with loadable modules for the actual implementation, but everything does have a programmatic access point so ?????

andlabs commented 4 years ago

I should probably make this a dynamic single-post table instead of what I'm doing here.

In other news I've decided to prolong the remodel branch's already protracted development by reviving the Haiku port — but not using the old codebase that already exists.

andlabs commented 4 years ago

https://github.com/SerenityOS/serenity (pointed to its existence by @ebraminio)

foresto commented 1 year ago

I had some thoughts re: Qt, but posted them in #30 instead of here, to avoid cluttering your notes.

https://github.com/andlabs/libui/issues/30#issuecomment-1326969936