https://github.com/thorio/gravel
Cross-platform application launcher for Linux and Windows
https://github.com/thorio/gravel
cross-platform keystroke launcher productivity rust
Last synced: about 1 month ago
JSON representation
Cross-platform application launcher for Linux and Windows
- Host: GitHub
- URL: https://github.com/thorio/gravel
- Owner: thorio
- License: gpl-3.0
- Created: 2022-01-22T15:07:55.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2025-04-02T05:57:00.000Z (about 2 months ago)
- Last Synced: 2025-04-14T03:56:30.747Z (about 1 month ago)
- Topics: cross-platform, keystroke, launcher, productivity, rust
- Language: Rust
- Homepage:
- Size: 2.38 MB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gravel


[](https://aur.archlinux.org/packages/gravel-bin)
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][arch-pkg] | [AUR][arch-aur] |
| Debian | [Package][debian-deb] | |
| Linux | [Binaries][linux-tar] | |
| Windows | [Portable][windows-zip] | [Installer][windows-msi] |[arch-pkg]: https://github.com/thorio/gravel/releases/latest/download/gravel-arch-x86_64.pkg.tar.zst
[arch-aur]: https://aur.archlinux.org/packages/gravel-bin
[debian-deb]: https://github.com/thorio/gravel/releases/latest/download/gravel-debian-x86_64.deb
[linux-tar]: https://github.com/thorio/gravel/releases/latest/download/gravel-linux-x86_64.tar.gz
[windows-zip]: https://github.com/thorio/gravel/releases/latest/download/gravel-windows-x86_64.zip
[windows-msi]: https://github.com/thorio/gravel/releases/latest/download/gravel-windows-x86_64.msiYou 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][config] in `~/.config/gravel/config.yml` and edit it to your liking. It contains explanations for each option as well as the configuration system itself.
[config]: https://github.com/thorio/gravel/releases/latest/download/config.yml
# Development
Using the devcontainer is highly encouraged to get up and running ASAP, otherwise:
- [Install Rust][rustup]
- 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][cargo] for development (`cargo build`, `cargo run`), use [`cargo-make`][cargo-make] for packaging.
[rustup]: https://www.rust-lang.org/tools/install
[cargo]: https://doc.rust-lang.org/cargo/
[cargo-make]: https://github.com/sagiegurari/cargo-make### 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`][abi-stable], thus allowing libraries to be loaded at runtime. Writing a provider is quite straightforward, take a look at [the plugin interface documentation][docs] and [the example provider][example-provider] for an overview.
gravel's version _is_ the version of the plugin interface, which follows [semver][semver].
[abi-stable]: https://docs.rs/abi_stable/latest/abi_stable/
[docs]: https://thorio.github.io/gravel/docs/gravel_ffi/
[example-provider]: ./examples/example-provider
[semver]: https://semver.org/