summaryrefslogtreecommitdiff
path: root/docs/getting-started/supported-languages.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/getting-started/supported-languages.md')
-rw-r--r--docs/getting-started/supported-languages.md59
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/getting-started/supported-languages.md b/docs/getting-started/supported-languages.md
new file mode 100644
index 0000000..5b273b1
--- /dev/null
+++ b/docs/getting-started/supported-languages.md
@@ -0,0 +1,59 @@
+# Supported Languages
+
+## JavaScript
+
+The main intended usage of Astal is in TypeScript with [AGS](/astal/ags/first-widgets).
+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](https://gitlab.gnome.org/GNOME/gjs) and **not** nodejs
+:::
+
+Examples:
+
+- TODO
+
+## 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](https://github.com/lgi-devs/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:
+
+- TODO
+
+## Python
+
+There is 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](https://pygobject.gnome.org/tutorials/gobject/subclassing.html) intended it.
+
+Examples:
+
+- TODO
+
+## 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.
+
+Examples:
+
+- TODO
+
+## C
+
+I don't recommend using C as it requires quite a lot of boilerplate.
+
+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.