Astal is a collection of GObject-based libraries written in Vala and C, designed for building lightweight desktop widgets and full-featured shell environments on Linux. It provides reusable primitives for system tray, notifications, audio control (WirePlumber/PipeWire), Bluetooth, network, battery, brightness, MPRIS media players, workspace management (ext-workspace-v1, Hyprland, River), power profiles, and more. The libraries expose GObject introspection data (GIR) and VAPI files, enabling bindings in GJS (JavaScript), Lua, and Python. The architecture follows a monorepo pattern with small, focused libraries each exporting GObject types, CLI tools, and pkg-config files. Core entry points include CLI utilities (astal-notifd, astal-workspace, astal-mpris, astal-brightness) and library APIs consumed by GTK3/GTK4 shell implementations. Examples demonstrate complete panels with reactive templates using the `Variable`/`Binding` system. The project also includes a Nix flake for reproducible builds. External dependencies include GTK, GLib, NetworkManager, BlueZ, WirePlumber, and Wayland protocols.