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 提供给插件的接口...

March 15, 2024 · 3 min · tsic404

OBS使用指南

OBS 介绍 open build service简称OBS,是openSUSE主导开发的通用构建系统,用于从源码的自动构建和包分发。 假设读者已经了解debian系打包📦相关。本文中对osc的介绍主要作为OBS的CLI接口,本地构建方面可参考osc 本地构建。 OBS 打包流程 本文以deepin(debian系)构建,deepin OBS实例为例 创建Project 每个普通账号只有自己的home project。比如:home:tsic404 也可以可以在Subprojects一栏,创建subproject。比如创建 home:tsic404:ddeOnDebian。 然后 osc co home:tsic404:ddeOnDebian home:tsic项目内容不会包含home:tsic:ddeOnDebian,两个是各自 “相对独立” 的project。 添加构建仓库 在OBS web界面点击Repository,然后add一个Repository到该Project中。 如上图add debian sid repo。 或者使用osc meta prj修改project使用的仓库。 <project name="home:tsic404:ddeOnDebian"> <title/> <description/> <person userid="tsic" role="maintainer"/> <repository name="Debian_Sid"> <path project="Debian:Sid" repository="standard"/> <path project="Debian:ddeExtra" repository="Debian_Sid"/> <arch>x86_64</arch> </repository> </project> 创建Package 可以在web点击create package或者使用osc cd home:tsic404:ddeOnDebian osc mkpac dtkcore 上传打包文件 点击dtkcore,然后点击add local file。选择dtkcore相关打包文件。即可上传到OBS的Project中。 或者使用 osc cd dtkcore cp xxxx/dtkcore/* ./ osc add * osc ci -m "init" OBS开始构建 在dtkcore右侧即可看到对应的状态 点击对应仓库的架构即可看到构建日志,或者使用osc 也可以查看构建日志。...

February 1, 2023 · 2 min · tsic404