#task #command #launch

app raffi

A simple wofi launcher based on YAML file

2 releases

0.0.5 Feb 28, 2023
0.0.3 Feb 28, 2023

#374 in Command line utilities


251 lines

raffi - wofi launcher on yaml config file


raffi is a launcher for wofi, it uses a yaml config file to define the commands to be executed.



Go to the release page and grab the archive or package targeting your platform.


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


cargo install raffi


With your favourite aurhelper for example yay :

yay -S raffi-bin


You can launch it directly and it will run the binary and args as defined in the configuration.

With the option -p/--print-only it will only print the command to be executed.

You can specify a custom config file with the -c/--configfile option.


Here is an example on how to use this with Sway:

// set a variable that can be easily used later in the config file
// those variables are optionals
set $menu raffi -p

// Mod4 is the Super key for me but use whatever you want.
set $super Mod4

// will bind the super+space key to launch the launcher
bindsym $super+Space exec $menu|xargs swaymsg exec --


The configuration file is located at $HOME/.config/raffi/raffi.yaml and it has the following structure:

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

binary: The binary to be executed description: The description to be displayed in the launcher args: The arguments to be passed to the binary as array i.e: [foo, bar] (optional) icon: The icon to be displayed in the launcher if not specified it will try to use binary name (optional)

icons are searched in /usr/share/icons, /usr/share/pixmaps, $HOME/.local/share/icons or in $XDG_DATA_HOME if set and matched to the icon name. You can as well specify the full path in there.


there is some mininal support for conditions, to let you run a command only if a condition is met. They are all optional and cannot be used in combination.

ifexist: show entry if a file exist in PATH or the full path can be specified ifenvset: show entry if the environment variable is set ifenvnotset: show entry if the environment variable is not set ifenveq: show entry if the environment variable is equal to the value, for example:

ifenvset: [FOO, bar]

will only show the entry if an environment variable FOO is set and its value is bar.


See the file located in examples/raffi.yaml for a comprehensive example.