前言
一般在手机端, Samsung 都贴心的提供了 APP 来进行耳机的查看和操作
在 Windows 端也有大佬提供了一个十分好用的第三方客户端 (后面它也支持 Linux 了)
但咱 Linux 用户还是更喜欢在命令行自定义的操作, 至于多开个图形化进程的…除非没得选
于是我找到了一些的相关项目, 最终选择了用 rust 实现的这家伙
目前方案
我的目的很简单: 能够在耳机连接时能够直观的查看耳机的相关信息(比如电量,温度啥的)
好在 LiveBudsCli 中已经有了现成的 polybar
的配置脚本
但我的桌面环境是 KDE
不是 i3
之类的桌面…于是我把苗头指向了 KDE
的桌面面板
我的思路开始是想着按照 KDE
的相关文档, 自己写一个部件, 但后来转念一想应该可以更简单的去实现这玩意
于是我开始逛了一下部件商店, 发现了这样一个便捷的插件
我们可以写个简单的命令去调用 LiveBudsCli 最后输出到 KDE
面板
说干就干…写完发现 plasma-applet-commandoutput 不支持多行命令…几经折腾后成了下面这样
1 | BUDS_STATUS=`earbuds status -o json -q` && REQ_STATUS=`echo $BUDS_STATUS | jq '.status' -r` && [ "$REQ_STATUS" = "error" ] && echo || { LEFT=$(echo $BUDS_STATUS | jq -r '.payload.batt_left') && RIGHT=$(echo $BUDS_STATUS | jq -r '.payload.batt_right') && LEFT="⚡$LEFT" && RIGHT="⚡$RIGHT" && echo "(L: $LEFT% | R: $RIGHT%)"; } |
最后咱就成了
这命令已经实现只有检测到耳机连接才输出内容, 可以注意到我把他拖到了最边缘….是因为空输出也会占一个小格….问题不大
最后再添加个点击事件
1 | BUDS_STATUS=`earbuds status -o json -q` && REQ_STATUS=`echo $BUDS_STATUS | jq '.status' -r` && [ "$REQ_STATUS" = "error" ] && echo || { LEFT=$(echo $BUDS_STATUS | jq -r '.payload.debug.temperature_left') && RIGHT=$(echo $BUDS_STATUS | jq -r '.payload.debug.temperature_right') && LEFT="$LEFT" && RIGHT="$RIGHT" && kdialog --title 'temp' --msgbox "(L: $LEFT°C | R: $RIGHT°C)"; } |
现在支持点击状态栏查看耳机温度啦 (弹窗依赖于 kdialog
)