fuzzel launcher based on yaml configuration
APACHE-2.0 License
(This uses my Fuzzel configuration, see below for more details)
Raffi is a launcher for the Fuzzel utility that uses a YAML configuration file to define the commands to be executed.
Visit the release page and download the archive or package for your platform.
Ensure you have Fuzzel installed.
brew tap chmouel/raffi https://github.com/chmouel/raffi
brew install raffi
cargo install raffi
Using your preferred AUR helper, for example, yay:
yay -S raffi-bin
nix-shell -p raffi
You can launch Raffi directly, and it will run the binary and arguments as defined in the configuration.
Use the -p/--print-only
option to only print the command to be executed.
Specify a custom configuration file with the -c/--configfile
option.
Icon paths are automatically searched on your system and cached. To refresh the cache, use the -r/--refresh-cache
option.
Here is an example of how to use Raffi with Sway:
// Set a variable that can be easily used later in the config file
// These variables are optional
set $menu raffi -p
// Mod4 is the Super key for me, but use whatever you want.
set $super Mod4
// Bind the Super+Space key to launch the launcher
bindsym $super+Space exec $menu | xargs swaymsg exec --
First, configure your Fuzzel appearance and behavior by editing the file ~/.config/fuzzel/fuzzel.ini
. See the manpages here. Below is my configuration, which matches the screenshot above:
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
The Raffi configuration file is located at $HOME/.config/raffi/raffi.yaml
and has the following structure:
firefox:
binary: firefox
args: [--marionette]
icon: firefox
description: Firefox browser with marionette enabled
[foo, bar]
(optional)./usr/share/icons
, /usr/share/pixmaps
, $HOME/.local/share/icons
, or$XDG_DATA_HOME
if set and matched to the icon name. The icons paths are-r
option to refresh it. You can alsoThere is limited support for conditions, allowing you to run a command only if a specific condition is met. These conditions are optional and cannot be combined.
Here is an example of how to use conditions, this will only display the entry
if the DESKTOP_SESSION
environment variable is set to GNOME
and the
WAYLAND_DISPLAY
environment variable is set and the firefox
binary exists
in the PATH:
ifenveq: [DESKTOP_SESSION, GNOME]
ifenvset: WAYLAND_DISPLAY
ifexist: firefox
See the file located in examples/raffi.yaml for a more comprehensive example.