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
stdin
mode 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 --release
An 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-git
Specify an application using -l
or --launcher
flag.
bzmenu -l fuzzel
Specify 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 , 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 |
GPLv3
If you find this project useful and would like to help me dedicate more time to its development, consider supporting my work.