面向 Arch Linux / KDE Wayland 的蓝牙离席锁屏工具。它持续读取已配对设备的 BlueZ RSSI;手机持续弱信号或失联达到设定时间后,请求 KDE 锁屏。
本工具只自动锁屏,绝不根据蓝牙自动解锁。
- Qt6 中文配置界面
- 扫描并选择 BlueZ 已配对、已绑定(Bonded)的设备
- 实时 RSSI 与最后看见时间
- 可切换 RSSI 距离模式与“仅蓝牙断开”稳定兜底模式
- 弱信号阈值、弱信号持续时间、失联时间和启动保护
- RSSI 中位数平滑、迟滞和单次锁定
systemd --user后台服务- KDE Wayland 原生 D-Bus 锁屏
sudo pacman -S --needed \
bluez bluez-utils \
python python-dbus python-gobject python-pyqt6 \
bluedevil
sudo systemctl enable --now bluetooth.service启动脚本固定使用 /usr/bin/python,避免 pyenv、VersionFox 等环境 Python
与 Arch 的 python-dbus、python-gobject 和 python-pyqt6 模块 ABI 不一致。
当前版本使用源码目录中的用户级安装脚本,不建议通过 pip 安装;BlueZ 的
dbus-python/PyGObject 绑定应由 Arch 官方软件包提供。
chmod +x scripts/install.sh scripts/uninstall.sh data/bluetooth-proximity-lock
./scripts/install.sh
~/.local/bin/bluetooth-proximity-lock运行文件安装到当前用户目录:
- 程序:
~/.local/share/bluetooth-proximity-lock/ - 命令:
~/.local/bin/bluetooth-proximity-lock - 配置:
~/.config/bluetooth-proximity-lock/config.ini - 服务:
~/.config/systemd/user/bluetooth-proximity-lock.service - 桌面入口:
~/.local/share/applications/bluetooth-proximity-lock.desktop
- 在手机上打开蓝牙设置并保持可发现(本项目实测 Pura 70 Pro+)。
- 先在 KDE 蓝牙设置中完成双方配对码确认。
- 打开本工具,扫描并选择显示为“已配对”的手机。
- 保存配置并启用监控。
- 手机熄屏放置 2–3 分钟,确认实时 RSSI 仍会刷新。
如果手机保持 Connected=true,但熄屏后长期不再刷新 RSSI,可在“锁屏策略”
中选择“仅蓝牙断开”。此模式忽略 RSSI 强弱,只在已连接链路持续断开达到
“失联/断开持续时长”后锁屏;误锁更少,但通常要走得更远才会触发。
程序不会根据名称或临时随机 MAC 自动认定设备。只有 BlueZ 同时报告
Paired=true 和 Bonded=true 的身份对象才能被绑定。
~/.local/bin/bluetooth-proximity-lock --diagnose
journalctl --user -u bluetooth-proximity-lock.service -f
systemctl --user status bluetooth-proximity-lock.service在源码目录直接启动:
PYTHONPATH=src /usr/bin/python -m bluetooth_proximity_lock- RSSI 不是精确距离,需要在实际桌面和门口位置校准。
- RSSI 模式启动后必须先收到手机的真实广播,服务才会布防。
- 仅断开模式必须先确认目标手机处于已连接状态,之后才会对断开计时。
- 蓝牙关闭或 BlueZ 异常默认显示为未知,不立即误锁;可在配置中开启故障锁定策略。
- 若手机熄屏后不再广播,可使用“仅蓝牙断开”模式;若仍希望按距离锁屏, 需要手机端常驻 BLE Beacon 应用,或改用手环、眼镜等持续广播设备。
./scripts/uninstall.sh卸载默认保留用户配置。