Rofi alternatives for Wayland: app launcher, window switcher and picker for Linux
Rofi is a popular window switcher, application launcher and dmenu
replacement for Linux. dmenu
was a tiny text-only utility to display a list of binaries or lines of text and select one. The dmenu
design follows the Unix philosophy to "do one thing well". Simple!
Rofi took the idea and dressed it up with better graphics, displaying more lines, adding icons, and adding support for launching desktop apps as well as binaries.
But Rofi was designed for Xorg, an older display technology that is no longer maintained. Here we look at options inspired by dmenu
and Rofi that designed for Wayland, the newer display technology for Linux.
Why is a dmenu tool useful?
It's such a simple and and easy to use design that a single person can create a custom utility to "pick" any number of things in an afternoon, and many have. Here are somethings you can do with a tool that works like dmenu:
- Emoji picker with bemoji
- Password picker, with dmenu-lpass or passmenu
- Yubikey TOTP picker, with yubikey-oath-dmenu
- Clipboard picker, with clipman
- Download picker, with dmenufm
- Network connection picker with networkmanger_dmenu
- Qutebrowser history/bookmark picker with dmenu_qutebrowser
- Picking a window, output, or workspace to switch to with swayr
Rofi, with Wayland support
Rofi last had a release in 2022. While it's wiki says that official Wayland support is 'hopefully' coming, lbonn's temporary rofi fork that supports Wayland seems fairly permanent now. If you like Rofi just the way it is, try this.
Also, if you like send massive amounts of lines to filter– like more than 50,000– Rofi is currently the only one that start displaying lines piped in immediately even before all the lines arrived.
Ilia, the new kid on the block
The Regolith project has worked to make a slick desktop environment based first on i3 and later for Sway and Wayland. To do that, they didn't just curate apps and add some config files, they created some new apps to pull things together and one of those is "Ilia the Desktop Executor":
The screenshot is showing off a unique feature – displaying keybindings as a kind of a cheatsheet. Sway doesn't currently (mid-2024) have the ability to introspect its keybindings so Ilia instead parses a comment format from the config files– it works pretty well! Not shown in the screenshot is "text list mode", which works like dmenu where you can pass in a list of options and select one.
The challenge you may find with Ilia is finding a package for it outside of the Regolith desktop. Regolith is based on Ubuntu, so Ubuntu users will have an easier time trying this.
Fuzzel - the best among minimalist options
There are several options that focus on minimalism and speed: They can launch apps or pick an item from list like dmenu and they do it very fast.
For this category of tool, I recommend Fuzzel. It has a number of rofi and dmenu features, good documentation and ongoing maintenance. It's also widely packaged. See my page on Fuzzel for a more in-depth look at that.
Here will take a tour of some of the other options.
Wofi – Rofi, but for Wayland?
The name wofi implies that it might be "Wayland + Rofi". Wofi is definitely inspired by Rofi, but it doesn't try to be compatible. Compared to Fuzzel, Wofi has a more complex set of dependences, using GTK, CSS and Pango to render the output.
A benefit of wofi that are that it supports Pango (HTML) markup for the entries. By default, wofi doesn't display icons. When it does, the default design doesn't have much concern for design. Entries at the bottom will get cut off and there's no margin between the icons and the text.
One feature that wofi has that Fuzzel 1.10 does not is the --search
option to pre-fill the search box and immediately filter the results.
Wofi has development has also been slow. For example, three years ago there was an issue opened to allow using wofi as a single-line prompt, something Rofi can do. The feature has not been added to Wofi, but it's not possible with Fuzzel.
If you just run wofi
, it tells you needs a mode, but then doesn't tell you want the possible modes are:
$ wofi
I need a mode, please give me a mode, that's what --show is for
If you follow the advice and use --show
, it still doesn't tell you want the possible modes are:
❯ wofi --show
wofi: option '--show' requires an argument
I need a mode, please give me a mode, that's what --show is for
OK, you try man wofi
to find the possible modes, but they aren't there. It tells you read man 7 wofi
.
It turns out there are just three modes, "run", "drun" and dmenu". If Wofi wanted to provide a better use experience, it could have mentioned this up front, or just started the drun
mode by default. This would have been better:
$ wofi
Missing --show with one of: drun, run, dmenu
Yofi
Yofi supports launching desktop applications, binaries and has a dmenu mode, which it calls "dialog". Like Fuzzel, has added some mouse support.
- Yofi has very little documentation in the README, no "man" page, and sparse documentation with "yofi help" as well. The documentation is found on its wiki. It would be nice of a bare
man
page oryofi --help
mentioned that. While yofi supports icons, they are not enabled by default.
Unlike Wofi, Fuzzel and Rofi, Yofi does not support support showing icons in dmenu ("dialog") mode. A primary feature of Yofi seems to be that it's written in Rust.
Overall, Yofi seems to have fewer features and configuration options than Fuzzel.
tofi
The name tofi is because it's a tiny dynamic menu for Wayland. tofi provides three binaries: tofi
for a dmenu-like behavior tofi-run
for listing binaries and tofi-drun
for displaying desktop apps. It's written in C and does not support icons currently.
tofi
lacks some rofi/dmenu support that alternatives like wofi
and fuzzel
already have. For example, in mid-2024, tofi still had not added support for the -p prompt flag, something wofi and fuzzel have had for at least a couple of years.
One visual feature some people like about Tofi is how the list of options to pick is aligned with the right of the prompt. The effect can be emulated in Fuzzel as long as a single-character prompt is used.
bemenu
Bemenu is a dmenu-inspired tool that can run on in the terminal on X11 or Wayland. Bemenu does not have a built-in app launcher and does not support icons so it's a "no" vote for me. A curious feature of bemenu though is that it supports both Vim bindings in addition to conventional bindings. If you want to use exactly the same tool as a picker in the terminal, maybe this could be a tool for you.
dmenu-wl / wmenu
Like the classic dmenu, the Wayland-specific dmenu-wl take does not support app launching or icons. It can be used to create a single-line prompt to collect input, but fuzzel can do that too:
echo '' | fuzzel --dmenu --prompt='>: ' -l 0 --anchor bottom
There's an issue open with Fuzzel to simplify that syntax:
The one stand-out feature of dmenu-wl is that it can display a full-width bar across the top or bottom of the monitor, while Fuzzel current expresses the width only in characters. I've opened an issue for Fuzzel to support this feature as well:
There's a fork of dmenu-wl called wmenu that's been updated more recently. Wmenu doesn't attempt to document any advantages it has over dmenu-wl
. I can see that Wmenu is missing the `--prompt-only ` feature that dmenu-wl has. See the wmenu docs here.
If you really want the classic dmenu look, maybe one of these will be a good fit for you.
j4-dmenu-desktop
j4-dmenu-desktop is a bit different than any other others above because it's not trying to emulate dmenu
or rofi
. Instead, it follows the Unix philosophy of "do one thing well" and is only concerned with processing `.desktop` launcher files to build a menu to select one to launch. It then passes the result to a dmenu-like utility to launch them. It currently doesn't support icons.
If you want to use one of the text-only launchers like dmenu-wl or wmenu, then perhaps pairing them with j4-dmenu-desktop to launch desktop app will be of interest to you.
Summary
Use Rofi's Wayland fork if you want exactly Rofi, use dmenu-wl
for a dmenu
clone, try Ilia if you multi-function launcher and picker and try Fuzzel if you want a focused launcher and picker for Wayland with a good balance of features, documentation and maintenance. Enjoy!
Comments ()