Skip to content

Repository files navigation

Àwárí logo

Àwárí (experimental)

Awari is a Wayland launcher. Built with GPUI and fff search.

By separating a tiny, GPU-free background daemon from a warm GPU overlay, Awari pops onto your screen in an unnoticeable instant while maintaining a lean idle footprint. For ultra-low-spec hardware, it can easily drop down to a pure on-demand mode to free up every megabyte of RAM.

Screenshots

Àwárí launcher Àwárí over Alacritty

More demos

Themes


Verdant

Ember

Paper

Tokyo Night

Mono

Nord

Views


Apps category

Files category

Motivation

Most launchers fork a search tool every keystroke (fd, fzf, rg) or spin up a web runtime just to draw a box, with files as an afterthought. Àwárí runs file search in-process via fff-search and ranks windows, apps, and files together, so there's no subprocess per character and you get whichever you meant. A GPU-free shell opens the overlay with a socket message; by default it's kept alive (hidden) for instant re-opens, or torn down with keep-alive = false / --no-keep-alive for the leanest idle footprint (the interface rebuilds on the next open).

Usage

Bind a key to awari toggle-launcher and press it to open. Type to filter; the top match stays selected. Enter activates and closes; Escape or a background click dismisses; Up/Down move the selection. Tab ghost-completes the selected match (or fills the box); Shift+Up/Down recall past queries. Alt+Enter opens a per-row menu (Open, Show in Folder, Copy Path, Run in Terminal, Run).

Query modes:

  • Path-shaped (~, /, ., or contains /) browses the filesystem; *.pdf, !node_modules/ constrain, ../ goes up.
  • o:<path> lists a path's entries as you type.
  • r:<regex> filters files by regex.
  • > <command> runs a shell command in a terminal.
  • An arithmetic query shows its result; Enter copies it.

Category chips (All, Apps, Files, Commands, Windows) narrow the source.

Commands

The same binary doubles as its own daemon control. Run from a shell or bind any of them to a key:

  • awari toggle-launcher — show/hide the overlay.
  • awari open-launcher / awari close-launcher — explicit open or close.
  • awari restart — stop the GUI and re-exec the shell daemon so a changed config.kdl takes effect (the hidden overlay is re-spawned too). If no daemon is running (e.g. drop mode), it simply starts one.
  • awari ping — exits 0 when the daemon is up; useful for health checks.

Config is read at daemon start — there is no hot reload — so edits (including keep-alive) apply on the next awari restart or daemon start.

Features

  • Lightweight: GPU-free background daemon; overlay kept alive hidden for instant re-opens, or dropped entirely for the leanest idle footprint.
  • In-process search: fff-search ranks by frecency with no per-keystroke subprocess; matchq scores windows/apps without per-keystroke allocation. IPC read-to-damage is under 2 ms p99.
  • Bounded: LRU-capped per-directory indexes; idle CPU ~0 (sustained >1% is a bug).
  • One suggestion: inline ghost-text completion; full alternates only on ↓.
  • Wayland-native: one binary for any Wayland compositor. Overlay uses wlr-layer-shell (niri, Hyprland, sway, river, labwc); on GNOME/Mutter it falls back to a normal window for apps/files/commands.
  • Unified results: windows (focus), apps (.desktop), and files in one fuzzy/frecency list. Apps always indexed; files and windows toggleable.
  • Query power: > commands, o:<path> browse, r:<regex>, arithmetic, path navigation with constraints.
  • Theming: KDL hex tokens (no CSS/fetch); ten presets, per-token overrides, aliases (select, hover/surface, fg, muted, faint); bundled JetBrains Mono typeface by default (font "default" restores the system UI font), font-size in px.
  • Action menu, category chips, calculator, monitor-aware, lockfiles hidden.

Build

Linux + Wayland compositor (best on niri, Hyprland, sway, river, labwc via wlr-layer-shell; GNOME/Mutter falls back to a window).

# Debian/Ubuntu
sudo apt install libwayland-dev libegl-dev pkg-config
# Fedora
sudo dnf install wayland-devel mesa-libEGL-devel

