(this uses my fuzzel config, see below)
raffi is a launcher for fuzzel, 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.
Make sure you install fuzzel
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.
Icon path are automatically searched on your system and cached, if you need to refresh the cache
you can use the option -r/--refresh-cache
.
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 --
First you may want to configure your fuzzel appearance and behaviour, by
configuring your file ~/.config/fuzzel/fuzzel.ini
see the manpages
here. My configuration:
dpi-aware=yes
font=RobotoMonoNerdFont-Thin:size=16
terminal=kitty
width=50
layer=overlay
exit-on-keyboard-focus-loss=no
inner-pad=15
fields=filename,name
[colors]
background=282a36ff
text=f8f8f2ff
match=8be9fdff
selection-match=8be9fdff
selection=44475add
selection-text=f8f8f2ff
border=bd93f9ff
Raffi configuration file is located at $HOME/.config/raffi/raffi.yaml
and it has the following structure:
firefox:
binary: firefox
args: [--marionette]
icon: firefox
description: Firefox browser with marionette enabled
- binary: The binary to be executed (if not exist in PATH it will be skipped)
- 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.
- Chmouel Boudjnah https://github.com/chmouel
- Fediverse - <@[email protected]>
- Twitter - <@chmouel>
- Blog - <https://blog.chmouel.com>