惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
Project Zero
Project Zero
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Vercel News
Vercel News
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
The Hacker News
The Hacker News
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
T
Threatpost
爱范儿
爱范儿
N
Netflix TechBlog - Medium
D
Docker
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
K
Kaspersky official blog
H
Help Net Security
S
Secure Thoughts
T
Threat Research - Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
G
Google Developers Blog
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
B
Blog
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
P
Privacy International News Feed
Spread Privacy
Spread Privacy
The Last Watchdog
The Last Watchdog

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法
Wayland合成器下快速连接蓝牙设备
2026-06-24 · via mephisto.cc

如果你使用 Wayland Compositor(比如 Labwc、Sway、Niri 等)打造的轻量 Linux 桌面环境,在日常使用中,总会碰到连接蓝牙耳机或者蓝牙音箱的问题。

本文主要介绍在 Arch + Labwc 环境下,如何快速连接蓝牙耳机或者音箱(下文已音箱为例)。

1. 通过 Waybar 触发脚本连接

这是我目前在使用的方式,在此之前,我是直接使用命令行连接的:

1➜  ~ abbr | grep acton3
2abbr -a -- acton3 'bluetoothctl connect 50:5E:5C:95:0B:A4'
3abbr -a -- dis-acton3 'bluetoothctl disconnect 50:5E:5C:95:0B:A4'

看上面 Fish 的 abbr,所谓 abbr 是 fish 内置缩写(abbreviation)工具,区别于传统 alias:输入缩写按空格 / 回车会实时展开完整命令,可编辑后再执行,历史记录存完整命令,可以简单理解为 alias 变种。

上面的配置意思是:输入 acton3 连接蓝牙音箱 ACTON III,反之 dis-acton3 为断开连接。看起来简单朴实,没什么毛病。

我以前也的确是这么操作的,随着时间的推移,慢慢就觉得不对劲:

  • 每次需要先打开终端;
  • 然后还要输入命令;
  • 要记住这个 alias 缩写,每当你长假归来打开电脑,你可能会忘记别名。

由于上述操作链路过长,有记忆负担,最终放弃使用。

我想到的替换方案是,使用 waybar 的蓝牙模块,触发脚本自动连接。

示例配置如下:

 1"bluetooth": {
 2    "format": "{status}",
 3	  "format-on": "{status}|none",
 4    "format-off": "{status}",
 5    "format-disabled": "󰂲{status}",
 6    "format-connected": "{device_alias}",
 7    "format-connected-battery": " {device_alias} {device_battery_percentage}%",
 8    // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device
 9    "tooltip-format": "{controller_alias}\t{controller_address}\n{num_connections} connected",
10    "tooltip-format-connected": "{controller_alias}\t{controller_address}\n{num_connections} connected\n{device_enumerate}",
11    "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
12    "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
13    "on-click": "~/.config/waybar/scripts/bluetooth-toggle.sh"
14},

在 Waybar 中,on-click 属性用于为状态栏模块添加鼠标点击交互事件。

事件属性触发条件
on-click鼠标 左键 单击
on-click-release释放鼠标 左键
on-click-right鼠标 右键 单击
on-click-middle鼠标 中键(滚轮)单击
on-double-click鼠标 左键 双击
on-triple-click鼠标 左键 三击
on-scroll-up鼠标滚轮 向上 滚动
on-scroll-down鼠标滚轮 向下 滚动

从上述配置可看出,我选的单击左键触发脚本连接蓝牙音箱。

脚本示例如下:

 1➜  ~ cat ~/.config/waybar/scripts/bluetooth-toggle.sh
 2#!/bin/bash
 3BLUETOOTH_MAC="50:5E:5C:95:0B:A4"
 4WAIT=0.2
 5
 6notify() {
 7    notify-send -i audio-speakers "$1" "$2"
 8}
 9
10# 确保蓝牙已开启
11if ! bluetoothctl show | grep -q "Powered: yes"; then
12    notify "蓝牙未开启" "正在开启..."
13    bluetoothctl power on >/dev/null 2>&1
14    sleep $WAIT
15fi
16
17# 获取当前连接状态
18info=$(bluetoothctl info "$BLUETOOTH_MAC")
19
20if echo "$info" | grep -q "Connected: yes"; then
21    # 已连接 → 断开
22    bluetoothctl disconnect "$BLUETOOTH_MAC" >/dev/null 2>&1
23    notify "已断开⏹️" "$BLUETOOTH_MAC"
24else
25    # 尝试连接
26    bluetoothctl connect "$BLUETOOTH_MAC" >/dev/null 2>&1
27    sleep $WAIT
28
29    # 验证结果
30    if bluetoothctl info "$BLUETOOTH_MAC" | grep -q "Connected: yes"; then
31        notify "连接成功✅" "$BLUETOOTH_MAC"
32    else
33        notify "连接失败❌" "蓝牙设备未开机或不在附近"
34        exit 1
35    fi
36fi

逻辑非常简单,点一下连接,再点一下断开,音箱没通电或者没开机等,弹出提示。

效果截图

bluetooth all

细心的朋友可能会问,这样不是只能连接一个蓝牙设备吗?是的,主要在家里只用连接音箱,很少需要去连接别的设备,所以对我来说够用,简单直接。

那如果要连接多设备呢?当然也可以回退到命令行。

还可以用下面的方式。

2. 使用 orbit 这个 GUI 工具管理蓝牙设备

其实 Linux 管理蓝牙设备的 GUI 工具也有好多,比如 blueman、blueberry 等,都特么丑得哭,完全看不上眼。

我自己搜索了下,orbit 是最近几个月才冒出来的工具,Rust 写的,UI 用的 GTK4,整个界面看其还挺美观协调。

示例图片:

orbit

它不光能管理蓝牙,还能管理 Wi-Fi 和 VPN,也可以和 waybar 结合使用,还可以

1orbit toggle --tab [wifi|bluetooth|vpn]

这样聚焦到某个子 tab,看起来这个作者是很懂非完整 DE 痛点的。

完整的说明使用方式请看 https://github.com/LifeOfATitan/orbit 的 README 文件,懒得写了,简单易用,还是值得推荐的。

要说不足,那就是使用要多启动一个进程😅(话说,没有进程怎么提供功能?bluetoothctl 还要 bluetoothd 呢?没毛病啊!)

1systemctl --user enable --now orbit

说这么多,你为什么不用?我用上面 1 的方式就足够了,简单明了,wifi 等我都用 waybar 显示,tui 管理的。如果你需要[wifi|bluetooth|vpn]三合一的工具,为什么不用呢?

综上所术,如果你想简单,不连接多设备,就用 waybar 的蓝牙模块配合自定义脚本;如果想同时管理[wifi|bluetooth|vpn],或者更喜欢 GUI 操作,使用 Orbit 也是不错的,按需取舍即可。