Rofi vs. Wofi vs. Wmenu: The Ultimate Wayland & X11 Guide Choosing the right app launcher is crucial for your workflow. Here’s how to pick the perfect one for your Linux setup.


👋 Hey everyone,

If you’re like me, you live in the terminal. Your window manager is minimalist, your text editor is (Neo)Vim, and your workflow is built on speed and efficiency. In this world, the application launcher isn’t just a tool; it’s the central dashboard for your entire system. It’s the bridge between your brain and your machine.

For years, on X11, the undisputed king of this domain was rofi. It was powerful, flexible, and I had it themed to perfection. But as my curiosity (and the Linux community) pivoted towards Wayland, I found myself adrift. My beloved rofi didn’t work natively. This sent me down a rabbit hole of discovery, forcing me to re-evaluate my most-used tool.

This week, I dove head-first into the “Wayland-native” launcher scene, and the three main contenders are rofi, wofi, and wmenu. What I found was a story about technical evolution, competing philosophies, and the critical importance of choosing the right tool for the job.


My Goal This Week 🎯

My mission was simple: find the best, most efficient, and most “native” application launcher for my modern Wayland setup (I’m running Arch Linux with Sway, for reference).

I needed a tool that could:

  1. Launch applications quickly (a drun mode).
  2. Run commands (a run mode).
  3. Be heavily customizable to match my terminal-based aesthetic.
  4. Be fast, lightweight, and Wayland-native.

This meant a direct, head-to-head comparison. I installed all three, read their man pages, and tried to rebuild my old rofi workflow on each of them.


The Process & The Code 👨‍💻

This isn’t a simple 1:1:1 comparison. As I discovered, these tools serve different masters. The most critical dividing line isn’t a feature—it’s the display server.

1. The King of X11: rofi

For over a decade, rofi has been the gold standard on X11 systems like i3, bspwm, and Xmonad. It’s a feature-rich powerhouse that replaced dmenu by adding a ton of functionality out of the box.

  • Philosophy: “Be a powerful, multi-purpose launcher.”
  • Key Features: drun (app launching), run (command running), ssh (remote hosts), and combi (all-in-one) modes are built-in.
  • Configuration: This is rofi’s signature. It uses its own .rasi theme file format, which is incredibly powerful but has a steep learning curve. You can control every pixel.

The “Wayland Problem” rofi is an X11 application. If you try to run it on Wayland, it might work via XWayland, but it’s not native. It can feel slow, buggy, and out of place. While the rofi project has made huge strides in adding experimental native Wayland support, the community had already forked and created dedicated tools during its long absence.

For me, running a core tool like my launcher through a compatibility layer was a non-starter.

Here’s a taste of a classic rofi script for a power menu on X11:

#!/bin/sh
# A simple rofi-based power menu for X11

options="Shutdown\nReboot\nLock\nSleep\nLogout"
chosen=$(echo -e $options | rofi -dmenu -p "Power:" -i)

case "$chosen" in
    "Shutdown") systemctl poweroff ;;
    "Reboot") systemctl reboot ;;
    "Lock") # i3lock, slock, or your lockscreen command
     ;;
    "Sleep") systemctl suspend ;;
    "Logout") # i3-msg exit, bspc quit, or your WM's exit command
     ;;
esac

This rofi -dmenu mode is its most powerful feature, allowing it to be a front-end for any script.

2. The Modern Heir: wofi

This is where my Wayland journey truly began. wofi is the spiritual successor to rofi, rebuilt from the ground up for Wayland.

  • Philosophy: “Be rofi, but for Wayland.”
  • Key Features: It successfully replicates rofi’s most important modes: drun and dmenu.
  • Configuration: This was the biggest shock. wofi doesn’t use .rasi files. It uses CSS. Yes, the same CSS you use to style websites.

This is a love-it-or-hate-it decision. On one hand, rofi’s .rasi format is obscure. On the other, CSS can feel clunky and verbose for this purpose.

Here’s a basic wofi style.css to mimic a simple dark theme:

/* ~/.config/wofi/style.css */

window {
    background-color: #2E3440;
    border: 1px solid #4C566A;
    border-radius: 8px;
    font-family: 'JetBrainsMono Nerd Font';
}

#input {
    background-color: #3B4252;
    color: #ECEFF4;
    border: none;
    padding: 8px;
    border-radius: 4px;
}

#entry {
    padding: 8px;
    color: #D8DEE9;
}

#entry:selected {
    background-color: #88C0D0;
    color: #2E3440;
}

To run it, I simply use:

# To launch applications
wofi --show drun

# To use in a script (dmenu mode)
wofi --dmenu

