有没有办法做到这一点而不安装额外的软件包?
答案1
你可以通过 来控制蓝牙信号是否启用rfkill
。将其包装在一个小的 Bash 条件中,你就可以轻松切换状态:
#!/bin/bash
if rfkill list bluetooth | grep -q 'yes$' ; then
rfkill unblock bluetooth
else
rfkill block bluetooth
fi
您可以将上述内容保存在任何地方的脚本文件中(例如~/bin/toggle-bluetooth
),并使其可执行(chmod +x FILENAME
),以便能够将该命令绑定到系统设置中的键盘快捷键。
或者,您可以将其放在单行bash
命令中,然后直接将其粘贴到快捷方式中:
bash -c "if rfkill list bluetooth|grep -q 'yes$';then rfkill unblock bluetooth;else rfkill block bluetooth;fi"
答案2
如果您不仅想切换蓝牙本身,还想切换与特定设备的连接,则可以使用以下脚本。我在 Ubuntu 20.04 中使用它来切换与扬声器的蓝牙连接。它会检查连接是否已建立并相应地进行切换。
请注意,它已将我的扬声器的 MAC 地址进行硬编码。
!/bin/bash
# Toggle connection to bluetooth device
mac="90:03:B7:17:00:08" # DEH-4400BT
if bluetoothctl info "$mac" | grep -q 'Connected: yes'; then
echo "Turning off $mac"
bluetoothctl disconnect || echo "Error $?"
else
echo "Turning on $mac"
# turn on bluetooth in case it's off
rfkill unblock bluetooth
bluetoothctl power on
bluetoothctl connect "$mac"
sink=$(pactl list short sinks | grep bluez | awk '{print $2}')
if [ -n "$sink" ]; then
pacmd set-default-sink "$sink" && echo "OK default sink : $sink"
else
echo could not find bluetooth sink
exit 1
fi
fi