gravel is a no-nonsense application launcher built for speed and efficiency.
It supports fuzzy searching without any other heuristics, ensuring consistent performance and reliable, repeatable results. Sensible defaults coupled with a powerful configuration system allow you to get started quickly or spend some time dialing in your experience.
- Native FLTK UI
- Plugins
- Global Hotkeys
- Flexible configuration
- Built-in providers:
- Application launching
- Calculator
- Web searches
- Shutdown, reboot etc.
- Process killing
- Shell command execution
Binaries are available for the following x86-64 platforms:
Platform | ||
---|---|---|
Arch | Package | AUR |
Debian | Package | |
Linux | Binaries | |
Windows | Portable | Installer |
You can then start using gravel right away with the default hotkey alt + space, no configuration required.
gravel uses a hierarchical configuration system, meaning you can set options at the user, platform and host level, each of which overrides the last. This allows for easy configuration re-use across systems while still retaining the freedom to configure differing options for each.
To get started, place config.yml in ~/.config/gravel/config.yml
and edit it to your liking. It contains explanations for each option as well as the configuration system itself.
Using the devcontainer is highly encouraged to get up and running ASAP, otherwise:
-
Install Dependencies
Arch or derivatives
pacman -S libx11 libxext libxft libxinerama libxcursor libxrender libxfixes pango cairo libgl mesa coreutils gtk3 xdg-utils xorg-server-xvfb
Debian or derivatives
apt install libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev libgl1-mesa-dev libglu1-mesa-dev libgtk-3-bin libwayland-dev wayland-protocols libdbus-1-dev libxkbcommon-dev xdg-utils xvfb --no-install-recommends
Windows
Rustup installation should suffice. -
Use normal cargo commands for development (
cargo build
,cargo run
), usecargo-make
for packaging.
gravel has three core components:
- Frontend: the UI you interact with, where you enter your queries and select the hits.
- Query Engine: forwards the query to the providers, then scores and processes the hits.
- Providers: process the query and return hits, like programs, system actions or math hits.
Both the frontend and provider components can be swapped out via plugins, allowing you to mold gravel to your exact needs.
Plugins are implemented using abi_stable
, thus allowing libraries to be loaded at runtime. Writing a provider is quite straightforward, take a look at the plugin interface documentation and the example provider for an overview.
gravel's version is the version of the plugin interface, which follows semver.