Skip to content

Change default launcher from Wofi to Walker #218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 38 commits into from
Jul 20, 2025

Conversation

ryanrhughes
Copy link
Contributor

Over the past week or so, some of the quirks of Wofi have become really noticeable so I went on a bit of a launcher bender in pursuit of the Goldilocks of launchers.

As a part of this, I looked at a ton but formally evaluated (used, built themes for, etc.) Tofi, Rofi, Fuzzel, Ulauncher, and Walker.

TLDR; After spending a ton of time with a bunch of launchers, I believe that Walker is the only Hyprland first launcher that is fast, not overly complex, and is extendable. As such, it should be the default in Omarchy.

Problems

To begin with, let's outline the problems I've seen with Wofi.

It's slow
Since creating the screenshot tool, I've used the menus for that workflow A LOT. In doing so, the load time and render stuttering of Wofi becomes kind of obvious. Feels a lot like the minor delay on MacOS between workspace transitions. Seems fine until you try to use it a lot. You can even see it loading the list in when it comes up still.
wofi-loading

It scales down when notifications arrive
For whatever reason, any time a notification comes in, the open Wofi dialog resizes itself and gets a little messed up in the process. Running it as a normal window does not have this issue, but as I've understood it, that's also not really meant for Wayland either.
wofi-notification

You can't disable search
We use the launcher for menus a lot in Omarchy. One of the places this issue is most prominent is the power menu. With Wofi, you cannot disable the search, so even though it's hidden, pressing a key will still filter your list. I know this because I will instinctively hit j often, and then my whole list disappears until I hit backspace.
wofi-power

The Goldilocks State

Launchers are kind of a personal thing and some people would prefer something as robust as Raycast while others just want a simple menu. I believe that the best launcher to be the default for Omarchy users should:

  • Be built for Wayland (and preferably Hyprland) first -- many of the launchers are X11 ports and its shows.
  • Be fast. Really fast.
  • Have the ability to disable search for use as a standard menu.
  • Be themeable and compatible with pulling colors from whatver active theme you have.
  • Be extensible -- while I believe the default state should be slim, and trim, I also believe that if it's a solid foundation that enables users to build on top to suit their own needs, that's really best for everyone involved.

Why the others didn't take the crown

I'll speedball through these but essentially:

  • Tofi - Incredibly fast, but not maintained, and very very limited. Can't even have icons.
  • Fuzzel - Fast, themeable, but doesn't have the ability to disable search so it suffers from the same thing Wofi does. You actually can't even hide search in the current release, though it is a PR that was merged into master a couple of weeks ago. No clue when it'll release though as it's been 7mo since their last release.
  • Ulauncher - Was really complex to deal with and is in the middle of a very long complete rewrite so not really looking to get in the middle of that.
  • Rofi - Incredibly flexible, can build really cool things with it. Wayland was recently merged into mainline from being a separate project and feels a bit like shooting a flea with a cannonball. This would be my number 2 as it is possible to meet all criteria.

Walker

Walker is built as a laucher specifically with speed and Hyprland in mind by our very own @abenz1267. It's fast, and simple when you want it, but also with a robust extension / plugin capability that will allow a really great foundation to build upon for launcher-based items. Additional bonus is that @abenz1267 is a part of the Omarchy community as well and was even so kind as to push up a couple of small tweaks that made making everything work with Omarchy that much easier.

Launches fast (Can even be faster running as a service)
walker-launch

Doesn't have scaling interactions
walker-notification

