Skip to content
/ gravel Public

Cross-platform application launcher for Linux and Windows

License

Notifications You must be signed in to change notification settings

thorio/gravel

Repository files navigation

gravel

GitHub License GitHub last commit AUR Version

usage example

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.

Features

  • Native FLTK UI
  • Plugins
  • Global Hotkeys
  • Flexible configuration
  • Built-in providers:
    • Application launching
    • Calculator
    • Web searches
    • Shutdown, reboot etc.
    • Process killing
    • Shell command execution

Installation

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.

Configuration

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.

Development

Using the devcontainer is highly encouraged to get up and running ASAP, otherwise:

  • Install Rust

  • 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 xdg-utils xvfb --no-install-recommends
    

    Windows
    Rustup installation should suffice.

  • Use normal cargo commands for development (cargo build, cargo run), use cargo-make for packaging.

Architecture

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

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.