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 |
| 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-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. | dmenu, rofi, fuzzel, walker, custom |
dmenu |
--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 |
GPLv3
If you find this project useful and would like to help me dedicate more time to its development, consider supporting my work.