A macOS launcher forked from dmenu-mac, with Rust-backed fuzzy matching, Accessibility API hotkeys, configurable search paths, scripts and aliases.
As of October 8, 2025, I was using the basic launcher for my own work. Some features may be partially implemented.
-
Fixed a longstanding issue oNaiPs/dmenu-mac#41
-
Switched to Accessibility API for handling hotkeys because it seems to work well
-
Implemented what I believe to be a superior fuzzy matching algorithm, leveraging https://crates.io/crates/fuzzy-matcher
-
Introduced a configuration file located at ~/.config/unmenu/config, enabling users to customize search directories, filter out applications and integrate scripts and aliases
makeOr make install to copy the app into /Applications
- Build fuzzylib This step requires Rust installed
cargo build --release --manifest-path=fuzzylib/Cargo.toml
cp fuzzylib/target/release/libfuzzylib.a mac-app/
- Build macOS application: Requires Xcode
CLI:
xcodebuild -project mac-app/unmenu.xcodeproj -scheme unmenu -derivedDataPath build -configuration Release build
cp -r mac-app/Build/Products/Release/unmenu.app /Applications/
OR
GUI:
- open mac-app/unmenu.xcodeproj
- Click the menu item Product -> Archive
- Right click on the archive called
unmenuandShow in Finder - Right click on it in Finder and
Show Package, Products -> Applications - Copy unmenu.app to /Applications
- Launch the app
open -a unmenu - Follow instructions to enable permissions
- Hit Ctrl-Cmd-b by deafult
- Customize settings by editing ~/.config/unmenu/config.toml according to your preferences
Users can incorporate various scripts and aliases into unmenu for extended functionality.
- Set up a directory to store your scripts
- Add your scripts with appropriate shebangs, and ensure they are executable (chmod +x).
- Include the script directory in the
dirsvariable within the configuration. - Ensure that
find_executablesis set to true in the config file
After these steps, you can execute scripts directly from unmenu by invoking their names via unmenu. This allows for the addition of aliases or any desired custom functionality.
@onaips - Original Author @unmanbearpig - Author of this fork