麒麟系统可通过脚本监听蓝牙断连并自动锁屏,需先配对手机、编写检测脚本、配置systemd用户服务实现开机自启,依赖蓝牙持续广播与dbus权限。

麒麟系统本身不原生支持Windows那样的“蓝牙动态锁”机制,但可通过组合配置蓝牙状态监听脚本与系统锁屏命令,实现手机蓝牙断开时自动触发锁屏。该方案依赖手机持续广播蓝牙信号、电脑蓝牙模块稳定工作,且需确保用户已登录图形会话并拥有dbus权限。
前提:确认蓝牙配对并保持连接状态
打开终端,执行bluetoothctl进入交互模式 → 输入power on确保蓝牙开启 → 输入agent on启用代理 → 输入scan on扫描设备 → 在列表中找到你的手机名称及MAC地址(如AA:BB:CC:DD:EE:FF)→ 输入scan off停止扫描 → 执行pair AA:BB:CC:DD:EE:FF完成配对 → 输入trust AA:BB:CC:DD:EE:FF建立信任 → 最后输入connect AA:BB:CC:DD:EE:FF建立实时连接。这一步若失败,后续所有自动锁屏逻辑都无法触发。
【必须确保手机蓝牙全程开启且未进入省电休眠(部分安卓机型需在开发者选项中禁用“蓝牙绝对音量”或关闭“蓝牙省电模式”)】
编写蓝牙断连监听脚本
新建脚本文件:sudo nano /usr/local/bin/bluetooth-lock.sh
粘贴以下内容(请将其中的MAC地址替换为你手机的实际地址):
#!/bin/bash
PHONE_MAC="AA:BB:CC:DD:EE:FF"
while true; do
if ! bluetoothctl info "$PHONE_MAC" 2>/dev/null | grep -q "Connected: yes"; then
loginctl lock-session
exit 0
fi
sleep 8
done
保存后执行sudo chmod +x /usr/local/bin/bluetooth-lock.sh赋予可执行权限。该脚本每8秒检测一次指定设备是否仍处于Connected状态,一旦断开即调用loginctl lock-session锁住当前图形会话。
配置开机自启服务
创建systemd用户服务文件:nano ~/.config/systemd/user/bluetooth-lock.service
填入以下内容:
[Unit]
Description=Bluetooth auto-lock on phone disconnect
After=bluetooth.target
[Service]
Type=simple
ExecStart=/usr/local/bin/bluetooth-lock.sh
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
执行以下命令启用服务:
systemctl --user daemon-reload → systemctl --user enable bluetooth-lock.service → systemctl --user start bluetooth-lock.service
这一步完成后,脚本将在每次用户登录图形界面时自动运行,无需手动启动。
验证与调试
方法一:手动断开手机蓝牙,观察桌面是否在10秒内锁屏;
方法二:在终端中运行journalctl --user-unit=bluetooth-lock.service -f 实时查看日志,若出现“Connected: no”后立即触发lock-session,说明逻辑通路正常;
方法三:若脚本无响应,检查dbus是否就绪——执行loginctl show-session $(loginctl | grep 'seat' | awk '{print $1}') -p Type,输出应为Type=x11或Type=wayland,非tty类型。











