Skip to content

HuaGCS/bluetooth_proximity_lock

Repository files navigation

Bluetooth Proximity Lock

面向 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-dbuspython-gobjectpython-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

绑定手机

  1. 在手机上打开蓝牙设置并保持可发现(本项目实测 Pura 70 Pro+)。
  2. 先在 KDE 蓝牙设置中完成双方配对码确认。
  3. 打开本工具,扫描并选择显示为“已配对”的手机。
  4. 保存配置并启用监控。
  5. 手机熄屏放置 2–3 分钟,确认实时 RSSI 仍会刷新。

如果手机保持 Connected=true,但熄屏后长期不再刷新 RSSI,可在“锁屏策略” 中选择“仅蓝牙断开”。此模式忽略 RSSI 强弱,只在已连接链路持续断开达到 “失联/断开持续时长”后锁屏;误锁更少,但通常要走得更远才会触发。

程序不会根据名称或临时随机 MAC 自动认定设备。只有 BlueZ 同时报告 Paired=trueBonded=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

卸载默认保留用户配置。

About

面向 Arch Linux / KDE Plasma 的蓝牙离席自动锁屏工具,支持 BlueZ RSSI 与仅断开兜底策略。

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors