首页
学习
活动
专区
圈层
工具
发布

X 随笔

X Server 通过X协议与客户程序的X协议 xlib接口通信,有四类通过协议传递的信息:请求、响应、事件和错误。...服务器把协议对某些请求的响应送给xlib,不是所有的请求都能通过响应得到答复,如画图请求就不产生答复。事件是服务器传给xlib的,它含有关于某个设备动作的信息,事件是客户程序用以获取信息的主要手段。...错误有两种,一种是可恢复性错误,另一种是致命性错误,由服务器发送到xlib的某一个错误管理库程序。...一旦用户引发了事件,而且网络允许,服务器就把事件送往xlib,xlib为每个服务器管理一个事件队列,每当来自服务器的事件到达,就被排队,等待客户程序读取。 7....窗口管理器负责以下3个核心任务: 接受窗口进入的消息,并使消息正确路由至目的窗口并触发窗口过程; 更新活动窗口和焦点窗口控件; 维护窗口的序列和各个窗口的剪切矩形链,正确进行窗口重绘,执行窗口过程。

1.6K10

从 X11 的角度理解 Wayland

XNextEvent() 做的事情有: 如果本地事件队列为空,则阻塞 从 X Server 读取事件 将事件放入客户端队列 取出一个 XEvent 返回给调用者 在 Wayland 中,事件处理模型发生了根本变化...对于大多数开发者而言,通常并不希望直接面对繁琐、低层的协议交互细节,因此才有了 Xlib / XCB 以及 libwayland-client 这样的客户端开发库。...Xlib 诞生于 X11 生态的早期阶段,其设计目标是为应用程序提供一套完整且易用的客户端 API,尽可能隐藏 X11 协议细节。...XCB 则被视为对 Xlib 的一次现代化重构。它采用了更“薄”的封装方式,与 X11 协议结构高度贴合,强调异步通信、显式控制和线程友好性。...在 Wayland 中,合成器即窗口管理器,窗口管理逻辑是其内建职责的一部分。

