我使用带有 Cinnamon 的 ubuntu,我厌倦了没有蓝牙开关,不得不使用 rfkill 关闭蓝牙。目前,我使用 blueman 打开蓝牙并管理设备和连接,使用完后,我在终端上使用 rfkill 将其关闭。我想创建一个可点击的宏(即:作为将显示在我的任务栏上的 Cinnamon 小程序),用 rfkill 打开和关闭蓝牙。
我的问题是:是否有一个 rfkill 命令可以让您简单地反转设备的状态(即,如果阻塞则解除阻塞,如果解除阻塞则阻塞)?
答案1
rfkill 中没有反转标志,也没有其他 CLI 工具可以做到这一点。您可以为其编写一个类似于下面的小脚本,并使用键绑定启动该脚本。
笔记 :您需要将您的用户添加到 sudoers 文件中才能在无需密码的情况下运行 rfkill。
#!/bin/bash
BTDEVNO=1
currentState=$(rfkill list $BTDEVNO)
if [[ $currentState =~ ": no" ]]; then
echo "Unblocked, going to block";
sudo rfkill block $BTDEVNO;
else
echo "Blocked, going to unblock";
sudo rfkill unblock $BTDEVNO;
fi
编辑-关于 sudoers (由 Bruh 制作):
要将 rfkill 添加到 sudoers 列表,请键入sudo visudo
并在文件末尾的行下添加以下内容%sudo
:
user_name : ALL=(ALL) NOPASSWD : /usr/sbin/rfkill
这将允许 rfkill 运行而不需要 sudo 密码。
编辑 2 - 对脚本稍作修改(由 Bruh 制作):
如果脚本似乎总是看到 BT 被阻止,尽管手动 rfkill 列表显示它未被阻止,请尝试用以下内容替换 if 语句:
if echo $currentState | grep 'Bluetooth Soft blocked: no'; then