bzmenu (BlueZ Menu) manages Bluetooth through your launcher of choice.
Rust(includescargo)pkg-config– For detecting required librariesdbus– For D-Bus integration headers
bluetoothd– BlueZ daemondbus– For communicating withbluetoothd- A launcher with
stdinmode support
- NerdFonts – For font-based icons (default mode)
- XDG icon theme – For image-based icons (used with
-i xdg, included with DEs or can be installed manually) - Notification daemon – For system notifications (e.g.
dunst,fnott, included with DEs or can be installed manually)
| Launcher | Font Icons | XDG Icons | Notes |
|---|---|---|---|
| Fuzzel | ✅ | ✅ | XDG icons supported in main branch |
| Rofi | ✅ | 🔄 | XDG icon support pending via PR #2122 |
| Walker | ✅ | ✅ | XDG icons supported since v0.12.21 |
| Wofi | ✅ | ✅ | Only support in main branch |
| dmenu | ✅ | ❌ | No XDG icon support |
| Custom (stdin) | ✅ | ❔ | Depends on launcher implementation |
Tip
If your preferred launcher isn't directly supported, use custom mode with appropriate command flags.
Run the following commands:
git clone https://github.com/e-tho/bzmenu
cd bzmenu
cargo build --releaseAn executable file will be generated at target/release/bzmenu, which you can then copy to a directory in your $PATH.
Add the flake as an input:
inputs.bzmenu.url = "github:e-tho/bzmenu";Install the package:
{ inputs, ... }:
{
environment.systemPackages = [ inputs.bzmenu.packages.${pkgs.system}.default ];
}Install the package with your favorite AUR helper:
paru -S bzmenu # or bzmenu-gitSpecify an application using -l or --launcher flag.
bzmenu -l fuzzelSpecify custom as the launcher and set your command using the --launcher-command flag. Ensure your launcher supports stdin mode, and that it is properly configured in the command.
bzmenu -l custom --launcher-command "my_custom_launcher --flag"Use either {prompt} or {placeholder} as the value for the relevant flag in your command; each will be replaced with the appropriate text as needed. They return the same string, with {prompt} adding a colon at the end.
bzmenu -l custom --launcher-command "my_custom_launcher --prompt-flag '{prompt}'" # or --placeholder-flag '{placeholder}'This example demonstrates enabling all available features in custom mode with fuzzel.
bzmenu -l custom --launcher-command "fuzzel -d -p '{prompt}'"| Flag | Description | Supported Values | Default Value |
| -------------------- | --------------------------------------------------------- | --------------------------------------------- --------| ------------- |
| -l, --launcher | Specify the launcher to use (required). | dmenu, rofi, fuzzel, walker, wofi, custom | None |
| --launcher-command | Specify the command to use when custom launcher is set. | Any valid shell command | None |
| -i, --icon | Specify the icon type to use. | font, xdg | font |
| -s, --spaces | Specify icon to text space count (font icons only). | Any positive integer | 1 |
| --scan-duration | Specify the duration of device discovery in seconds. | Any positive integer | 10 |
Please see CONTRIBUTING.md for contribution guidelines.
GPLv3
If you find this project useful and would like to help me dedicate more time to its development, consider supporting my work.
