tobychui / arozos

Web Desktop Operating System for low power platforms, Now written in Go!
https://os.aroz.org
GNU General Public License v3.0
2k stars 145 forks source link

[Feature request] Catclock #108

Open markusbkk opened 2 years ago

markusbkk commented 2 years ago

Is your feature request related to a problem? Please describe. Technically, it should be a crime to ship an operating system without a clone of the venerable X10/X11 catclock 😸

Describe the solution you'd like I'm in the process of creating a "naive" implementation myself but would like to ask for some help.

While the eyes and clock hands are CSS primitives, the base "sprite" is essentially re-used from catback.xbm. I converted it to a PNG through Convertio and then used another online service to vectorize it (surprisingly, the result is better/closer to the original than what I had previously been able to produce through Inkscape).

My knowledge of vector graphics and the SVG format is rather limited and I'm stuck attempting to remove the white background from the base stencil (see SVG file below) I generated through PngToSvg.

Would be great if somebody could help and remove the white background without changing other attributes (as a happy little accident will have it, I'm able to partly colorize the SVG with custom CSS variables, similar to how the original can be colorized).

Describe alternatives you've considered

An alternative is to recreate the entire look through CSS primitives and/or handwritten SVG, or by having a talented vector artist pen a high res replica.

Another alternative is to use an HTML canvas to emulate a framebuffer and render the original xbm pixel by pixel, ideally doubling all pixels for a higher resolution. That, however, seems rather a bit more complicated (especially when it comes to addressing the correct pixels for colorization) and will probably be less performant.

Additional context

The SVG in question (I changed height/width to 100% each, so it scales with the window. Other than that, it's straight from PngToSvg)

image2vector

Demo: Screen-recording-2022-10-26-10 07 43-PM

I will open source the full code as soon as it's properly polished and has the correct graphics (still missing the tail, too). Note that the kind of grainy/retro look of the demo is from the WEBM to GIF conversion and not part of the initial offering (although I dig it enough, I might consider adding full screen filters like that).

As a follow-up, I'd also be interested in implementing frameless windows with custom handles for this, sometime down the line.

Your OS is, by far, one of the top 5 things I've found on GitHub throughout the years. I was actually working on an OS similar to yours myself, but I was too fixated on certain hard-to-implement details so it never took off the way yours did.

tobychui commented 2 years ago

Hi @markusbkk ,

I have asked around in the authors group, it seems no author is free to help you with this feature. Maybe you can ask around in the ArozOS user telegram group? You can find the link in the README file.

Thanks for your feature request :)

markusbkk commented 2 years ago

Hi @markusbkk ,

I have asked around in the authors group, it seems no author is free to help you with this feature. Maybe you can ask around in the ArozOS user telegram group? You can find the link in the README file.

Thanks for your feature request :)

I left Telegram due to too much drama (living in Germany, it's also not safe for me to be on there. Not with the current German government)

Anyhow. I made some progress removing it from the PNG and tracing it without the background. Next I might give editing the original XBM a try.

RN I'm experimenting with turning the whole thing into multiple (P)react components.

Coincidentally, I just got the original catclock to work in Greenfield.

IMHO, integrating Greenfield with something like ArozOS would be an absolute killer-app. With decent performance optimizations and GPU acceleration on the Greenfield/Wayland side, we would have the building blocks for a wholly new distro with the ability of running GNU/Linux applications straight in the browser.

pierrehunt commented 2 weeks ago

I can assist with this - professional designer.

Let's talk