summaryrefslogtreecommitdiff
path: root/docs/getting-started
diff options
context:
space:
mode:
Diffstat (limited to 'docs/getting-started')
-rw-r--r--docs/getting-started/installation.md77
-rw-r--r--docs/getting-started/introduction.md23
-rw-r--r--docs/getting-started/nix.md1
-rw-r--r--docs/getting-started/supported-languages.md59
4 files changed, 160 insertions, 0 deletions
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md
new file mode 100644
index 0000000..d0c23c2
--- /dev/null
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,77 @@
+# Installation
+
+## Nix
+
+maintainer: [@Aylur](https://github.com/Aylur)
+
+Read more about it on the [nix page](./nix)
+
+## Arch
+
+maintainer: [@kotontrion](https://github.com/kotontrion)
+
+:::code-group
+
+```sh [Core Library]
+yay -S libastal-git
+```
+
+```sh [Every Library]
+yay -S libastal-meta
+```
+
+:::
+
+## Bulding libastal from source
+
+1. Clone the repo
+
+```bash
+git clone https://github.com/aylur/astal.git
+cd astal/core
+```
+
+2. Install the following dependencies
+
+:::code-group
+
+```sh [Fedora]
+sudo dnf install meson gcc valac gtk3-devel gtk-layer-shell-devel
+```
+
+```sh [Arch]
+sudo pacman -Syu meson vala gtk3 gtk-layer-shell gobject-introspection
+```
+
+```sh [Alpine]
+sudo apk add meson g++ vala gtk+3.0-dev gtk-layer-shell-dev gobject-introspection-dev
+```
+
+```sh [Ubuntu]
+sudo apt install meson valac libgtk3-dev libgtk-layer-shell-dev gobject-introspection
+```
+
+```bash [openSUSE]
+sudo zypper install gcc meson vala gtk3-devel gtk-layer-shell-devel gobject-introspection-devel
+```
+
+:::
+
+3. Build and install with `meson`
+
+```bash
+meson setup build
+meson install -C build
+```
+
+:::info
+Most distros recommend manual installs in `/usr/local`,
+which is what `meson` defaults to. If you want to install to `/usr`
+instead which most package managers do, set the `prefix` option:
+
+```bash
+meson setup --prefix /usr build
+meson install -C build
+```
+
+:::
diff --git a/docs/getting-started/introduction.md b/docs/getting-started/introduction.md
new file mode 100644
index 0000000..252484d
--- /dev/null
+++ b/docs/getting-started/introduction.md
@@ -0,0 +1,23 @@
+# Introduction
+
+## What is Astal?
+
+Astal (_meaning "desk"_) is a bundle of libraries built using [GLib](https://docs.gtk.org/glib/) in Vala and C.
+The core library [libastal](https://aylur.github.io/libastal) has some Gtk widgets that come packaged,
+the most important one is the [Window](https://aylur.github.io/libastal/class.Window.html) which is the main toplevel component using [gtk-layer-shell](https://github.com/wmww/gtk-layer-shell).
+This is what allows us to use Gtk as shell components on Wayland.
+libastal also comes with some utility functions such as running external processes,
+reading, writing and monitoring files.
+
+## Why Astal?
+
+What makes Astal convenient to use is not the core library, as it could easily be replaced
+by the standard library of any of your favorite language that has bindings to Gtk, it is the
+accompanying libraries (_formerly known as "services" in AGS_)
+
+Have you ever wanted to write a custom bar, custom notification popups
+or an applauncher, but gave up because writing a workspace widget,
+implementing the notification daemon or handling a search filter was too much of a hassle?
+
+Astal libraries have you [covered](/astal/libraries/overview), you don't have to worry about these,
+you just define the layout, style it with CSS and that's it.
diff --git a/docs/getting-started/nix.md b/docs/getting-started/nix.md
new file mode 100644
index 0000000..fd0af53
--- /dev/null
+++ b/docs/getting-started/nix.md
@@ -0,0 +1 @@
+# Nix
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.