Configuration Overview
Explore all configuration options and advanced features
This guide will help you configure and launch your first application with Raffi.
Create the config directory
Raffi looks for its configuration at ~/.config/raffi/raffi.yaml. Create the directory:
mkdir -p ~/.config/raffiCreate a basic configuration file
Create ~/.config/raffi/raffi.yaml with a simple entry:
version: 1launchers: firefox: binary: firefox icon: firefox description: Firefox Web Browser
terminal: binary: kitty icon: kitty description: Kitty Terminal
file_manager: binary: nautilus icon: folder description: File ManagerTest your configuration
Run Raffi in print-only mode to verify the configuration:
raffi -pThis will display your configured entries without executing them.
Raffi supports two interface modes:
Fuzzel mode uses the external Fuzzel launcher for a minimal, Wayland-native experience.
First, ensure Fuzzel is installed:
sudo pacman -S fuzzel sudo apt install fuzzel git clone https://codeberg.org/dnkl/fuzzel.git cd fuzzel meson build ninja -C build sudo ninja -C build installraffiOr explicitly specify Fuzzel mode:
raffi -u fuzzelCustomize Fuzzel’s look in ~/.config/fuzzel/fuzzel.ini:
dpi-aware=yesfont=RobotoMonoNerdFont-Thin:size=16terminal=kittywidth=50layer=overlayexit-on-keyboard-focus-loss=noinner-pad=15
[colors]background=282a36fftext=f8f8f2ffmatch=8be9fdffselection=44475addborder=bd93f9ffNative mode uses Raffi’s built-in iced-based GUI with additional features like calculator, file browser, and more.
raffi -u native# Dark theme (default, Dracula-inspired)raffi -u native -t dark
# Light theme (Rose Pine Dawn)raffi -u native -t lightTo always use native mode, add this to your config:
general: ui_type: native theme: dark font_size: 20 window_width: 800 window_height: 600Raffi can execute inline scripts with any interpreter:
launchers: hello_script: script: | echo "Hello from Bash!" notify-send "Raffi" "Script executed successfully" description: "Hello Script" icon: "script"launchers: check_disk: binary: python3 script: | import shutil usage = shutil.disk_usage("/") percent = (usage.used / usage.total) * 100 print(f"Disk usage: {percent:.1f}%") description: "Check Disk Usage" icon: "drive-harddisk"launchers: node_example: binary: node script: | const os = require('os'); console.log(`Hostname: ${os.hostname()}`); console.log(`Platform: ${os.platform()}`); description: "System Info (Node)" icon: "nodejs"Integrate Raffi with your Wayland compositor:
Add to ~/.config/sway/config:
set $menu raffi -pset $super Mod4bindsym $super+Space exec $menu | xargs swaymsg exec --Reload Sway config:
swaymsg reloadNow press Super+Space to launch Raffi!
Add to ~/.config/hypr/hyprland.conf:
$super = SUPERbind = $super, R, exec, (val=$(raffi -pI); echo $val | grep -q . && hyprctl dispatch exec "$val")Reload Hyprland config or restart Hyprland, then press Super+R to launch Raffi.
For other Wayland compositors, bind a key to execute:
raffi -p | xargs swaymsg exec --Or for direct execution:
raffiJust start typing a mathematical expression:
2 + 2 * 5sqrt(144) + log(100)sin(90) * 50Press Enter to copy the result to clipboard.
Type $ followed by an amount and currency:
$100 to eur$50 gbp to usd$10eur to jpyaddons: currency: enabled: true trigger: "$" default_currency: USD currencies: ["USD", "EUR", "GBP", "JPY", "CAD"]Navigate your filesystem by typing:
/ - Browse root directory~ - Browse home directory/home/user/Documents - Browse specific pathKeyboard shortcuts:
Add web searches to your config:
addons: web_searches: - name: "Google" keyword: "g" url: "https://google.com/search?q={query}" icon: "google"
- name: "GitHub" keyword: "gh" url: "https://github.com/search?q={query}" icon: "github"
- name: "Wikipedia" keyword: "wiki" url: "https://en.wikipedia.org/wiki/{query}" icon: "wikipedia"Then type:
g wayland protocolgh user/repowiki rust programminglaunchers: firefox_private: binary: firefox args: [--private-window] icon: firefox description: Firefox Private Window
code_workspace: binary: code args: [~/projects/myapp] icon: vscode description: Open MyApp in VS Codelaunchers: gnome_tweaks: binary: gnome-tweaks description: GNOME Tweaks icon: gnome-tweak-tool ifenveq: [DESKTOP_SESSION, GNOME]
wayland_only_app: binary: my-wayland-app description: Wayland App icon: wayland ifenvset: WAYLAND_DISPLAY
docker_compose: binary: docker-compose description: Docker Compose icon: docker ifexist: docker-composelaunchers: custom_script: binary: ${HOME}/bin/my-script args: ["${XDG_DATA_HOME}/files", "~/Documents"] icon: ~/icons/custom.png description: My Custom Script ifexist: ~/bin/my-scriptlaunchers: lock_screen: binary: swaylock args: [-f, -c, "000000"] icon: system-lock-screen description: Lock Screen
suspend: binary: systemctl args: [suspend] icon: system-suspend description: Suspend to RAM
poweroff: binary: systemctl args: [poweroff] icon: system-shutdown description: Power Offraffi -praffi -c ~/.config/raffi/work.yamlraffi -rraffi -Iraffi -u native -i "firefox"raffi --default-script-shell /bin/zsh