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

Optional Runtime Dependencies

Several modules require additional system services. If a service is missing, the corresponding module will simply not show data (ashell will not crash).

PackageRequired byPurpose
upowerSettings (Power), System InfoBattery status, power profiles
networkmanagerSettings (Network)WiFi, wired, VPN management
iwdSettings (Network)Alternative WiFi backend (fallback)
bluezSettings (Bluetooth)Bluetooth device management
pipewirePrivacy, AudioScreenshare/mic detection, audio routing
pulseaudio / pipewire-pulseSettings (Audio)Volume control, sink/source management

Note: Temperature monitoring reads the kernel hwmon sysfs interface directly (no extra package required). To find the correct sensor label for your hardware (e.g. "acpitz temp1"), install lm_sensors and run the sensors command.