首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    万字长文详解 Wayland 协议、架构

    我们以一个带有桌面特效(如窗口阴影、透明)的现代 Linux 桌面为例: 应用端:Chrome 使用其内置的 Skia 引擎,在自己的内存里精心绘制好了一个网页的完整图像。...应用现在都是自己渲染好一整块图像。X Server 需要加速的不再是“画线”,而是“将一块大图像贴到另一块大图像上”(即blit操作)。...在 X11 的世界里,显示服务器(X Server)、窗口管理器(Window Manager)和合成器(Compositor)是三个独立的角色,它们之间通过复杂的协议和扩展进行通信。...它只是把解析好的消息放入一个内部队列中。 简单来说,wl_connection 只关心字节流的发送、接收和正确分包。...避免“委员会式设计”:X11 的很多扩展(如 EWMH)是为了在众多独立的窗口管理器之间达成行为共识而制定的,过程漫长且结果复杂。

    3.7K33

    从 X11 的角度理解 Wayland

    在 Wayland 编程中,这一点需要时刻牢记: 不要期待像 X11 那样,通过一个全局对象就能获取窗口、屏幕或视觉信息。....); XMapWindow(dpy, w); 在 X11 语义下,一个 Window 同时承担了多种职责: 几何属性(位置、大小) 绘制目标(Drawable) 事件接收器 窗口层级关系(parent...XNextEvent() 做的事情有: 如果本地事件队列为空,则阻塞 从 X Server 读取事件 将事件放入客户端队列 取出一个 XEvent 返回给调用者 在 Wayland 中,事件处理模型发生了根本变化...: 在 X11 中,窗口管理器是“外部组件”,窗口管理器与 X Server 是松耦合甚至对抗式的关系。...在 Wayland 中,合成器即窗口管理器,窗口管理逻辑是其内建职责的一部分。

    60410

    在全志H618上用OpenCV读取图像显示到PyQt5窗口上

    OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据,在某些情况下,尽管OpenCV可以显示窗口,但PyQt5可能更适合用于创建复杂的交互式应用程序,而自带GPU的H618就成为了这些图像显示的最佳载体...这里分享一个代码,功能是使用图像处理库opencv从摄像头获取数据,缩放后从pyqt5的窗口中显示出来。...用Qt Designer画个窗口 这里我在电脑上使用designer软件,创建一个Main Window类型窗体。从左边组件栏中拖出一个label放到窗口中间。...点一下放在窗口中的label,在软件右下角的属性编辑器里可以设置很多东西,这里就不细介绍了。...__file__) 放入一点辅助代码,一个是为了实现从远程命令行运行qt程序显示到桌面上,一个是为了在命令行下可以按ctrl+c快捷键来强制退出qt程序 #【可选代码】允许远程运行 import os

    1.7K10

    X 随笔

    风格信息,表示窗口的显示风格。 位置信息,描述窗口及其各个组成部分在屏幕上的位置。 内容信息,包括窗口内各组成部分相关的数据,如菜单等。 图像信息,存放与窗口相关的屏幕图像,如窗口的图标。...Xlib共有320多个函数,可分为系统功能(连接的建立和拆除等)、窗口功能(窗口属性与操作)、图形功能(图元、图形属性、正文字体、区域、图像等)、色彩功能(颜色表操作等)、时间功能(输入时间及窗口事件)...这个假定加快了X11的操作,因为在假定网络传输是可靠的情况下,客户或服务器不必等待X11应答。实际执行所带来的迟延如果超过一定限度,则协议规定重发请求。...Wayland最初是作为一个免费的开源项目开发的,目的是用现代、安全和简单的窗口系统代替X11。 在Wayland中,Compositor是一个窗口管理器,它为应用程序提供每个窗口的屏幕外缓冲区。...窗口管理器将窗口缓冲区合成为代表屏幕的图像,并将结果写入显示内存。Wayland协议允许合成器将输入事件直接发送到客户端,并让客户端将事件直接发送到合成器。

    1.6K10

    Linux平台x86_64|aarch64架构RTSP|RTMP直播播放器开发实践

    通常,你需要安装X11开发库(用于窗口管理和视频渲染),并确保你的Linux环境配置支持编译C++代码。...创建并配置播放器窗口在Linux上,视频渲染通常通过X11窗口系统进行。...在示例代码中,我们通过X11创建了主窗口和子窗口用于视频显示:Window CreateSubWindow(Display* display, int screen, Window parent){...主窗口和子窗口的创建和尺寸设置是基于X11的窗口管理进行的。3. 参数设置和回调函数处理在集成SDK时,我们需要设置player参数、注册回调函数来处理视频帧的渲染、事件的响应等。...处理窗口事件为了保持窗口的响应性,我们需要处理X11窗口事件,例如窗口大小调整、按键事件等。在示例代码中,我们通过XNextEvent和XPending来处理窗口事件,并在需要时调整渲染窗口的大小。

    50710

    3个用于从命令行进行演示的工具【Linux-Command line】

    这些字符之间的任何文本都在终端窗口中居中。 通过在终端窗口中键入mdp slides.md(或任何你命名的文件)来运行幻灯片。...你可以从命令行运行它,但是它将打开一个X11窗口,其中包含你的幻灯片。 Sent是围绕Takahashi方法构建的,用于介绍我在本文开头提到的方法。...发送也支持图像。 要将图像添加到幻灯片,请键入@,然后输入图像名称,例如@ mySummerVacation.jpg。...以下是幻灯片文件的摘录: 屏幕快照 2019-12-07 下午11.07.57.png 在终端窗口中键入发送的文件名来启动幻灯片。 打开的X11窗口进入全屏模式,并以尽可能大的字体显示文本。...幻灯片中的所有图像均位于窗口的中心。 屏幕快照 2019-12-07 下午11.08.37.png 此类工具的缺陷 使用mdp,tpp或sent的幻灯片不会帮你赢得任何设计奖。

    3K00

    『PyQt5-基础篇』| 01 简单的基础了解

    1.1 支持的平台MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10Unix/X11 -Linux、SunSolaris...、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台Macintosh -Mac OS XEmbedded - 有帧缓冲(framebuffer...QMainWindow有菜单栏、锚接窗口(如工具栏)和状态栏的主应用程序窗口QDialog最普通的顶级窗口 2.3 重要类的继承关系PyQt 5中重要的类及其继承关系:图片图片图片图片图片2.4 常用控件控件说明...QMainWindow的底部QToolBar工具栏,可以包含多个命令按钮,通常放在QMainWindow的顶部 QListView显示和控制可选的多选列表,可以设置ListMode或IconModeQPixmap在绘图设备上显示图像...,通常放在QLabel或QPushButton类中 Qdialog对话框窗口的基类

    1.8K60

    干得漂亮,Ubuntu 终于干掉了 X11

    在《从 X11 到 Wayland,迈出这一步为何如此艰难?》一文中,我们分析过从 X11 过渡到 Wayland 所面临的诸多挑战。...有人可能会担心:在 Wayland 中嵌入 X11,会不会让系统臃肿?答案是否定的。...从 X11 迁移到 Wayland,也会出现一些问题: 某些依赖 X11 特性的应用(快捷键、工具、窗口管理扩展或插件)在 Wayland 上可能表现不同; 远程桌面/显示转发(如 X11 转发、xrdp...或某些 VNC 场景)在 Wayland 下可能更复杂,有时不如在 Xorg 下稳定; 依赖 Xorg 特定窗口管理行为或老工具的用户(如脚本、窗口管理器扩展、输入法、截屏工具等)可能在 Wayland...尽管如此,Wayland 替代 X11 是不可逆的趋势。Wayland 提供更现代的安全模型,对输入和窗口隔离更严格,有助于减少潜在安全漏洞。

    1.2K10

    dotnet X11 简单使用 MIT-SHM 共享内存推送图片

    这是我在尝试优化 Avalonia 在 Linux 上的低端设备的渲染性能时所研究的方式,本文将告诉大家如何简单使用 XShmPutImage 等 X11 的 XShm Extension 扩展方法,通过共享内存的方式推送图片...众所周知,在 X11 里面有经典的 Client-Server 模型。...里面简单使用 XShm Extension 扩展方法推送图片渲染 本文使用的很多 X11 的 PInvoke 代码是从 CPF 和 Avalonia 里面抄的,大家可以在本文末尾找到本文所有代码的下载方法...前置的 X11 相关知识博客,请参阅 博客导航 尽管在上个世纪就能找到 XShm 相关文档,但是在实际使用之前,推荐还是判断一下当前设备的 XShm 情况,判断代码如下 var status...以上代码获取到的 shmgetResult 局部变量就是共享内存标识,需要将其放入到 XShmSegmentInfo 的 shmid 字段里面,且依据此变量调用 Lib C 的 shmat 获取内存地址

    43210

    从 X11 到 Wayland,迈出这一步为何如此艰难?

    X 系统和 X11 在 Linux 世界, X 系统一直占据着图形窗口系统的主导地位。...X11 之后并没有推出新的主版本。 X11 的协议设计体现了当时的需求:一个分布式的、灵活的显示服务器系统。它可以通过网络远程显示图形界面,支持多种硬件和窗口管理器,成为开源操作系统的核心组件。...独立于硬件和操作系统: X11 是一个协议,可以在不同操作系统和硬件上实现。 窗口管理器支持: -X11 本身不管理窗口的布局或样式,这些功能由 窗口管理器(如 GNOME、KDE)实现。...然而,时代的车轮滚滚向前,X11 的架构也暴露出越来越多的问题。 复杂的架构: X11 的客户端-服务器架构导致通信开销较大,影响性能。 在本地使用时,部分功能显得冗余。...性能问题: X11 在高分辨率显示、动画渲染等方面性能有限,难以满足现代 GUI 的需求。 安全性较低: 由于 X11 的协议允许客户端访问服务器上的所有资源,可能导致应用程序之间的隔离性不足。

    1.7K10

    X11 使用 XSetWMNormalHints 固定窗口所在的屏幕

    我计划使用 X11 创建两个窗口,分别让这两个窗口在两个屏幕上。...在不做任何处理的情况下,会受到 X 窗口管理器的影响,导致全部都在鼠标最后一次命中的屏幕上显示窗口 我的需求是双屏双窗口,即一个屏幕显示一个窗口。...我的是 KWin 窗口管理器,默认情况下,我的正常窗口会被显示到鼠标最后一次命中的屏幕上,无论当前在 XCreateWindow 中传入的 X 和 Y 坐标是多少 本文的测试是在 UOS 上进行的,系统信息如下...在 X 中将最左边的显示器屏幕当成 X 坐标的 0 点,将最上方的显示器屏幕当成 Y 坐标的 0 点。...简单起见,我将固定写魔数,而不是真的根据屏幕而来 我将设置第 1 个窗口,显示在 0,0 坐标。设置第 2 个窗口,显示在 1920,0 坐标。

    28810

    Centos 6.9下部署Oracle 11G数据库环境的操作记录

    xorg-x11-xdm [root@vm01 ~]# yum install xorg-x11-fonts* 配置vncservers 配置vncservers,这里显示vnc远程连接到服务器的桌面窗口初始化大小...restart -------------------------------------------------------------------- 针对上面启动文件内容: 1)如果使用的是gnome图像界面.../xinit/xinitrc: No such file or directory /root/.vnc/xstartup: line 4: exec: /etc/X11/xinit/xinitrc:...在CentOS中,xstartup的文件路径为:/root/.vnc/ (可以通过locatexstartup来查看xstartup的文件路径) 所以需要执行:chmod 777/root/.vnc/xstartup...最后在本地windows安装vnc viewer,远程访问 在windows下安装vnc客户端, 下载地址:https://pan.baidu.com/s/1hrSIr4K 提取密码:dqdt VNC

    1.4K90

    dotnet 如何从 Gtk 3 的窗口到对应的 X11 窗口

    本文将告诉大家如何在 Gtk3 的 Gtk.Window 或 Gdk.Window 里面获取到对应的 X11 窗口 XID 号 记录本文是因为我在这里踩了很多坑,核心问题就是 GTK 有很多个版本,我开始找的全是使用...,于是错误就更加诡异 通过阅读文档发现了以下的 gtk 架构图,即 gtk 的窗口和 gdk 窗口是不相同的,可以通过 gtk_widget_get_window 方法获取,在 C# dotnet 里面可直接使用...= gdk_x11_window_get_xid(gdkWindow.Handle); Console.WriteLine($"X11 窗口 0x{x11:x2}"); } 通过以上代码输出的...X11 窗口的 XID 号,可以同步在命令行输入进 xwininfo 命令里面。...比如我这里输出的是 X11 窗口 0x5600003 的值 打开另一个命令行,输入以下命令,将 XID 传入 xwininfo 命令,即可看到显示的窗口标题和当前运行的窗口是相同的 我核心踩坑就是搜到的是

    69110

    Centos6.X 下安装并使用VNC的操作记录

    --------------------------------------------------- 配置vncservers 配置vncservers,这里显示vnc远程连接到服务器的桌面窗口初始化大小...------------------------------------------------------------------- 温馨提示: 针对上面启动文件内容: 1)如果使用的是gnome图像界面.../xinit/xinitrc: No such file or directory /root/.vnc/xstartup: line 4: exec: /etc/X11/xinit/xinitrc:...在CentOS中,xstartup的文件路径为:/root/.vnc/ (可以通过locatexstartup来查看xstartup的文件路径) 所以需要执行:chmod 777/root/.vnc/xstartup...最后在本地windows安装vnc viewer,远程访问 在windows下安装vnc客户端, 下载地址:https://pan.baidu.com/s/1hrSIr4K 提取密码:dqdt

    2.3K70

    基于 TensorFlow 、OpenCV 和 Docker 的实时视频目标检测

    Release -D CMAKE_INSTALL_PREFIX=/usr/local/ .. && make -j4 && make install 编译镜像的时候有点长,之后就可以快速的调用 实时图像目标检测...在 Dat Tran 的文章中有这部分的详细描述。难点在于将网络摄像头流发送到 docker 容器并恢复输出流以使用 X11 服务器显示它。...视频帧带着对应的视频帧编号被读取并放入输入队列中(实际上是一个python 列表对象放入了序列)。 2....然后,工作单元从输入队列中提取视频帧,处理后将它们放入第一个输出队列(依然带着它们相关的视频帧编号)。...如果输出队列不为空,视频帧带着它们相应的优先视频帧编号被抽取并放入优先队列。优先队列的大小被设置为其它队列的三倍。

    3K20
    领券