Making desktop apps with crystal, cli or gui

crystal is almost great for desktop app development, but just one issue.
there’s no cross compilation unless you count the oldfashioned $100 per compilation on a CI/CD, which isn’t an option for free app development as a hobby.
is it possible to make cross compilation actually good, and when someone will make it so?

so, could you give me the simple outline how to do it?

Are you checking the above post carefully?

yes but youtube videos don’t help me much because I’m blind.

Just yesterday the author of these videos published a written article about cross-compiliation: Cross-compiling Crystal applications - Part 1

just an image, I can’t read anything from an image, my screenreader doesn’t work with them unless someone labels them.

What image?

I also don’t see an image anywhere, maybe a popup? Here’s a direct link to the blog post that appears to be all text: Cross-compiling Crystal applications - Part 1

Hope it helps :)

ok, but that’s just some technical info not actual like, how do I do this without going weird with writing my own compiler and stuff.

Maybe this will work for you?

Not native language writer, and please ignore the bad English, but i thought this post have everything you need.

I am not a professional programmer, but here is how I create command-line tools in Crystal:

  1. Make it open-source. This way, GitHub Actions can be used for free, so there is no need to pay for CI. These actions will automatically run and upload releases when a version tag is added.
  2. For Linux, use the official Docker image to create statically linked binaries.
  3. For Mac, do not create statically linked binaries because the method is not yet established. Instead, provide a homebrew tap so users can install it using the brew command.
  4. For Windows, if the project is purely written in Crystal, you can create statically linked binaries by using the --static option. It is difficult to call C libraries on Windows.

For the GUI, there are not many good options. But if you only need to support Linux and Mac, I think gtk4 is the best choice. If you want to support Windows, there are no best practices, so you will have to write your own code and run around.