linux 下使用wayland合成器将插件分进程
背景 为什么要将插件分进程 原有的dde-dock经常因为插件问题导致假死崩溃卡顿等问题,插件与dock在相同进程就避免不了因为插件代码质量等导致的同生共死,所以有将插件独立进程出去将插件的影响范围降低到最小,只影响自己。 分进程有什么好处与坏处 分进程后带来的好处可以从以下几个方面体现: 1. 兼容性:只要确定了插件进程与dock进程通信的方式,可以使用这种通信方式都可以被dock当作插件加载上来。无论widget,qml,qt5/6还是其他语言等。 2. 流畅性:dock自身更加专注于dock本身的业务逻辑,不需要发生变化时去更新插件的状态,也不会被插件阻塞住。 3. 稳定性:dock进程只有dock自身,不再受插件的影响。 缺点方面: 最主要的一点就是总体的系统资源占用会比之前稍高。 开发复杂度和维护复杂度都会上升。 怎么去分进程 插件的主要作用: 1. 用于显示,显示插件的UI部分。 2. 获取输入,获取用户的鼠标或者键盘输入,并作出对应的响应。 确定一种通信方式可以让 dock 和插件通信,直接使用 socket 方式不能通信UI相关的信息,共享 buffer 来实现显示 = 换个类似的上层封装,可以接受 UI 相关 —“显示服务器!” linux上的显示服务器有xorg,wayland等。采用 wayland 的原因是现代化,方便扩展,并且 Qt 做好了 qt-wayland 的上层封装很方便开发者去开发Wayland相关。 wayland 简单介绍 wayland 是什么 wayland 是x11的取代品,wayland是一套应用程序用于获取用户输入和显示的协议。wayland 正好与插件的需求相切合,用于显示和获取输入。 显示和输入的两方面问题 wayland中如何显示? surface 如何暴露插件属性和插件交互? shell-surface wayland 有什么好处 更现代化的设计 更低的延迟 更好的性能 更好的安全性 更简单的代码库 shell-surface介绍 显示比较好理解,surface 是wayland中需要渲染的一片区域。 那 shell-surface 是什么呢? shell-surface 是具有元数据属性的 surface。它可以具有各种属性比如窗管中定义的窗口标题,窗口类型,窗口状态等,还具有布局和排列的能力和交互响应等。 dock 插件接口介绍 dock 提供给插件的接口...