Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ali

A fast, keyboard-first application launcher for Hyprland and other wlroots compositors. Built with GTK4 + libadwaita — looks at home on any GNOME-style desktop and respects your accent color and dark-mode preference.

screenshot placeholder


Features

Adwaita-native UI GTK4 + libadwaita; follows your system accent color and dark-mode setting
App grid Discovers .desktop files from all XDG data dirs; live-updates when apps are installed or removed
Fuzzy search Powered by nucleo-matcher; searches name, generic name, keywords, and categories
Folders Drag one tile onto another to group them; rename via the popover header
Drag-to-reorder Drop on a tile's left/right edge to reorder; drop on its center to fold into a group
Frecency strip Top 8 most-launched apps float to the top, scored by launch count with 14-day half-life decay
Layer-shell overlay Runs as a Wayland layer-surface (exclusive keyboard grab) on Hyprland/wlroots; falls back to a normal window where unsupported
Single-instance A second invocation brings the existing window to the front instead of spawning a new one
Keyboard-first Type anywhere to search; arrow keys navigate the grid; Enter launches; Esc clears → closes
Hand-editable config Plain TOML in ~/.config/ali/ — layout and frecency are both human-readable and atomic-written

Requirements

  • GTK 4.12+
  • libadwaita 1.5+
  • gtk4-layer-shell 1.0+
  • Rust 1.80+

On Arch Linux:

sudo pacman -S gtk4 libadwaita gtk4-layer-shell

On Fedora:

sudo dnf install gtk4-devel libadwaita-devel gtk4-layer-shell-devel

Build & Install

# Build a release binary
make build

# Install to /usr/local (default)
sudo make install

# Install to a user-local prefix
make install PREFIX=$HOME/.local

This installs:

  • ali binary → $PREFIX/bin/ali
  • dev.bunniesinc.Ali.desktop$PREFIX/share/applications/ (NoDisplay=true, so ali doesn't appear inside itself)

Uninstall

sudo make uninstall

Usage

ali              # layer-shell overlay — intended for keybind invocation
ali --windowed   # ordinary window — useful for testing or non-Hyprland sessions

Hyprland keybind

Add to ~/.config/hypr/hyprland.conf:

bind = SUPER, SPACE, exec, ali

Disable layer-shell (force windowed)

ALI_NO_LAYER_SHELL=1 ali

Keyboard shortcuts

Key Action
Any printable character Focus search and start typing
Backspace Focus search and delete last character
Enter Launch highlighted app
/ / Tab Move focus into the grid
Esc Clear search text, or close the launcher

Configuration

All config files live in ~/.config/ali/ and are written atomically.

layout.toml

Controls the grid order and folder definitions. Reorderings via drag-and-drop are written back automatically. You can also edit it by hand:

items = [
  { app = "org.gnome.Nautilus" },
  { folder = "dev-tools" },
  { app = "org.mozilla.firefox" },
]

[folders.dev-tools]
name = "Dev Tools"
app_ids = ["dev.zed.Zed", "com.mitchellh.ghostty"]

frecency.toml

Launch counts and last-used timestamps. Edited automatically on each launch; you can delete it to reset the frecency strip.


Project layout

src/
  main.rs           CLI parsing + tracing init
  app.rs            adw::Application bootstrap, CSS loading, single-instance guard
  persistence.rs    atomic TOML read/write for layout, frecency, and app cache
  search.rs         nucleo-matcher fuzzy ranking with field weights
  model/
    apps.rs         AppIndex — discovers .desktop files, background refresh, GIO monitor
    layout.rs       grid order + folders, with reconciliation against known apps
    frecency.rs     half-life-decayed launch scoring
  ui/
    window.rs       LauncherWindow — layer-shell or windowed, search wiring, key handling
    grid_item.rs    GObject wrapper used by ListStore / GridView
    tile.rs         tile widget (icon + label, folder thumbnail grid)
    dnd.rs          DragSource / DropTarget wiring (reorder, fold, drag-from-folder)
data/
  style.css                         scoped visual tweaks on top of Adwaita
  dev.bunniesinc.Ali.desktop        installed .desktop entry

License

MIT

About

Open source app launcher for Linux. Compatible with tiling window managers.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages