山东做网站的,ps做图软件怎么下载网站,哪些网站可以做平面设计挣钱,北京做网站公司排【linux图形化协议框架】 X、X11系统#xff1a;X协议#xff0c;X服务器#xff0c;窗口管理器#xff0c;X客户端#xff08;客户端库Xcb#xff0c;Xlib库等#xff09;#xff0c;输入、绘制 Wayland系统#xff1a;Wayland 协议#xff0c;合成器、客户端#…【linux图形化协议框架】 X、X11系统X协议X服务器窗口管理器X客户端客户端库XcbXlib库等输入、绘制 Wayland系统Wayland 协议合成器、客户端libwayland-client、libwayland-cursor 以上已经看到存在2种多个不通版本的图形化系统为了保障桌面环境和应用程序的一致性、互操作性、兼容性等这里都得或部分遵循XDG标准。
通过环境变量查看桌面环境后端的图形化系统如下。展示为x11代表桌面环境后端图形系统是x11系统如果是tty则是非图形化比如麒麟服务器vncserver远程后之前提权弹窗问题就是由于窗口的环境变量不标准在图形化环境种xdg指定为了tty而非x11.desktop桌面程序菜单展示的标准即出自该标准窗口任务栏系统托盘标准也都是在XDG标准约定。 mybmyb-kylinV10:~/桌面$ echo X D G S E S S I O N T Y P E x 11 m y b m y b − k y l i n V 10 : / 桌面 XDG_SESSION_TYPE x11 mybmyb-kylinV10:~/桌面 XDGSESSIONTYPEx11mybmyb−kylinV10: /桌面
gtk和qt都提供了对以上图形化系统的支持。 图形化系统这块核心的服务器、合成器需要硬件驱动支持。ubuntu 以下说明围绕的是X窗口。
【X服务器与显示】 绘图显示处理鼠标键盘输入转换成基本的事件该事件需要进一步传递给窗口管理器处理 Xorg X窗口图形服务器与X客户端通过X协议进行通信同时提供硬件交互。QT依赖的xcb就是一个客户端的C实现库。 在linux上图形窗口可通过QTgtk。这两个实现都是基于xcb或xlib接口与X服务器进行通信实现窗口界面相关功能。
【X客户端】 窗口管理器应用程序UI都是X客户端。通过X协议X11协议、Wayland协议或框架规范与X服务器交互。 名字任意UI程序。
【X桌面应用】 桌面应用基于X协议进行桌面开发X协议实现如XcbXlib包括QT底层默认用Xcb。 所以开发桌面应用可以用最基础的Xcb库封装后的gtk库封装后的Qt库。
【X窗口管理器】 窗口布局与管理如位置大小层叠顺序等装饰器行为、监听X服务器的需要窗口管理器处理的事件并处理 装饰器基本的窗口最大化最小化移动边框标题栏主体样式焦点布局窗口管理器提供所有窗口的管理操作统一的风格样式和统一的窗口功能窗口管理器和普通UI一样也是一个X客户端。而窗口事件分身是X服务器直接分发的。窗口自身的事件由X服务器直接分发而窗口作为一个整体在系统内部则需要窗口管理器处理比如一个窗口最小化了自己那就需要窗口管理器处理让其后的窗口能够展示出来。 名字如KWMMutter
【X窗口事件过程】
用户输入鼠标X服务器接收鼠标事件转换成X事件事件传递将事件传给窗口管理器如果是窗口布局相关的需要窗口管理器介入处理窗口管理器处理事件分发给对应程序处理移动缩放等事件如果是窗口内部事件如按钮点击则直接由X服务器分发如果是窗口自身布局相关则窗口管理器处理后二次分发应用程序响应执行事件处理动作提交窗口管理器如果非窗口管理器布局相关事件则直接到提交X服务器窗口管理器转换为绘图请求提交X服务器X服务器绘制刷新显示器输出完成绘制
【X窗口创建过程】
应用程序使用XCB接口创建窗口即向X服务器发送一个创建请求X服务器维护窗口对象应用程序调用Xcb接口映射窗口像X服务器发送映射请求X服务器通知窗口管理器窗口的创建窗口管理器监听X服务器的窗户事件、应用程序监听窗口内部事件窗口管理器分发事件接收请求、或应用程序直接处理事件
【系统托盘】 以上可以看到窗口本身和托盘弹窗没关系。桌面显示只关心窗口的显示而弹窗相当于桌面上一个弹窗程序和其他程序的通信。在linux托盘弹窗定义在不通桌面环境的标准中。一般基于dbus进行通信。 系统托盘自身有标准协议是桌面组件之一提供图标展示。 系统托盘通常遵循特定的标准协议例如System Tray Protocol也称为Systray Protocol或者更新的StatusNotifierItem规范这使得不同的应用程序能够以一致的方式与系统托盘交互 早期gtk2和gtk3提供了GtkStatusIcon托盘操作gtk4废弃要实现gtk可采用三方库如libappindicator或gnome桌面环境可采用其Adwaita库。其他如qt实现了托盘的功能对接提供QSystemTrayIcon支持多种桌面环境实际围绕2类图形化系统标准X或wayland的兼容。 所以要实现这个需要和标准组件接口进行对接。当前可选的 gtk、qt、gnome下Adwaita三方库libappindicator基于gtk跨桌面环境兼容性多种桌面环境
【桌面组件与环境】 如资源管理器任务管理器开始菜单桌面面板系统托盘等都是桌面的UI组件这些组件都是独立的X客户端组件间通过dbus服务进行通信共同组成了桌面环境。诸如GNOMEKDEXFCE等。这些桌面环境也可能支持不通的图形化协议系统。