initial dotfiles
This commit is contained in:
commit
45e5fe53d2
370 changed files with 25449 additions and 0 deletions
97
.config/scripts/rofi-menus/bluetooth-manager.sh
Executable file
97
.config/scripts/rofi-menus/bluetooth-manager.sh
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Bluetooth Management Script (Rofi-based)
|
||||
# Dependencies: bluez, bluez-utils, rofi
|
||||
|
||||
SESSION_TYPE="$XDG_SESSION_TYPE"
|
||||
ENABLED_COLOR="#81A1C1"
|
||||
DISABLED_COLOR="#D35F5E"
|
||||
CONNECTED_ICON=""
|
||||
DISCONNECTED_ICON=""
|
||||
|
||||
get_status() {
|
||||
if bluetoothctl show | grep -q "Powered: yes"; then
|
||||
local status_icon=""
|
||||
local status_color=$ENABLED_COLOR
|
||||
# Check if any device is connected
|
||||
if bluetoothctl info | grep -q "Connected: yes"; then
|
||||
status_icon=""
|
||||
fi
|
||||
else
|
||||
local status_icon=""
|
||||
local status_color=$DISABLED_COLOR
|
||||
fi
|
||||
|
||||
if [[ "$SESSION_TYPE" == "wayland" ]]; then
|
||||
echo "<span color=\"$status_color\">$status_icon</span>"
|
||||
else
|
||||
echo "%{F$status_color}$status_icon%{F-}"
|
||||
fi
|
||||
}
|
||||
|
||||
manage_devices() {
|
||||
# Get paired devices
|
||||
local devices_list=$(bluetoothctl devices | awk '{print $3 " " $2}')
|
||||
if [ -z "$devices_list" ]; then
|
||||
notify-send "Bluetooth" "No paired devices found."
|
||||
return
|
||||
fi
|
||||
|
||||
local chosen_device=$(echo -e "$devices_list" | rofi -dmenu -i -p "Bluetooth Devices: ")
|
||||
if [ -z "$chosen_device" ]; then return; fi
|
||||
|
||||
local device_mac=$(echo "$chosen_device" | awk '{print $NF}')
|
||||
local device_name=$(echo "$chosen_device" | awk '{$NF=""; print $0}')
|
||||
|
||||
# Check connection status
|
||||
local is_connected=$(bluetoothctl info "$device_mac" | grep "Connected: yes")
|
||||
|
||||
if [ -n "$is_connected" ]; then
|
||||
action=$(echo -e " Disconnect\n Remove/Forget" | rofi -dmenu -p "Action for $device_name: ")
|
||||
else
|
||||
action=$(echo -e " Connect\n Remove/Forget" | rofi -dmenu -p "Action for $device_name: ")
|
||||
fi
|
||||
|
||||
case $action in
|
||||
*"Connect")
|
||||
bluetoothctl connect "$device_mac" && notify-send "Bluetooth" "Connected to $device_name"
|
||||
;;
|
||||
*"Disconnect")
|
||||
bluetoothctl disconnect "$device_mac" && notify-send "Bluetooth" "Disconnected from $device_name"
|
||||
;;
|
||||
*"Remove"*)
|
||||
bluetoothctl remove "$device_mac" && notify-send "Bluetooth" "Removed $device_name"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Main Logic
|
||||
if [[ "$1" == "--status" ]]; then
|
||||
get_status
|
||||
exit 0
|
||||
fi
|
||||
|
||||
power_status=$(bluetoothctl show | grep "Powered: yes")
|
||||
if [ -z "$power_status" ]; then
|
||||
toggle_label=" Enable Bluetooth"
|
||||
toggle_cmd="power on"
|
||||
else
|
||||
toggle_label=" Disable Bluetooth"
|
||||
toggle_cmd="power off"
|
||||
fi
|
||||
|
||||
chosen_option=$(echo -e "$toggle_label\n Manage Devices\n Scan for New Devices" | rofi -dmenu -p "Bluetooth: ")
|
||||
|
||||
case $chosen_option in
|
||||
*"Enable"*|*"Disable"*)
|
||||
bluetoothctl $toggle_cmd
|
||||
;;
|
||||
*"Manage"*)
|
||||
manage_devices
|
||||
;;
|
||||
*"Scan"*)
|
||||
notify-send "Bluetooth" "Scanning for 15 seconds..."
|
||||
bluetoothctl --timeout 15 scan on
|
||||
manage_devices
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue