Skip to content

alicin/ali

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors