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:
- Launch applications quickly (a
drunmode). - Run commands (a
runmode). - Be heavily customizable to match my terminal-based aesthetic.
- 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), andcombi(all-in-one) modes are built-in. - Configuration: This is
rofi’s signature. It uses its own.rasitheme 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:drunanddmenu. - Configuration: This was the biggest shock.
wofidoesn’t use.rasifiles. 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 tostdout(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
sucklessphilosophy.
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.
rofiis the X11 King. If you’re on i3, stay withrofi. It’s feature-complete, and its experimental Wayland mode is getting better if you really want to try it.wofiis the WaylandrofiReplacement. If you’re on Sway/Hyprland and you lovedrofi’s all-in-onedrunanddmenumodes,wofiis your answer. It’s the pragmatic, feature-rich choice for Wayland.wmenuis the WaylanddmenuReplacement. If you’re a true minimalist, a script-heavy user, or you believe a launcher should only be a menu and nothing more,wmenuis your tool. It’s lighter, faster, and has zero dependencies (unlikewofi’s GTK3).
The choice isn’t rofi vs. wofi vs. wmenu.
The real choices are:
- For App Launching:
rofi(X11) vs.wofi(Wayland) - For Scripting:
dmenu(X11) vs.wmenu(Wayland)
📚 Recommended Resource
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.
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 📚
- 💡 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.
- ⚙️
wofiis the pragmatic choice for Wayland. It gives you 90% ofrofi’s functionality (specificallydrunanddmenu) in a native package. Be prepared to learn some CSS. - 📚
wmenuis a philosophy, not just a tool. It’s the minimalist’s dream and a “batteries-not-included” toolkit. It’s the true successor todmenu, 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?