My experience? It’s fast, it’s 100% Wayland-native, and it “just works” on Sway. The CSS styling took some getting used to, but it’s undeniably powerful.

3. The Minimalist’s Choice: wmenu

This is the tool I misunderstood for the longest time (and I see many others make the same mistake). I initially confused it with X11-based dmenu wrappers.

I was wrong. wmenu is dmenu for Wayland.

  • Philosophy: “Do one thing and do it well.” It reads a list from stdin (standard input) and writes the user’s choice to stdout (standard output). That’s it.
  • Key Features: It has none. That’s the point. It’s not an app launcher. It’s a scripting primitive.
  • Configuration: All done via command-line flags. There are no config files. This is the suckless philosophy.

wmenu does not know how to find your applications. It doesn’t read .desktop files. You have to tell it what to display.

Want an application launcher? You have to build it yourself.

#!/bin/sh
# A wmenu-based application launcher
# This is a very basic script; real ones are more complex

# Get a list of executables from $PATH and feed them to wmenu
compgen -c | wmenu -p "Run:" | xargs -r swaymsg exec --

Want a power menu?

#!/bin/sh
# A wmenu-based power menu for Wayland
options="Shutdown\nReboot\nLock\nSleep\nLogout"

# -i makes it case-insensitive, -p adds a prompt
chosen=$(echo -e $options | wmenu -p "Power:" -i)

case "$chosen" in
    "Shutdown") systemctl poweroff ;;
    "Reboot") systemctl reboot ;;
    "Lock") swaylock ;;
    "Sleep") systemctl suspend ;;
    "Logout") swaymsg exit ;;
esac

Notice how similar this script is to the rofi one? The only change is rofi -dmenu becomes wmenu. This is the real “dmenu-mode” comparison.


Hitting The Wall 🧱

My biggest frustration wasn’t the tools themselves, but the configuration. My beautifully crafted rofi .rasi theme, built over years, was useless. With wofi, I had to learn the specific CSS selectors it uses (they aren’t always intuitive). It felt like I was styling a web page from 2005.

With wmenu, the “wall” was philosophical. I had to build everything. While I love the minimalism, I also want to get work done. Building a fully-featured .desktop parser in shell script just to replicate wofi --show drun felt like reinventing the wheel.


The Breakthrough Moment ✨

The “Aha!” moment came when I stopped trying to find a single “winner.” I realized they aren’t competing for the same user.

  • rofi is the X11 King. If you’re on i3, stay with rofi. It’s feature-complete, and its experimental Wayland mode is getting better if you really want to try it.
  • wofi is the Wayland rofi Replacement. If you’re on Sway/Hyprland and you loved rofi’s all-in-one drun and dmenu modes, wofi is your answer. It’s the pragmatic, feature-rich choice for Wayland.
  • wmenu is the Wayland dmenu Replacement. If you’re a true minimalist, a script-heavy user, or you believe a launcher should only be a menu and nothing more, wmenu is your tool. It’s lighter, faster, and has zero dependencies (unlike wofi’s GTK3).

The choice isn’t rofi vs. wofi vs. wmenu. The real choices are:

  1. For App Launching: rofi (X11) vs. wofi (Wayland)
  2. For Scripting: dmenu (X11) vs. wmenu (Wayland)

To truly master tools like wmenu, or to write the complex scripts that feed rofi and wofi, you need a rock-solid foundation in the shell. The one book I recommend to every single Linux user, from beginner to expert, is “The Linux Command Line” by William Shotts.

Amazon

It’s not just a list of commands. It’s a comprehensive journey that teaches you the philosophy of the shell. You’ll learn shell scripting, text processing with sed and awk, and the fundamentals that power every tool we’ve discussed today. If you want to build your own wmenu scripts, this book is your bible.


Key Takeaways 📚

  1. 💡 X11 vs. Wayland is the first question. Don’t run X11-native apps on Wayland (via XWayland) if you can avoid it, especially for core UI elements. Choose the native tool for your display server.
  2. ⚙️ wofi is the pragmatic choice for Wayland. It gives you 90% of rofi’s functionality (specifically drun and dmenu) in a native package. Be prepared to learn some CSS.
  3. 📚 wmenu is a philosophy, not just a tool. It’s the minimalist’s dream and a “batteries-not-included” toolkit. It’s the true successor to dmenu, and it’s perfect for scripting, but it’s not a drop-in app launcher.

Thanks for Following ☕

This was a fun exploration that solidified my own workflow. I’m personally sticking with wofi for its excellent balance of features and native Wayland performance.

☕ If you found this guide helpful, you can Buy Me aCoffee! Medium Etsy LinkedIn Read More

Which application launcher do you use in your Linux build, and what’s the one custom script you can’t live without?