66210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    dotnet 理解 X11 的 24 位或 32 位色深窗口

    其实就是 RootWindow 窗口 在 X11 里面,所有的窗口都是 RootWindow 窗口的子窗口 尝试使用以下代码来获取 RootWindow 的色深 using static CPF.Linux.XLib...bitsPerPixel; XInitImage(ref xImage); 以上方式是 Skia 进行软渲染与 X11 对接的常用代码 当 Skia 绘制完成之后,收到 X11 的曝光事件时...unsigned int /* width */, unsigned int /* height */ ); 核心实现在 PutImage.c 文件里面,核心实现或进入的代码如下,以下代码有删减...dest_scanline_pad); UnlockDisplay(dpy); ... } 以上的 PutSubImage 为核心实现,此方法用于推送图片的一部分内容 其核心实现代码如下,以下代码有删减...基本上咱会使用的都是 ZPixmap 格式,也就进入 SendZImage 方法 两个方法的实现逻辑都差不多,核心代码如下,以下代码有删减 static void SendZImage( register

    46710

    dotnet X11 多次调用 XPutImage 是否能做到渲染同步

    本文将告诉大家我在麒麟系统和统信系统以及分别搭配飞腾和兆芯处理器的设备上,使用连续的 XPutImage 方法推送界面,测试是否能够在一次渲染内完成。...如果渲染能对齐同步的话,预期右半边是不会出现闪烁问题,即不会出现先在屏幕显示首个 XPutImage 绘制的全窗口图片,再显示回最后一次的 XPutImage 覆盖的画面 然而经过实际测试,窗口显示的内容将会闪烁...; using static CPF.Linux.XLib; XInitThreads(); var display = XOpenDisplay(IntPtr.Zero); var screen...Gravity.NorthWestGravity, win_gravity = Gravity.NorthWestGravity, //override_redirect = true, // 设置窗口的...override_redirect属性为True,以避免窗口管理器的干预 colormap = XCreateColormap(display, rootWindow, visual, 0),

    46710

    GTK、KDE、Gnome、XWindows 图形界面

    三、X和XFree86的关系 有了协议,就需要具体的软件来实现这个协议,就好比我们有了交通法规就需要交警去根据法规维护交通秩序一样。...通过以上的实验你就可以清楚的明白他们之间的关系,另其它的小型窗口管理器有: windowmaker、after step、blackbox、fvwm、fvwm2等等都是常用的优秀窗口管理器。...Xlib不方便,于是就产生了QT和GTK,对Xlib进一步封装,提供了很多控件,可以可视化的使用X协议更方便程序员的开发。...Xlib、QT、GTK直接关系如下图: ? QT是直接使用xlib库的,GTK不能直接使用xlib,而是使用更低层的函数库GDK和Glib。...随着,近几年Windows系统爆出的各种不愉快的事件,人们醒悟过来,任何时候都不能受限于一种产品,否则不管是个人还是企业都有被辖制的危险。

    6K61

    Linux DISPLAY 变量设置

    直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上...username切换到别的用户, 并且使用命令 export DISPLAY=:0.0            设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误: Xlib...: connection to ":0.0" refused by server Xlib: No protocol specified Error: Can't open display: :0.0...在服务器上查看环境变量显示如下(这个结果不同的时候并不相同) DISPLAY=localhost:10.0            在客户机上用netstat -lnp可以看到有程序监听了6010端口...修改/etc/gdm/gdm.conf, 在[Security]一节增加 DisallowTCP=false     或者在登陆窗口选择"Options" -> "Configure Login

    13.8K20

    dotnet X11 设置窗口鼠标触摸命中穿透

    的鼠标、触摸等的点击等动作的穿透功能,可以实现在窗口中挖空一块范围直接穿透到后面的窗口 在 X11 窗口中,想要实现让窗口不可命中,即所有的鼠标、触摸等的事件穿透到后面的窗口上,可以采用 libXext.so...提供的 XShapeCombineRegion 方法,也可以使用有争议的 libXfixes.so 提供的 XFixesSetWindowShapeRegion 方法 通过以上两个方法即可让 X11...窗口不响应鼠标或触摸的点击输入,让其输入到窗口后面的窗口。...,其中一个窗口调用了 XShapeCombineRegion 方法,运行程序,将设置了的 XShapeCombineRegion 的窗口激活作为前台窗口,点击此窗口的内容,可以看到点击穿透到后面的窗口...无法打开共享对象文件: 没有那个文件或目录 /home/uos/Downloads/lin/liblibXext.so.so: 无法打开共享对象文件: 没有那个文件或目录 at CPF.Linux.XLib.XShapeCombineRegion

    81110

    dotnet X11 栈空间被回收导致调用 XPutShmImage 闪退

    上述错误的 Segment id in failed request: 0x0 就能说明问题,即可能在 XPutShmImage 中遇到类似野指针或指针被覆盖等问题 特别感谢 lsj 帮忙阅读和调试 XLib...int Width, int Height, int DataByteLength, IntPtr Handle, IntPtr GC ); 再简单创建一个 X11 窗口...override_redirect属性为True,以避免窗口管理器的干预 colormap = XCreateColormap(display, rootWindow, visual,...的原因(栈区的每一个字节都被0xCC填充了,也就是int 3h的机器码,动态分配的堆,VC的Debug用0xCD填充堆的空间,就出现了“屯”) - findumars - 博客园 回到测试代码,在曝光事件调用...override_redirect属性为True,以避免窗口管理器的干预 colormap = XCreateColormap(display, rootWindow, visual,

    37310

    Java事件处理,低级事件类型:键盘事件+焦点事件,你真的懂吗?

    窗口管理器(window manager,例如,Windows或X Windows)直接将所有的击键定位于活动窗口(active window)。通常,活动窗口用高亮度显示的标题栏进行区分。...在任何时刻,只有一个窗口可以是活动的。 现在假设活动窗口在一个Java程序控制之下。当Java窗口接收到敲击键盘的操作,并定位于某个特定的组件时,这个组件就具有了焦点(focus)。...正像活动窗口可以采用某种方式进行辨别一样,大多数的Swing组件在具有焦点的时候,也可以拥有一个明显的提示。文本域会显示闪烁的光标;按钮上的标签周围有一个矩形等等。...• 焦点窗口,也就是包含焦点拥有者的窗口。 • 活动窗口,也就是包含焦点拥有者的框架或对话框。 焦点窗口通常与活动窗口是一样的。...• boolean isActive( ) 1.4 如果该框架或对话框是当前的活动窗口,返回true。活动框架和对话框的标题栏通常由窗口管理器标识出来。

    5.3K30

    【0x001E】HCI_Write_Inquiry_Scan_Activity详解

    例如,在需要快速发现周围蓝牙设备的场景中,可以设置较大的窗口值以增加发现速度;而在对功耗有较高要求的场景中,则可以选择较小的窗口值以降低功耗。...验证参数:检查提取出的查询扫描间隔和查询扫描窗口参数是否有效合规,具体会查看其取值是否处于规定的十六进制数值范围内,以及是否满足扫描窗口小于等于扫描间隔等条件限制,若参数不符合要求,判定命令执行失败。...,以及参数的取值是否在规定的十六进制范围之内 // 为了简化,这里只检查扫描窗口是否小于扫描间隔 return inquiry_scan_window <= inquiry_scan_interval...五、使用场景 HCI_Write_Inquiry_Scan_Activity命令有特定的使用场景,这些场景主要围绕蓝牙设备的查询扫描活动配置。以下是对该命令使用场景的详细归纳。 5.1....主机需要正确处理这个事件,以确认命令是否成功执行。 如果在执行过程中遇到错误或异常情况,主机需要根据错误代码进行相应的处理,如重试命令、调整参数或记录错误日志等。 6.4.

    10310

    Windows wpf(下载应用介绍教程)

    窗体的激活     在首次打开一个窗口时,它便成为活动窗口(除非是在 ShowActivated 设置为 false 的情况下显示)。 活动窗口是当前正在捕获用户输入(例如,键击和鼠标单击)的窗口。...当窗口变为活动窗口时,它会引发 Activated 事件。     当第一次打开窗口时,只有在引发了 Activated 事件之后,才会引发 Loaded 和 ContentRendered 事件。...当这种情况出现时,当前的活动窗口将停用,并引发 Deactivated 事件。 同样,当用户选择当前停用的窗口时,该窗口会再次变成活动窗口并引发 Activated。...Close()方法:关闭窗体,并释放窗体的资源 Closing事件、Closed事件:关闭时、关闭后引发的事件,通常在Closing事件中提示用户是否退出等信息。 窗体的生命周期。如下图。...image.png WPF窗体的详细的属性、方法、事件请参考MSDN,有很多的属性、方法、事件与Windows应用程序中 System.Windows.Forms.Form类颇为相似。

    1.7K20

    dotnet C# 设置 X11 应用窗口背景透明

    本文将告诉大家如何在 X11 里面设置窗口透明 不同于在 WPF 里面可以使用 AllowsTransparency 简单方便的设置透明,在 X11 里面设置窗口透明的方法比较绕。...,那可能就是桌面窗口合成管理器没有安装或没有安装正确。...,开启窗口特效 如果开启之后依然没有透明窗口背景效果,则请调查一下是否 UOS 里默认的 KWin 窗口合成管理器损坏或被替换为其他的窗口合成管理器,查看当前的窗口合成管理器可使用以下命令 sudo apt-get...如输出的字符串里面 compositor 包含的是其他字符串,则请自行了解一下对应的窗口合成管理器是否支持窗口透明或需要进行哪些配置 完全的 Program.cs 文件的代码如下 using System.Collections.Immutable...; using BlankX11App.X11; using static BlankX11App.X11.XLib; using static BlankX11App.X11.GlxConsts;

    77910

    dotnet C# 创建 X11 应用时设置窗口背景颜色

    本文将告诉大家如何在 X11 里面创建一个窗口时,设置窗口的背景颜色 在 dotnet C# 设置 X11 应用窗口背景透明 的基础上,可以通过创建 XColor 结构体,将 XColor 赋值给到 XSetWindowAttributes...的 background_pixel 进行设置窗口的初始化背景颜色 核心实现如下 先创建 XColor 结构体,代码如下 XColor color = new XColor() { red =...换句话说如果你在 XColor 里面使用 WPF 系习惯的写法,将会发现最终颜色都是一个黑色 最后一个参数(字段)用来指明有哪些颜色分量是有效的。...= color.pixel, }; 如此执行创建窗口时,即可使用所配置的颜色。...所有的代码如下 using static CPF.Linux.XLib; var display = XOpenDisplay(IntPtr.Zero); var screen = XDefaultScreen

    49110
    领券