cargo test
cargo run -p awari
awari ping

Install

Distribution Install
Copr Fedora 43 / 44 / rawhide sudo dnf copr enable borngraced/awari
sudo dnf install awari
Debian / Ubuntu sudo add-apt-repository ppa:borngraced/awari
sudo apt install awari
PPA coming soon
Arch sudo pacman -U awari-0.1.0-1-x86_64.pkg.tar.zst
Any Linux Prebuilt .deb, .rpm, Arch package and raw tarballs on releases

awari isn't on crates.io because it depends on a vendored, patched GPUI under .third_party/zed (a local [patch] can't be published). Install from git:

cargo install --git https://github.com/borngraced/awari awari

This builds GPUI from source, so the Build dev libraries are required. Then run it as a background service and bind a key.

systemctl --user enable --now ~/.config/systemd/user/awari.service

niri (~/.config/niri/config.kdl):

spawn-at-startup "awari"
binds {
    Mod+D { spawn "awari" "toggle-launcher"; }
}

Hyprland (~/.config/hypr/hyprland.conf):

exec-once = awari
bind = SUPER, D, exec, awari toggle-launcher

GNOME / KDE / other desktop shells: run awari as a systemd user service so it starts with your graphical session. Create the unit manually, then register and enable it:

# ~/.config/systemd/user/awari.service
[Unit]
Description=Awari Wayland launcher
PartOf=graphical-session.target
After=graphical-session.target

[Service]
Type=simple
ExecStart=%h/.cargo/bin/awari
Restart=on-failure
RestartSec=1

[Install]
WantedBy=graphical-session.target
systemctl --user daemon-reload
systemctl --user enable --now awari.service

enable --now starts it now and on every login. The unit targets graphical-session.target, which both GNOME and KDE start. awari must run under your user session (not root) — it's a Wayland client, so WAYLAND_DISPLAY / XDG_RUNTIME_DIR must be available.

Configuration

KDL at ~/.config/awari/config.kdl. Unknown keys ignored; no exec/scripts/shell interpolation; every block/token optional. Copy-pasteable full file: contrib/config.kdl.

theme {
  name "catppuccin"            // presets: awari (default) · ash · ember · verdant
                               //          paper · mono · nord · tokyonight · catppuccin · gruvbox
  // font "Inter"             // default is the bundled JetBrains Mono; any fontdb family
  //                          // override; "default"/"" = GPUI system UI font
  // font-size 14             // px, clamped to 8..=64
  accent      "#cba6f7"       // = select
  accent-dim  "#cba6f733"
  bg          "#11111b"
  panel       "#1e1e2e"
  raise       "#313244"       // = hover = surface
  border      "#45475a"
  text        "#cdd6f4"       // = fg
  text-dim    "#a6adc8"       // = muted
  text-faint  "#9399b2"       // = faint
  scrim       "#08080ce6"
}

files {
  roots "~/Documents" "~/Downloads" "~/code"   // omit/empty = XDG user dirs
  index_lockfiles false                        // show Cargo.lock, *.lock, …
  regex           false                        // file queries as regex (r: prefix forces it)
  max-results     50                           // max file rows shown
}

fff {
  watch true             // background file watcher
  fs-root-scanning true  // allow indexing the filesystem root
  mmap-cache false       // mmap pre-warm for top-frecency files
  content-indexing false // content index for content-aware filtering
  follow-symlinks false  // index through symbolic links
}

sources {
  windows true
  files   true
}

keep-alive true              // GPU overlay stays in memory between uses (default); false = exits on dismiss
// apps is always indexed and cannot be disabled

motion {
  reduced     false            // disable animations
  duration-ms 140              // open/close length, clamped to 0..=1000
}

Colors are hex: #RGB, #RRGGBB, or #RRGGBBAA. In place of the canonical token names you can also use these aliases:

Alias Sets
select accent-dim
hover, surface raise
fg text
muted text-dim
faint text-faint

About

Àwárí is a Wayland launcher. Built with GPUI and fff search.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages