r/Fuchsia • • 19d ago

Building Camellia: a desktop shell for Fuchsia

https://drive.google.com/file/d/1Ztahtavastx-_0H4GsypO_J3wLTBazh1/view?usp=drivesdk

Hello ! I’ve been following the Fuchsia project for a while now and I have started building a desktop shell for Fuchsia (on top of Flatland APIs).

It is based on a few open source libraries (libcosmic for apps; CPU rendered for now) and also the help of AI for code generation (I still do design / architecture decisions etc).

See the video link for latest progress - it’s starting to take shape and can run a few simple apps etc. Plan is to continue to build the shell and window manager and enhance with more apps - of course will open source and release when more ready. Would love to run on a device too (starting with a supported NUC or vim3).

If you’d like to know more or contribute get in touch!

29 Upvotes

13 comments sorted by

7

u/eletious 19d ago

Exciting! Sounds like a lot of fun

3

u/thepavlosp 19d ago

Yes it is! In the beginning there was a lot of plumbing to do (boring FIDL protocols etc) but now it is all coming together and I can see the results as I build apps / applets!

3

u/andrewdavidmackenzie 19d ago

Sounds great, are you building on fucshia-sdk, and targeting x64 initially?

3

u/thepavlosp 19d ago

I’m building it on a full fuchsia source code tree as it’s all written in Rust and I think you can only build Rust components in tree. I have everything on my own directory “camellia” and maintain local patches for any rust libraries / upstream code. And I sync to fuchsia main branch every month or so to ensure I remain in sync.
Basically, I’ve built FIDL protocols for any plumbing, created a WM component, ported libcosmic (CPU-rendering path only for now - based on tinyskia), and now starting to build out the panel with more components (applets) and basic apps.
Targeting x86 for now - testing on FEMU which is obviously very laggy given Swiftshader rendering. Should also run on ARM I would think. Next step is to try and run on a supported NUC with the right graphics card (and hopefully get smooth 4k graphics!)

3

u/prONoOB1004 18d ago

Wait is it still active? So it's going to be another OS ?

3

u/thepavlosp 18d ago

Well - Fuchsia the OS is under active development : you can see on the fuchsia tree there’s a lot of check-ins etc.
There is no “desktop” product though (no desktop shell on the open source project). Obviously Google are secretive about their plans / roadmap.

What you see on the video is my own “desktop shell” building on open source technologies like libcosmic. I like the OS foundations and developing this has been a joy so far! (It’s a very elegant OS once you get the hang of it).

1

u/andrewdavidmackenzie 10d ago

They have the workbench eng "product" (something you can build), which IIUC is a fuchsia developer focused desktop build that allows component development.

Does that match what you understand also?

1

u/thepavlosp 10d ago

So - the workbench product no longer includes a working UI desktop shell - it’s an engineering focused product.. they used to have a workstation build with a simple shell (based on flutter I think) but that has all been decommissioned / removed from the source code tree. It’s in the history though. But it wouldn’t run against the current fuchsia tree.

Hence I think there is a gap for something like this - a simple desktop shell / product on fuchsia !

1

u/andrewdavidmackenzie 10d ago

I'm working on building it as we speak. Headless works. They have a simple (GUI) terminal and the workbench (GUI) in the docs and FX seems to support it.....I can build and run it, but have issues getting actual GUI showing anything

2

u/thepavlosp 10d ago

Exactly - you won’t see a GUI desktop shell. You can run some UI examples a clock but no window decoration etc.
I’ll open source my work soon and share here if you are interested