diff options
author | Aylur <[email protected]> | 2024-09-25 23:22:01 +0000 |
---|---|---|
committer | Aylur <[email protected]> | 2024-09-25 23:22:01 +0000 |
commit | 65654282a98cb0590d498e4ed9c924f97646f1dc (patch) | |
tree | 9150a8c5dca5429fafdd559db6e88f8bccb23d84 /docs/getting-started | |
parent | fd8c3e81d8f7b235be123ce592f89e72f65a0f05 (diff) |
docs: restructure
Diffstat (limited to 'docs/getting-started')
-rw-r--r-- | docs/getting-started/installation.md | 69 | ||||
-rw-r--r-- | docs/getting-started/introduction.md | 23 | ||||
-rw-r--r-- | docs/getting-started/nix.md | 154 | ||||
-rw-r--r-- | docs/getting-started/supported-languages.md | 65 |
4 files changed, 0 insertions, 311 deletions
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md deleted file mode 100644 index ef5c6e8..0000000 --- a/docs/getting-started/installation.md +++ /dev/null @@ -1,69 +0,0 @@ -# Installation - -## Nix - -maintainer: [@Aylur](https://github.com/Aylur) - -Read more about it on the [nix page](./nix#astal) - -## 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 - -```sh -git clone https://github.com/aylur/astal.git -cd astal/core -``` - -2. Install the following dependencies - -:::code-group - -```sh [<i class="devicon-archlinux-plain"></i> Arch] -sudo pacman -Syu meson vala gtk3 gtk-layer-shell gobject-introspection -``` - -```sh [<i class="devicon-fedora-plain"></i> Fedora] -sudo dnf install meson gcc valac gtk3-devel gtk-layer-shell-devel gobject-introspection-devel -``` - -```sh [<i class="devicon-ubuntu-plain"></i> Ubuntu] -sudo apt install meson valac libgtk3-dev libgtk-layer-shell-dev gobject-introspection -``` - -::: - -3. Build and install with `meson` - -```sh -meson setup build -meson install -C build -``` - -:::tip -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: - -```sh -meson setup --prefix /usr build -meson install -C build -``` - -::: diff --git a/docs/getting-started/introduction.md b/docs/getting-started/introduction.md deleted file mode 100644 index 7f88362..0000000 --- a/docs/getting-started/introduction.md +++ /dev/null @@ -1,23 +0,0 @@ -# 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](/libraries/references), 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 deleted file mode 100644 index 2b04bdc..0000000 --- a/docs/getting-started/nix.md +++ /dev/null @@ -1,154 +0,0 @@ -# Nix - -## Astal - -Using Astal on Nix will require you to package your project. - -:::code-group - -```nix [<i class="devicon-lua-plain"></i> Lua] -{ - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - astal = { - url = "github:aylur/astal"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = { self, nixpkgs, astal }: let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; - in { - packages.${system}.default = astal.lib.mkLuaPacakge { - inherit pkgs; - src = ./path/to/project; # should contain init.lua - - # add extra glib packages or binaries - extraPackages = [ - astal.packages.${system}.battery - pkgs.dart-sass - ]; - }; - }; -} -``` - -```nix [<i class="devicon-python-plain"></i> Python] -# Not documented yet -``` - -```nix [<i class="devicon-vala-plain"></i> Vala] -# keep in mind that this is just the nix derivation -# and you still have to use some build tool like meson -{ - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - astal.url = "github:aylur/astal"; - }; - - outputs = { self, nixpkgs, astal }: let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; - in { - packages.${system} = { - default = pkgs.stdenv.mkDerivation { - name = "my-shell"; - src = ./.; - - nativeBuildInputs = with pkgs; [ - meson - ninja - pkg-config - vala - gobject-introspection - ]; - - # add extra packages - buildInputs = [ - astal.packages.${system}.astal - ]; - }; - }; - }; -} -``` - -::: - -## AGS - -The recommended way to use AGS on NixOS is through the home-manager module. - -Example content of a `flake.nix` file that contains your `homeConfigurations`. - -<!--TODO: remove v2 after merge--> - -:::code-group - -```nix [<i class="devicon-nixos-plain"></i> flake.nix] -{ - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # add ags https://github.com/Aylur/ags/pull/504 - ags.url = "github:aylur/ags/v2"; - }; - - outputs = { home-manager, nixpkgs, ... }@inputs: - let - system = "x86_64-linux"; - in - { - homeConfigurations."${username}" = home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { inherit system; }; - - # pass inputs as specialArgs - extraSpecialArgs = { inherit inputs; }; - - # import your home.nix - modules = [ ./home-manager/home.nix ]; - }; - }; -} -``` - -::: - -Example content of `home.nix` file - -:::code-group - -```nix [<i class="devicon-nixos-plain"></i> home.nix] -{ inputs, pkgs, ... }: -{ - # add the home manager module - imports = [ inputs.ags.homeManagerModules.default ]; - - programs.ags = { - enable = true; - configDir = ../ags; - - # additional packages to add to gjs's runtime - extraPackages = with pkgs; [ - inputs.ags.packages.${pkgs.system}.battery - fzf - ]; - }; -} -``` - -::: - -AGS by default only includes the core `libastal` library. -If you want to include any other [library](../libraries/references) you have to add them to `extraPackages`. -You can also add binaries which will be added to `$PATH`. - -:::warning -The `configDir` option symlinks the given path to `~/.config/ags`. -If you already have your source code there leave it as `null`. -::: diff --git a/docs/getting-started/supported-languages.md b/docs/getting-started/supported-languages.md deleted file mode 100644 index 06ce51c..0000000 --- a/docs/getting-started/supported-languages.md +++ /dev/null @@ -1,65 +0,0 @@ -# Supported Languages - -## JavaScript - -The main intended usage of Astal is in TypeScript with [AGS](/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: - -- [Simple Bar](https://github.com/Aylur/astal/tree/main/examples/js/simple-bar) - - -## Lua - -Similar to how there is a [TypeScript](https://github.com/Aylur/astal/tree/main/core/gjs) lib for GJS, there is also an accompanying library for [Lua](https://github.com/Aylur/astal/tree/main/core/lua). -<!--TODO: open issue and link performance issue--> -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: - -- [Simple Bar](https://github.com/Aylur/astal/tree/main/examples/lua/simple-bar) - - -## Python - -There was a WIP [library for python](https://github.com/aylur/astal/tree/feat/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: - -- [Starter Bar](https://github.com/Aylur/astal/tree/main/examples/py/starter-bar) - -## 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: - -- [Simple Bar](https://github.com/Aylur/astal/tree/main/examples/vala/simple-bar) - - -## 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. |