Skip to content

Migrate from wofi to fuzzel #202

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

Closed

Conversation

melonamin
Copy link

@melonamin melonamin commented Jul 17, 2025

Summary

This PR replaces wofi with fuzzel as Omarchy's application launcher and dmenu implementation.

Motivation

  • Performance: Fuzzel is native Wayland vs wofi's X11-based implementation
  • Perception: Fuzzed feels like a better launcher
  • Features: Built-in fuzzy matching, frequency-based app sorting, active development

Changes

Package Management

  • Installer updated: install/hyprlandia.sh now installs fuzzel instead of wofi
  • Migration script: Automated migration for existing installations
  • Cleanup: Removed wofi-specific utilities and references

Configuration System

  • ✅ New config structure: INI-based fuzzel configs replace CSS-based wofi styling
  • ✅ Theme integration: Automatic color synchronization when switching themes
  • ✅ Unified base config: base.ini contains common settings (font, theme include, borders)
  • ✅ Multiple configs: Dedicated configurations for different use cases
    • fuzzel.ini - Main app launcher
    • power.ini - Compact power menu
    • theme.ini - Theme selector
    • keybindings.ini - Large cheat sheet

Scripts Updated

  • ✅ Power menu: bin/omarchy-menu-power - Updated for fuzzel dmenu syntax with icon alignment
  • ✅ Theme menu: bin/omarchy-theme-menu - Visual indicators replace markup
  • ✅ Keybindings: bin/omarchy-menu-keybindings - Much larger display with smaller font
  • ✅ Theme refresh: Updated bin/omarchy-refresh-fuzzel includes all config files

Theming

  • All themes supported: Converted all 7 theme color schemes to fuzzel format
  • Auto-updates: Theme switching automatically updates fuzzel colors
  • Visual indicators: Current theme marked with ● instead of italic markup

Migration Path

For new installations: Automatic with updated installer

For existing installations:

~/.local/share/omarchy/bin/omarchy-update

The migration script 20250716203656_migrate_wofi_to_fuzzel.sh will:

  • Install fuzzel and remove wofi
  • Set up new configurations
  • Preserve theme settings
  • Clean up old wofi configs

⚠️ Breaking Changes ⚠️

  • Markup support: Fuzzel doesn't support Pango markup - no italic in theme switcher, replaced with visual indicators.
  • Can't hide input field: Fuzzel provides no option to hide the input field. It can has empty prompt, but the field is always there.
  • Configuration format: Changed from CSS to INI (handled by migration)

Testing

  • ✅ All launcher functionality verified
  • ✅ Theme switching tested across all 7 themes
  • ✅ Power menu, theme menu, keybindings display working
  • ✅ Configuration validation passes
  • ✅ Migration script tested on existing installation

Screenshots of Fuzzel

Catppuccin

App Launcher

launcher

Power Menu

power-menu

Theme Selector

theme-selector

Keybindings

keybindings
Matte Black

App Launcher

launcher

Power Menu

power-menu

Theme Selector

theme-selector

Keybindings

keybindings

Replace wofi with fuzzel as the application launcher and dmenu implementation to provide better native Wayland performance and enhanced
functionality.
@abenz1267
Copy link
Contributor

just to be clear: wofi is NOT x11 based. It's wayland native.

still: fuzzel would be a better launcher.

  - Style fuzzel menus to match previous wofi appearance with proper spacing and transparency - Create separate config files for different
  menu types: - power.ini: Compact 5-line window for power menu - theme.ini: Medium 7-line window for theme switcher - fuzzel.ini: Large
  15-line window for app launcher - keybindings.ini: Huge 30-line window for keybindings display - Update all themes to support fuzzel with:
  - 95% background transparency (f2 alpha) - Matching text colors for non-highlighted search - Very subtle selection highlighting (14 alpha)
  - Fix power menu and theme menu scripts to use appropriate configs - Add proper icon alignment and sizing for menus - Update migration
  script to copy all new config files
@melonamin
Copy link
Author

Current state

Catppuccin

App Launcher

launcher

Power Menu

power-menu

Theme Selector

theme-selector

Keybindings

keybindings
Matte Black

App Launcher

launcher

Power Menu

power-menu

Theme Selector

theme-selector

Keybindings

keybindings

@melonamin
Copy link
Author

melonamin commented Jul 17, 2025

@dhh I noticed that all PRs go through dev after opening this. If we decide that Fozzle is worthy and we can merge, I would need to open a new PR, correct?

@melonamin melonamin marked this pull request as ready for review July 17, 2025 22:14
…anagement

  - Create base.ini with common settings (font, theme, borders) shared across all menus - Refactor individual configs to include base.ini
  and only specify unique settings: - Update omarchy-refresh-fuzzel to copy base.ini - Update migration script to include base.ini in
  initial setup
@dhh dhh changed the base branch from master to dev July 17, 2025 22:40
@dhh
Copy link
Member

dhh commented Jul 17, 2025

Just need to point it to dev 😄. Just did.

@melonamin melonamin changed the title Migrate from wofi to fuzzel for improved Wayland performance Migrate from wofi to fuzzel Jul 17, 2025
@markstos
Copy link

Fuzzel maintainer here. A release is planned soon after the few open PRs are dealt with.

One of the features already merged is a new --hide-prompt option to hide the input field. The idea we are trying with hiding vs disabling is that you can still type to filter the list if you want to!

Demo:

image

Using an alt config file, you could bind "j" and "k" to Down and Up if you want to ignore the hidden filtering feature and use those letters for navigation instead.

Although Fuzzel doesn't support HTML-style markup with bold and italics, the trade-off is that it doesn't pull in the complexity of GTK and is very fast.

For emoji picking, "bemoji" integrates nicely.

For clipboard manager integration, Clipman is nice.

For better menu building, we already support specifying a specific column from input to use for display, and a possibly different column to use for the output. We are considering adding support to match keyboard input against a /third/ column. https://codeberg.org/dnkl/fuzzel/issues/589

We also recently merged a PR that will auto-select when there's only one match.

In combination, putting it all together, you could build a "10 most common emoji" picker that shows the Emoji, a letter to select it and the name of the emoji. As soon as you type the letter matching the emoji, a tool might copy it or type it.

That means it could work like "CapsLock M S". To type a smiley emoji, like the [Quick Emoji](https://manuals.omamix.org/2/the-omarchy-manual/53/hotkeys?search=Xcompose#quick-emojis an) bindings, but with some visual help along the way-- much like how the LazyVim menus work.

@dhh
Copy link
Member

dhh commented Jul 19, 2025

Thanks for working on this! I think fuzzel is great, but Walker has the hide feature today, and @ryanrhughes has already done all the work on that to match all themes perfectly. So going with that for now.

@dhh dhh closed this Jul 19, 2025
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.

4 participants