Skip to main content
Wofi is a launcher/menu program for Wayland, similar to rofi but built specifically for Wayland compositors.

Overview

Wofi serves as the application launcher in this Hyprland setup, providing a clean and customizable interface for launching applications, switching windows, and more.

Configuration location

The Wofi configuration is located at .config/wofi/config.

Configuration file

.config/wofi/config
width=600
height=500
location=center
show=drun
prompt=Apps
filter_rate=100
allow_markup=true
no_actions=true
halign=fill
orientation=vertical
content_halign=fill
insensitive=true
allow_images=true
image_size=40
gtk_dark=true

Configuration options

  • width=600: Launcher window width in pixels
  • height=500: Launcher window height in pixels
  • location=center: Position on screen (center, top-left, bottom-right, etc.)
  • show=drun: Show desktop applications (alternatives: run, dmenu)
  • prompt=Apps: Text prompt displayed in the search bar
  • filter_rate=100: Milliseconds between filter updates
  • allow_markup=true: Enable Pango markup in entries
  • no_actions=true: Disable desktop file actions
  • insensitive=true: Case-insensitive search
  • halign=fill: Horizontal alignment of content
  • orientation=vertical: Vertical list orientation
  • content_halign=fill: Content horizontal alignment
  • allow_images=true: Show application icons
  • image_size=40: Icon size in pixels
  • gtk_dark=true: Use dark GTK theme

Usage modes

Wofi supports several modes:

drun

Desktop application launcher (default)

run

Command runner for executables

dmenu

Generic menu from stdin

show

Window switcher

Launching Wofi

From Hyprland

Wofi is configured as the default menu in Hyprland:
.config/hypr/hyprland.conf
$menu = wofi --show drun
bind = $mainMod, R, exec, $menu
Press SUPER + R to launch Wofi from Hyprland

Command line usage

# Launch application menu
wofi --show drun

# Launch command runner
wofi --show run

# Use as dmenu replacement
echo -e "Option 1\nOption 2\nOption 3" | wofi --dmenu

# Window switcher
wofi --show window

Styling

Wofi uses CSS for styling. The style configuration is typically in .config/wofi/style.css or .config/wofi/menu.css.

Example custom CSS

.config/wofi/menu.css
window {
    margin: 0px;
    border: 2px solid #1e1e2e;
    background-color: #1e1e2e;
    border-radius: 10px;
}

#input {
    margin: 5px;
    border: none;
    color: #cdd6f4;
    background-color: #313244;
    border-radius: 5px;
}

#inner-box {
    margin: 5px;
    border: none;
    background-color: #1e1e2e;
}

#outer-box {
    margin: 5px;
    border: none;
    background-color: #1e1e2e;
}

#scroll {
    margin: 0px;
    border: none;
}

#text {
    margin: 5px;
    border: none;
    color: #cdd6f4;
}

#entry:selected {
    background-color: #45475a;
    border-radius: 5px;
}

WiFi menu integration

The configuration includes a WiFi menu script:
.config/wofi/woif-wifi.sh
#!/bin/bash
# Wofi WiFi menu integration
# Lists available WiFi networks and connects to selected network
This can be launched from Waybar or as a custom keybinding.

Advanced configuration

Custom width and height

Adjust the launcher size based on your screen resolution:
# For 1080p displays
width=800
height=600

# For 1440p displays
width=1000
height=700

# For 4K displays
width=1200
height=900

Performance tuning

filter_rate=100    # Lower = more responsive, higher CPU usage
gtk_dark=true      # Match system theme
insensitive=true   # Case-insensitive search

Image and icon settings

allow_images=true
image_size=40      # Adjust based on preference (32, 48, 64)

Comparison with other launchers

Wofi

Native Wayland support, lightweight, simple configuration

Rofi

More features, X11 focused, complex configuration

Bemenu

Minimal, dmenu-like, very lightweight

Keybindings within Wofi

When Wofi is open:
  • Arrow keys / hjkl: Navigate through entries
  • Enter: Launch selected application
  • Escape: Close Wofi
  • Tab: Complete search term
  • Ctrl+C: Cancel and close

Troubleshooting

Ensure allow_images=true and check that icon themes are properly installed:
# Install icon theme
sudo pacman -S papirus-icon-theme
Adjust the location parameter:
location=center    # center, top, bottom, left, right
Decrease the filter rate:
filter_rate=50     # Lower value = faster updates
Wofi reads from XDG desktop entries. Verify applications have .desktop files:
ls /usr/share/applications/
ls ~/.local/share/applications/

Customization examples

Minimal launcher

width=400
height=300
show=drun
allow_images=false
gtk_dark=true

Large display launcher

width=1000
height=800
show=drun
allow_images=true
image_size=64

Command runner mode

width=800
height=100
show=run
allow_images=false
location=top

Integration scripts

The configuration includes several integration scripts:
  • woif-wifi.sh: WiFi network selector
  • Menu integration with Waybar
  • Custom dmenu replacement scripts

Hyprland

Wofi keybindings in Hyprland

Waybar

Launch Wofi from Waybar

Resources

Build docs developers (and LLMs) love