A terminal-based Bluetooth device manager built with Go and Bubble Tea, designed for Linux systems and Hyprland users.
- 🔵 Interactive TUI: Beautiful terminal interface with mouse and keyboard support
- 📱 Device Management: Scan, pair, connect, and disconnect Bluetooth devices
- ⚡ Real-time Status: Live updates of device connection states
- 🎛️ Bluetooth Control: Enable/disable Bluetooth adapter
- 🖱️ Mouse Support: Full mouse interaction including scrolling and clicking
- ⌨️ Keyboard Navigation: Vim-style navigation keys
┌─────────────────────────────────────────────────┐
│ HyprBluetooth - Bluetooth Device Manager │
│ 🔵 Bluetooth: ON │
│ │
│ > ● WH-1000XM4 (00:11:22:33:44:55) │
│ ◐ Magic Mouse (66:77:88:99:AA:BB) │
│ ○ Unknown Device (CC:DD:EE:FF:00:11) │
│ │
│ Controls: │
│ ↑/k, ↓/j: Navigate Enter/Space: Connect │
│ s: Scan r: Refresh p: Pair d: Disconnect │
│ e: Enable/Disable Bluetooth q: Quit │
│ │
│ Status: ● Connected ◐ Paired ○ Unpaired │
└─────────────────────────────────────────────────┘
Download the latest release for your architecture:
# For AMD64
curl -LO https://github.com/yourusername/hyprBluetooth/releases/latest/download/hyprBluetooth_linux_amd64.tar.gz
tar -xzf hyprBluetooth_linux_amd64.tar.gz
sudo mv hyprBluetooth /usr/local/bin/
# For ARM64
curl -LO https://github.com/yourusername/hyprBluetooth/releases/latest/download/hyprBluetooth_linux_arm64.tar.gz
tar -xzf hyprBluetooth_linux_arm64.tar.gz
sudo mv hyprBluetooth /usr/local/bin/
git clone https://github.com/yourusername/hyprBluetooth.git
cd hyprBluetooth
go build -o hyprBluetooth .
sudo mv hyprBluetooth /usr/local/bin/
- Linux system with BlueZ stack
bluetoothctl
command available- Go 1.24+ (for building from source)
Arch Linux:
sudo pacman -S bluez bluez-utils
sudo systemctl enable --now bluetooth
Ubuntu/Debian:
sudo apt install bluetooth bluez bluez-tools
sudo systemctl enable --now bluetooth
Fedora:
sudo dnf install bluez bluez-tools
sudo systemctl enable --now bluetooth
Run the application:
hyprBluetooth
Key | Action |
---|---|
↑/k |
Move cursor up |
↓/j |
Move cursor down |
Enter/Space |
Connect/disconnect selected device |
s |
Scan for new devices |
r |
Refresh device list |
p |
Pair selected device |
d |
Disconnect selected device |
e |
Enable/disable Bluetooth adapter |
Ctrl+r |
Full refresh (devices + Bluetooth status) |
q/Ctrl+c |
Quit application |
- Scroll wheel: Navigate up/down through device list
- Left click: Select device
- All controls: Fully functional with mouse
●
Connected: Device is actively connected◐
Paired: Device is paired but not connected○
Unpaired: Device is discovered but not paired
hyprBluetooth works out of the box with no configuration required. It uses the system's BlueZ stack through bluetoothctl
commands.
You can bind hyprBluetooth to a key combination in your Hyprland config:
# ~/.config/hypr/hyprland.conf
bind = SUPER, B, exec, hyprBluetooth
Or create a floating window rule:
windowrule = float, ^(hyprBluetooth)$
windowrule = size 800 600, ^(hyprBluetooth)$
windowrule = center, ^(hyprBluetooth)$
sudo systemctl start bluetooth
sudo systemctl enable bluetooth
Make sure your user is in the bluetooth group:
sudo usermod -a -G bluetooth $USER
# Log out and log back in
Ensure bluetoothctl
is installed and in your PATH:
which bluetoothctl
- Try unpairing and re-pairing the device
- Make sure the device is in pairing mode
- Check if the device is already connected to another system
go mod download
go build -o hyprBluetooth .
go test ./...
golangci-lint run
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Bubble Tea TUI framework
- Styled with Lip Gloss
- Inspired by the need for a simple Bluetooth manager for tiling window managers