7.3 KiB
7.3 KiB
Deepin OS 锁屏检测支持
本文档说明如何在 Deepin OS 上使用和测试屏幕锁定检测功能。
概述
从 v1.1.0 版本开始,本应用已完全支持 Deepin OS 的 DDE (Deepin Desktop Environment) 桌面环境。通过监听 Deepin 特有的 DBus 接口,应用可以准确检测 Deepin OS 的锁屏和解锁事件。
Deepin DDE 锁屏检测机制
DBus 接口详情
Deepin OS 通过以下 DBus 接口提供锁屏状态通知:
Service: com.deepin.dde.lockFront
Path: /com/deepin/dde/lockFront
Interface: com.deepin.dde.lockFront
支持的信号
- Locked() - 当屏幕被锁定时发出
- Unlocked() - 当屏幕被解锁时发出
系统要求
Deepin OS 版本
- Deepin OS 20 或更高版本
- Deepin OS 23 (推荐)
依赖项
- Qt 5.15.2 或更高版本
- DBus 系统服务
- DDE 桌面环境
安装与编译
1. 在 Deepin OS 上安装依赖
# 更新软件包列表
sudo apt update
# 安装编译工具
sudo apt install build-essential cmake git
# 安装 Qt5 开发库(如果使用系统 Qt)
sudo apt install qtbase5-dev qtbase5-dev-tools
# 安装 DBus 开发库
sudo apt install libdbus-1-dev
2. 编译项目
# 克隆或进入项目目录
cd qt_screan_lock
# 赋予脚本执行权限
chmod +x build.sh run.sh
# 编译
./build.sh
在 Deepin OS 上运行
启动应用
# 方法 1:使用运行脚本(推荐)
./run.sh
# 方法 2:直接运行
cd build/bin
./ScreenLockDemo
查看连接状态
应用启动后,检查控制台输出,确认 Deepin DDE 接口已成功连接:
Initializing ScreenLockDetector...
Successfully connected to Deepin DDE
ScreenLockDetector initialized successfully
Deepin DDE connected: true
测试锁屏检测
1. 基本测试步骤
-
启动应用
./run.sh -
验证初始状态
- 确认窗口显示动画正在运行
- 检查 "Screen Lock Status" 显示为 "🔓 UNLOCKED"
- 检查 "Painting Status" 显示为 "✓ ENABLED"
-
触发锁屏
- 使用快捷键:
Super + L或Ctrl + Alt + L - 或点击系统托盘 → 锁定
- 或在终端执行:
dde-lock
- 使用快捷键:
-
验证锁屏响应
- 屏幕应该被锁定
- 解锁后,检查应用窗口
- "Screen Lock Status" 应显示为 "🔒 LOCKED"(锁屏期间)
- 动画应已停止
- "Painting Status" 应显示为 "✗ DISABLED"
-
解锁并验证恢复
- 输入密码解锁
- "Screen Lock Status" 应变回 "🔓 UNLOCKED"
- 动画应自动恢复
- "Painting Status" 应变回 "✓ ENABLED"
2. 控制台日志测试
启动应用并观察详细日志:
./run.sh 2>&1 | tee deepin_test.log
预期输出示例:
Initializing ScreenLockDetector...
Deepin DDE lockFront interface available
Successfully connected to Deepin DDE
GNOME ScreenSaver interface not available: [错误信息]
Login Manager interface not available: [错误信息]
ScreenLockDetector initialized successfully
Deepin DDE connected: true
GNOME ScreenSaver connected: false
Login Manager connected: false
锁屏时应看到:
Login Manager Lock signal received
Screen lock state changed: LOCKED
解锁时应看到:
Login Manager Unlock signal received
Screen lock state changed: UNLOCKED
3. DBus 接口验证
可以使用命令行工具验证 Deepin DDE 接口是否可用:
# 检查 lockFront 服务是否存在
dbus-send --session --print-reply \
--dest=com.deepin.dde.lockFront \
/com/deepin/dde/lockFront \
org.freedesktop.DBus.Introspectable.Introspect
# 监听 Deepin 锁屏信号
dbus-monitor --session "type='signal',interface='com.deepin.dde.lockFront'"
故障排除
问题 1:Deepin DDE 接口连接失败
症状:
Deepin DDE lockFront interface not available: Service not found
原因:
- DDE 桌面环境未运行
- DBus 会话总线未正确配置
- 锁屏服务未启动
解决方案:
# 检查 DDE 进程
ps aux | grep dde
# 检查 DBus 会话
echo $DBUS_SESSION_BUS_ADDRESS
# 重启 DDE(谨慎操作)
killall dde-desktop
dde-desktop &
问题 2:锁屏信号未被接收
症状:
- 应用已连接到 Deepin DDE
- 但锁屏时没有响应
解决方案:
# 检查信号是否被发出
dbus-monitor --session | grep -A5 "com.deepin.dde.lockFront"
# 确保应用有正确的权限
chmod +x build/bin/ScreenLockDemo
# 尝试使用系统命令锁屏
dde-lock
问题 3:多个接口冲突
症状:
- Deepin DDE 和其他接口同时连接成功
- 收到重复的锁屏信号
说明: 这是正常行为。应用会尝试连接所有可用的接口,并从任何一个接口接收信号。内部逻辑会防止重复处理相同的状态变化。
兼容性说明
支持的 Deepin 版本
| Deepin 版本 | DDE 版本 | 支持状态 | 说明 |
|---|---|---|---|
| Deepin 15.x | DDE 旧版 | ⚠️ 未测试 | 可能需要调整 DBus 接口 |
| Deepin 20 | DDE 5.x | ✅ 完全支持 | 推荐版本 |
| Deepin 23 | DDE 6.x | ✅ 完全支持 | 最新版本 |
已知限制
- 锁屏动画期间:在锁屏动画播放时(约 1-2 秒),信号可能会有轻微延迟
- 快速切换:极短时间内多次锁定/解锁可能导致信号丢失
- 休眠唤醒:从休眠状态唤醒时,可能需要手动刷新状态
高级配置
调试 Deepin 特定问题
启用详细的 DBus 日志:
# 设置 Qt 调试环境变量
export QT_LOGGING_RULES="qt.dbus*=true"
./run.sh
仅使用 Deepin 接口
如果您只想使用 Deepin DDE 接口而不尝试其他接口,可以修改 screenlockdetector.cpp:
bool ScreenLockDetector::initialize()
{
qDebug() << "Initializing ScreenLockDetector...";
// 只连接 Deepin DDE
bool deepinOk = connectToDeepinDDE();
if (!deepinOk) {
qWarning() << "Failed to connect to Deepin DDE";
return false;
}
queryCurrentLockState();
return true;
}
性能考虑
在 Deepin OS 上运行时的性能特点:
- CPU 占用:空闲时 < 1%,动画运行时约 2-5%
- 内存占用:约 20-30 MB
- DBus 消息:每次锁屏/解锁仅 2 个信号
- 响应延迟:< 100ms(从锁屏到应用响应)
开发者信息
Deepin API 参考
如需了解更多 Deepin DDE 的 DBus 接口,请参考:
- Deepin 开发者中心:https://github.com/linuxdeepin
- DDE 桌面环境:https://github.com/linuxdeepin/dde
- 锁屏组件:https://github.com/linuxdeepin/dde-lock
贡献代码
如果您在 Deepin OS 上发现问题或有改进建议,欢迎提交反馈!
测试检查清单
使用以下检查清单确保 Deepin 支持功能正常:
- 应用成功编译
- 应用成功启动
- 控制台显示 "Deepin DDE connected: true"
- 使用快捷键锁屏,应用检测到锁定
- 解锁后,应用检测到解锁
- 动画在锁屏时停止
- 动画在解锁后恢复
- 状态指示器正确更新
- 无错误或警告(除了其他接口不可用的提示)
结论
本应用在 Deepin OS 上提供了完整的锁屏检测支持。通过原生的 DDE DBus 接口,可以实现可靠、低延迟的锁屏状态监控。如有任何问题,请参考故障排除章节或查看应用日志。