Skip to content

chmouel/raffi

Repository files navigation

Raffi logo

Raffi Application Launcher

Raffi is an application launcher designed to sit on top of Fuzzel, or, if preferred, operate using its own built‑in interface. It allows commands and scripts to be defined in a YAML configuration file, with support for icons, arguments, conditional visibility, and script execution through configurable interpreters.

Documentation

Primary documentation lives on the docs site:

Useful entry points:

Screenshot

image

See more screenshots below

Installation

Prebuilt binaries are available from the GitHub releases page. Download the archive or package suitable for your platform. If you intend to use the default interface, Fuzzel must also be installed.

On Arch Linux, Raffi can be installed from the AUR using a helper such as:

yay -S raffi-bin

On NixOS or using Nix (unstable channel):

nix-shell -p raffi

With LinuxBrew or Homebrew:

brew tap chmouel/raffi https://github.com/chmouel/raffi
brew install raffi

From crates.io:

cargo install raffi

To build from source:

git clone https://github.com/chmouel/raffi.git
cd raffi
cargo build --release

If you only require Fuzzel integration and want a significantly smaller binary, build without the native UI:

cargo build --release --no-default-features

This reduces the binary from roughly 15 MB to around 1.1 MB by removing the iced GUI dependency.

Usage

Running raffi launches configured entries through the selected interface. The chosen item is executed according to the configuration.

See the full CLI reference: https://chmouel.github.io/raffi/reference/cli-options/

Window Manager Integration

Sway

set $menu raffi -p
set $super Mod4
bindsym $super+Space exec $menu | xargs swaymsg exec --

Hyprland

$super = SUPER
bind = $super, R, exec, (val=$(raffi -pI); echo $val | grep -q . && hyprctl dispatch exec "$val")

See also: Sway integration · Hyprland integration · Fuzzel integration

User Interfaces

Raffi supports two interface modes:

  • Fuzzel — uses the external Fuzzel launcher, integrates naturally with Wayland environments.
  • Native — built-in iced-based GUI with fuzzy search, keyboard navigation, and theme support.

The native interface includes built-in addons: calculator, currency converter, file browser, emoji/Nerd Fonts picker, script filters, web searches, and text snippets.

See: UI modes · Themes · Calculator · Currency converter · File browser · Script filters · Web search · Text snippets

Configuration

Configuration is stored in $HOME/.config/raffi/raffi.yaml. Basic example:

firefox:
  binary: firefox
  args: [--marionette]
  icon: firefox
  description: Firefox browser with marionette enabled

For full configuration reference see the docs:

Development

Contributions are welcome. Issues, feature requests, and pull requests can be submitted via GitHub.

To enable pre‑commit hooks that run cargo clippy before pushing:

pip install pre-commit
pre-commit install

Screenshots

File Browser (/)

optimized-file-browse

Currency Converter ($)

image

Calculator

image

Script Filter with github PR browser

optimized-pull-requests-dashboard

Script Filter with timezone converter

image

Light Theme

suspend-to-sleep-then-hibernate

Licence

This project is released under the MIT Licence.

Author

Chmouel Boudjnah