Supported Languages
JavaScript
The main intended usage of Astal is in TypeScript with AGS. It supports JSX and has a state management solution similar to web frameworks. Only a minimal knowledge of JavaScript's syntax is needed to get started.
INFO
The runtime is GJS and not nodejs
Examples:
Lua
Similar to how there is a TypeScript lib for GJS, there is also an accompanying library for Lua.
Unfortunately, I have encountered very heavy performance issues with lgi, and so currently I don't recommend using Lua for full desktop shells, but only for static components that don't render child nodes dynamically, bars and panels for example.
Examples:
Python
There was a WIP library for python, to make it behave similar to the above two but I don't plan on finishing it, because I'm not a fan of python. If you are interested in picking it up, feel free to open a PR. Nonetheless you can still use python the OOP way pygobject intended it.
Examples:
Vala
Vala is a language that simply put uses C# syntax and compiles to C. It is the language most of Astal is written in. I would still recommend using TypeScript or Lua over Vala as they don't need a build step.
Examples:
C
I don't recommend using C as it requires quite a lot of boilerplate, both for build step and code.
Examples:
- TODO
Other languages
There a few more that supports gobject-introspection, most notably Haskell, Rust and C++. If you are interested and feel like contributing, PRs are welcome for bindings, and examples.