- 背景与需求:过去在 C++中实现有复杂用户界面的效果是唯一方式,C++ API 使用难度大。几年前概述效果流行,需求增加,为解决此问题开始寻找选项,QtQuick 是明显选择,已在 Plasma 5.24 引入基本支持,但自己实现仍需写 C++胶水代码,且 libkwin 发布时 API 常不兼容。
Plasma 6.0 改进:解决需 C++代码的问题,改进声明式效果 API,引入特定项目结构。
- 项目结构:包含
package
目录(含metadata.json
和contents
目录)和contents
目录(含 QML 代码等),ui/main.qml
是入口点。安装效果需运行kpackagetool6
命令,kwin 提供示例 qtquick 效果。 - Hello World 效果:简单展示“Hello world”消息,使用
QtQuick
和kwin
组件,通过SceneEffect
、ShortcutHandler
、ScreenEdgeHandler
、PinchGestureHandler
控制可见性和交互。 - 显示窗口:将显示内容改为
WindowThumbnail
以显示活动窗口。 - 输入处理:输入处理使用 QtQuick 中的常见组件,如
TapHandler
等,实现窗口排列和点击关闭窗口功能。 - 委托 per 屏幕:委托是 per 屏幕实例化的,可通过
SceneView.screen
获取屏幕信息。 - 配置:添加
main.xml
和config.ui
文件实现配置,main.xml
列出选项,config.ui
是 Qt Designer UI 文件,需在metadata.json
中添加X-KDE-ConfigModule
。
- 项目结构:包含
- 分享与资源:通过[KDE Store]分发第三方扩展,KWin 脚本 API 文档在[https://develop.kde.org/docs/...],kwin git 仓库中的示例[https://invent.kde.org/plasma...],如需更多示例可看
kdeplasma-addons
中的桌面 cube 效果[https://invent.kde.org/plasma...]。 - 总结与展望:希望此介绍对 KWin 中基于 QML 的效果有用,声明式效果仍处于初期,API 不完美,欢迎第三方扩展开发者提供反馈,可在[https://webchat.kde.org/#/roo...]交流。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。