Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Prerequisites

System Requirements

Rust Toolchain

ashell requires Rust 1.89+ (edition 2024). Install via rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Build Dependencies

The following system libraries are required to compile ashell:

PackagePurpose
pkg-configLibrary discovery
llvm-devLLVM development files
libclang-dev / clangClang for bindgen (PipeWire/PulseAudio bindings)
libxkbcommon-devKeyboard handling
libwayland-devWayland client protocol
libpipewire-0.3-devPipeWire audio integration
libpulse-devPulseAudio integration
libudev-devDevice monitoring
dbusD-Bus daemon and development files

Ubuntu / Debian

sudo apt-get install -y pkg-config llvm-dev libclang-dev clang \
  libxkbcommon-dev libwayland-dev dbus libpipewire-0.3-dev \
  libpulse-dev libudev-dev

Fedora

sudo dnf install -y pkg-config llvm-devel clang-devel clang \
  libxkbcommon-devel wayland-devel dbus-devel pipewire-devel \
  pulseaudio-libs-devel systemd-devel

Arch Linux

sudo pacman -S pkg-config llvm clang libxkbcommon wayland \
  dbus pipewire libpulse systemd-libs

Nix (Alternative)

If you use Nix, you can skip all of the above. The project’s flake.nix provides a complete development shell with all dependencies:

nix develop

See Development Environment for details.

Runtime Dependencies

At runtime, ashell needs:

  • Wayland client libraries (libwayland-client)
  • D-Bus
  • libxkbcommon
  • PipeWire libraries (libpipewire-0.3)
  • PulseAudio libraries (libpulse)
  • A running Hyprland or Niri compositor