Can disable search for use as just a menu (I'm pushing lots of buttons)
walker-power

Themes

Catpuccin
walker-catpuccin

Everforest
walker-everforest

Gruvbox
walker-gruvbox

Kanagawa
walker-kanagawa

Matte Black
walker-matte-black

Nord
walker-nord

Rose Pine
walker-rose-pine

Tokyo Night
walker-tokyo-night

Copy link

@rmacklin rmacklin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Props for the detailed investigation!

Left a simple comment below

(Note: There's an open PR for migrating to Fuzzel: #202, so if this is picked that one can be closed.)

@ofrades
Copy link

ofrades commented Jul 18, 2025

Walker also comes with emoji and clipboard menus by default.

@ryanrhughes
Copy link
Contributor Author

ryanrhughes commented Jul 18, 2025

Pushed up some minor config updates and flipped over to launching via uwsm allowing the app to remain running and launch even faster. 🤘

Also removed the pkill calls. Walker has a config option for close_when_open which will effectively toggle visibility. Walker also will not stack multiple instances ever.

@markstos
Copy link

The currently released version of Walker, 0.13.0, crashes with a default/empty config on start up:

abenz1267/walker#355

Regarding performance or speed, I invite you to test piping a large directory to filter in Dmenu mode, with say 100,000 or 200,000 files. You'll see noticeable lag to display it.

 find . -type f | walker --dmenu

This is a place where Fuzzel worked on performance to use a streaming approach, so now like fzf, you see the Fuzzel UI display instantly even with a massive input. Fuzzel supports the same kind of counter does like fzf so see that in a case like this it might be continuing to load a huge dataset even as results are being displayed and you are starting to filter:

 find . -type f | fuzzel --dmenu --counter 

Walker could also stand to make documentation more discoverable. man walker does not exist as even as a stub and walker --help provides no hint about how to configure it-- those details on the wiki, where code data structures have been dumped without a description of what each key is used for. By contrast, Fuzzel has man pages for both the CLI and the INI format as well as completions for Fish, Zsh and Bash to help explore the CLI options.

@ryanrhughes
Copy link
Contributor Author

The currently released version of Walker, 0.13.0, crashes with a default/empty config on start up:

abenz1267/walker#355

Pushed up a stop-gap fix for this for now until it's resolved. It appears to be a new bug introduce in v0.13.0 by a missing directory. Creating that directory solves the issue. Props to @anoldguy for pointing it out to me.

@markstos Appreciate the input. I ran that test in my home directory which has 377,821 results to find . -type f. First couple of times were near instant but after a few, I could see what you mean with a bit of performance degradation.

Piping this many files to a dmenu isn't a workload I really use a launcher for but it may be worth looking into the finder builtin plugin of walker to see how it handles it. It does load instantly and I suspect, has some optimizations around discovery and rendering of the file list tailored to that workload.

cute-lLNrh.mp4

Agreed on the docs. Docs are lacking and could be better

@dhh
Copy link
Member

dhh commented Jul 19, 2025

This seems very promising. Just trying it now. The one thing is that there seems to be some delay before the walker selector appears. Both on application launcher and power menu. It's not totally instant. Is that an animation thing?

@dhh
Copy link
Member

dhh commented Jul 19, 2025

Just tried the fuzzel version. It does feel ever so marginally faster, but it's probably not a big deal. This version here nails the aesthetics and is able to hide the search bar like we want.

@dhh
Copy link
Member

dhh commented Jul 19, 2025

It also seems to include a bunch of extra results?

image

@dhh
Copy link
Member

dhh commented Jul 19, 2025

Running walker as a service solves the startup delay. So we should find a way to do that. When I just ran it like that in the terminal, though, it changed the themes.

@dhh
Copy link
Member

dhh commented Jul 19, 2025

Need a theme change for the new catppuccin latte too. And should try to convert any other themes we have in ~/.config/omarchy/themes if that's at all a possibility.

@dhh
Copy link
Member

dhh commented Jul 19, 2025

hmm, maybe I'm thick, but I can't see how to actually activate the calc or web search services?

@ofrades
Copy link

ofrades commented Jul 19, 2025

hmm, maybe I'm thick, but I can't see how to actually activate the calc or web search services?

slash will do the trick for other services. you can also have dedicated maps walker -m emojis etc

@dhh
Copy link
Member

dhh commented Jul 19, 2025

Ahh, I see. They're all hidden under /. Makes sense.

@ryanrhughes
Copy link
Contributor Author

@dhh Updates have been pushed. The omarchy-refresh-walker wasn't capturing everything before which is why you were still seeing the wrong items more than likely.

Be sure to yay -Sy walker-bin as some of the updates to the theme are dependent upon the latest version and run rm -rf ~/.config/walker/* && omarchy-refresh-walker to get back to a good fresh state.

@abenz1267 hooked us up with a way to reference theme files outside of the user's ~/.config/walker dir. This lets us move everything to ~/.local/share/omarchy/default/walker/themes/ for the default states.

That leaves us with a very clean setup that looks like this.

~/.local/share/omarchy/default
└── walker
    └── themes
        ├── dmenu_150.css
        ├── dmenu_150.toml
        ├── dmenu_250.css
        ├── dmenu_250.toml
        ├── omarchy-default.css
        └── omarchy-default.toml
~/.config/walker/
├── config.toml
└── themes
    ├── default.css       # Auto-generated on first run of walker -- we don't use
    └── default.toml     # Auto-generated on first run of walker -- we don't use

Users are then also free to create new themes, plugins, etc. in ~/.config/walker/ but we can also do the same in ~/.local/share/omarchy/default/walker/

@aifrim
Copy link

aifrim commented Jul 20, 2025

@markstos - While streaming is a good suggestion, I do not think this performance issue is important now.

Tried that with wofi and it took ~3s. I would say that @abenz1267 has time to address that. I am sure he could use & appreciate some help.

@abenz1267
Copy link
Contributor

@markstos - While streaming is a good suggestion, I do not think this performance issue is important now.

Tried that with wofi and it took ~3s. I would say that @abenz1267 has time to address that. I am sure he could use & appreciate some help.

already done :P. Loads all 430k in about 500ms. (fuzzel takes several seconds? maybe just the counter not keeping up).

@@ -7,8 +7,7 @@ show_power_menu() {
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"

local selection=$(echo -e "$menu_options" | wofi --show dmenu --width 150 --height 195 -O alphabetical --style ~/.config/wofi/select.css)
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice if going forward there was a way to pass width in on command line, so we don't have to make themes per menu size.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Will open an issue to hopefully get this as an enhancement down the line and allow cleanup.

@dhh
Copy link
Member

dhh commented Jul 20, 2025

Seems like we have memory turned on. Can that be turned off? Would like for this always just to stick with the order that we specify, like we had with Wofi:

image

@ryanrhughes
Copy link
Contributor Author

@dhh history is removed.

@dhh
Copy link
Member

dhh commented Jul 20, 2025

Not a blocker, but I noticed you can't use pg up/down or home/end to navigate the list.

@dhh
Copy link
Member

dhh commented Jul 20, 2025

We also lost the ability to silently filter lists, like the theme selector, where the search bar was hidden but still functional with Wofi. Also not a blocker, but I liked it.

@aifrim
Copy link

aifrim commented Jul 20, 2025

@markstos - While streaming is a good suggestion, I do not think this performance issue is important now.
Tried that with wofi and it took ~3s. I would say that @abenz1267 has time to address that. I am sure he could use & appreciate some help.

already done :P. Loads all 430k in about 500ms. (fuzzel takes several seconds? maybe just the counter not keeping up).

Can validate that it is fast. Just installed 0.13.5 and it was fast!

@dhh dhh merged commit 5b3c324 into basecamp:dev Jul 20, 2025
@dhh
Copy link
Member

dhh commented Jul 20, 2025

This is a fantastic upgrade. A lot faster, and a runway for folks wanting more Raycast like functionality. We should add a manual page on how to turn more stuff on for folks who want to use all the features.

@aifrim
Copy link

aifrim commented Jul 20, 2025

@ryanrhughes @abenz1267 @dhh Should we do something special with this?

Walker Docs » Newly installed or removed applications aren't shown / are still shown

This can become really annoying while ricing will happen. How fast is it without the cache?

Should we... ask pacman to reset the cache via a hook?

Something like this?

[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Cleaning up Walker application.json cache
When = PostTransaction
Exec = /usr/bin/bash -c 'rm /home/$SUDO_USER/.cache/applications.json &> /dev/null || true'

@abenz1267
Copy link
Contributor

@markstos - While streaming is a good suggestion, I do not think this performance issue is important now.
Tried that with wofi and it took ~3s. I would say that @abenz1267 has time to address that. I am sure he could use & appreciate some help.

already done :P. Loads all 430k in about 500ms. (fuzzel takes several seconds? maybe just the counter not keeping up).

Can validate that it is fast. Just installed 0.13.5 and it was fast!

it's not released yet...

@abenz1267
Copy link
Contributor

This can become really annoying while ricing will happen. How fast is it without the cache?

The cache is disabled by default. When running as service it's not needed anyways, since Walker watches the filesystem for changes to desktop files and acts accordingly.

@rmacklin
Copy link

@dhh re: fb22cc4 in case you haven't seen it, I opened #219 which makes it so newly introduced migration files will always be detected by omarchy-update

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants