CN114090010A - X11系统的移植方法、装置、电子设备及可读存储介质 - Google Patents
X11系统的移植方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114090010A CN114090010A CN202111189449.3A CN202111189449A CN114090010A CN 114090010 A CN114090010 A CN 114090010A CN 202111189449 A CN202111189449 A CN 202111189449A CN 114090010 A CN114090010 A CN 114090010A
- Authority
- CN
- China
- Prior art keywords
- wayland
- library
- dependency
- libraries
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例提供了一种X11系统的移植方法、装置、电子设备及计算机可读存储介涉及系统移植技术领域。该方法包括:本申请实施例通过在Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装xserver‑xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例实现了将X11系统移植到Wayland系统中,实现了在采用Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
Description
技术领域
本申请涉及系统移植技术领域,具体而言,本申请涉及一种X11系统的移植方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
显示服务器是图形用户界面(尤其是窗口系统)中的关键组件,其主要任务是协调客户端与其他操作系统、硬件以及彼此之间的输入和输出。显示服务器提供了一个图形环境的框架,使用户可以使用鼠标、键盘等与应用程序进行交互,无需使用命令行和应用程序进行交互。显示服务器通过显示服务器协议与其客户端进行通信,Linux中提供了三种显示服务器协议,X11和Wayland是其中两个。
X11(也称X Window或X),是一种出现较早的显示服务器协议,其提供的大部分功能目前已不再使用,X11所做的几乎所有工作都重新分配给了各个应用程序和窗口管理器。Wayland也是一种显示服务器协议,作为一个免费的开源社区驱动的项目而开发,旨在用现代、安全和简单的窗口系统代替X11。Wayland与X11相比的主要优势在于它减少了客户端和服务器之间的频繁交互,能够提高渲染效率;缺陷在于截至目前X11 的功能更加健全,大多数运行在Linux上的视频游戏和图形密集型应用程序仍基于X11编写,另外,许多封闭源代码的图形驱动程序,例如NVIDIA GPU的驱动程序,都尚未完全提供对Wayland的支持。
X11包括X11服务器和X11客户端,X11服务器和X11客户端使用的显示服务器协议为X11,Wayland同样包括Wayland服务器和Wayland 客户端,Wayland服务器和Wayland客户端使用的显示服务器协议为 Wayland,为了融合X11和Wayland的优势,研究人员提出XWayland,XWayland本质是一个完整的X11服务,用于替换驱动显示器和工作中的输入设备,作为一个Wayland客户端工作,若在X11服务器上增加 XWayland,能够实现在采用X11作为显示服务器协议的操作系统上显示采用Wayland作为显示服务器协议生成的应用程序。
上述在X11服务器上增加XWayland目前仅仅实现了在采用X11作为显示服务器协议的操作系统上显示采用Wayland作为显示服务器协议生成的应用程序,但现有很多操作系统在设计之初就采用Wayland作为整个操作系统的显示服务器协议,而很多应用程序在设计之初采用X11作为显示服务器协议不支持以Wayland作为显示服务器协议,在X11服务器上添加XWayland不能够实现在采用Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
发明内容
本申请实施例提供了一种X11系统的移植方法、装置、电子设备、计算机可读存储介质及计算机程序产品,可以解决无法在使用Wayland作为显示服务器协议的操作系统伤显示显示采用X11作为显示服务器协议生成的应用程序的问题。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种X11系统的移植的方法,该方法包括:
在Wayland系统中添加对X11系统的依赖库的支持;
在所述Wayland系统中安装xserver-xwayland程序;
在Wayland系统中添加对X11窗口管理器的支持。
在一个可能的实现方式中,X11系统的依赖库包括第三方依赖库、运行依赖库以及程序依赖库;
在Wayland系统中添加对X11系统的依赖库的支持,包括:
在Wayland系统中添加对X11系统的第三方依赖库的支持;
在Wayland系统中添加对X11系统的运行依赖库;
在Wayland系统中添加X11系统的程序依赖库。
在一个可能的实现方式中,在Wayland系统中安装xserver-xwayland 程序之前还包括:
更新Wayland系统中的原始依赖库,使得原始依赖库和X11系统的依赖库保持兼容,原始依赖库包括libdrm库、libfontenc库、libxfont2库以及Wayland-protocol库。
在一个可能的实现方式中,第三方依赖库包括xcb窗口的依赖库、xkb 窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库。
在Wayland系统中添加对X11系统的第三方依赖库的支持,还包括:
将X11系统的enable-malloc0returnsnull生成配置项设置为预设值。
在一个可能的实现方式中,在Wayland系统中添加运行X11系统的程序的运行依赖库,包括:
在Wayland系统的运行依赖库对应的文件中添加对xcb窗口和egl接口的定义。
在一个可能的实现方式中,运行时依赖库包括libbsd库、libmd库、 libtirpc库以及xkbcomp库;程序依赖库包括qtX11extras库、 Kwindowsystem库以及qgsettings库。
根据本申请实施例的另一个方面,提供了一种X11系统的移植的装置,该装置包括:
依赖库添加模块,在Wayland系统中添加对X11系统的依赖库的支持;
程序安装模块,用于在Wayland系统中安装xserver-xwayland程序;
X11窗口管理器添加模块,用于在Wayland系统中添加对X11窗口管理器的支持。
在一个可能的实现方式中,依赖库添加模块包括:
第三方依赖库添加模块,用于在Wayland系统中添加对X11系统的第三方依赖库的支持;
运行依赖库添加模块,用于在Wayland系统中添加对X11系统的运行依赖库;
程序依赖库添加模块,用于在Wayland系统中添加X11系统的程序依赖库。
在一个可能的实现方式中,该装置还包括:
原始依赖库更新模块,用于更新Wayland系统中的原始依赖库,使得原始依赖库和X11系统的依赖库保持兼容;原始依赖库包括libdrm库、 libfontenc库、libxfont2库以及Wayland-protocol库。
在一个可能的实现方式中,第三方依赖库包括xcb窗口的依赖库、xkb 窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库;第三方依赖库添加模块包括具体用于将X11系统的enable-malloc0returnsnull生成配置项设置为预设值。
在一个可能的实现方式中,运行依赖库添加模块具体用于在Wayland 系统的运行依赖库对应的文件中添加对xcb窗口和egl接口的定义。
在一个可能的实现方式中,运行时依赖库包括libbsd库、libmd库、 libtirpc库以及xkbcomp库;程序依赖库包括qtX11extras库、 Kwindowsystem库以及qgsettings库。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如第一方面所提供的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法。
第五方面,本发明实施例提供一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第一方面所提供的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理执行时实现第一方面所提供的方法。
本申请实施例提供的技术方案带来的有益效果是:本申请实施例在 Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装 xserver-xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例将X11系统移植到Wayland系统中,实现了在采用Wayland 作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的实现进行X11系统移植所依赖的架构示意图;
图2为本申请实施例提供的一种X11系统移植的方法的流程示意图;
图3为本申请实施例提供的一种X11系统移植的装置的结构示意图;
图4为本申请实施例提供的一种的电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请涉及的几个名词进行介绍和解释:
显示服务器是一个程序,它负责协调其客户端与操作系统的其他部分之间,以及硬件和操作系统之间的输入和输出,显示服务器提供了一个图形环境的框架,使用户可以使用鼠标、键盘等与应用程序进行交互,无需使用命令行和应用程序进行交互,显示服务器通过显示服务器协议与其客户端进行通信。
窗口管理器(window manager,WM),WM的作用包括最大化,最小化,移动,关闭窗口等,能够被看到的Linux图形界面都启动了WM,否则Linux图形界面的窗口将不能移动、放大和缩小等。
Linux中提供了三种显示服务器协议,X11和Wayland是其中两个。
X11(也称X Window或X),是一种出现较早的显示服务器协议,其提供的大部分功能目前已不再使用,X11所做的几乎所有工作都重新分配给了各个应用程序和窗口管理器。Wayland也是一种显示服务器协议,作为一个免费的开源社区驱动的项目而开发,旨在用现代、安全和简单的窗口系统代替X11。Wayland与X11相比的主要优势在于它减少了客户端和服务器之间的频繁交互,能够提高渲染效率;缺陷在于截至目前X11 的功能更加健全,大多数运行在Linux上的视频游戏和图形密集型应用程序仍基于X11编写,另外,许多封闭源代码的图形驱动程序,例如NVIDIA GPU的驱动程序,都尚未完全提供对Wayland的支持。
X11包括X11服务器和X11客户端,X11服务器和X11客户端使用的显示服务器协议为X11,Wayland同样包括Wayland服务器和Wayland 客户端,Wayland服务器和Wayland客户端使用的显示服务器协议为 Wayland。为了融合X11和Wayland的优势,研究人员提出XWayland, XWayland本质是一个完整的X11服务,用于替换驱动显示器和工作中的输入设备,作为一个Wayland客户端工作,若在X11服务器上增加 XWayland,能够实现在采用X11作为显示服务器协议的操作系统上显示采用Wayland作为显示服务器协议生成的应用程序。
Linux本身是一个基于命令行的操作系统,没有图形用户界面,图形界面并不是Linux的一部分,Linux现在的图形界面实际是Linux下的相关程序实现的。Linux通过安装显示服务器能够显图形用户界面,使得用户能够使用电脑。
其次,介绍一下本申请实施例进行X11系统移植所依赖的架构,如图 1所示,其示例性示出了进行X11系统移植的架构示意图,该架构包括 Wayland合成器(合成器作为服务端)、Wayland客户端以及evdev等底层驱动,其中,Wayland客户端中封装有XWayland(或X11服务器)和 X11客户端,Wayland客户端中的XWayland和X11客户端之间通过X11 进行通信,XWayland是一个完整的X11服务器,和Xorg一样,但是 XWayland替换了驱动显示器和工作中的输入设备,作为Wayland compositor合成器的一个Wayland客户端运行,XWayland是Wayland合成器的一个Wayland客户端,同时,Wayland合成器也是XWayland的一个X11客户端,是一种循环依赖的关系。其中,Wayland合成器和Wayland 客户端之间使用Wayland通信,Wayland合成器和XWayland之间使用X11 或Wayland通信。
Wayland合成器中包括Wayland窗口管理器,用于对Wayland窗口进行管理,如图1,Wayland合成器中除了包括Wayland窗口管理器之外,还包括X11窗口管理器,即Wayland合成器封装了Wayland窗口管理器和X11窗口管理器。
本申请的X11系统的移植方法依赖于上述架构,能够实现在采用 Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
本申请提供的X11系统的移植方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
本申请实施例中提供了一种X11系统的移植方法,如图2所示,该方法包括:
步骤S201,在Wayland系统中添加对X11系统的依赖库的支持。
本申请实施例Wayland系统指采用Wayland作为显示服务器协议的操作系统,Wayland系统中包括Wayland客户端和Wayland服务器;同理, X11系统是指采用X11作为显示服务器协议的操作系统,X11系统中包括 X11客户端和X11服务器。
依赖库是指封装了各种功能的函数的库文件,本申请实施例X11系统的依赖库是指封装了X11系统的各种功能的函数的库文件,对X11系统的移植需要移植X11系统的依赖库,X11的依赖库有多种类型的依赖库,比如第三方依赖库、运行时依赖库以及程序依赖库等,详细见后续内容。
一个操作系统项目中会包含多个依赖库,每个依赖库都包含相应的操作系统项目代码,开发人员基于该操作系统项目代码开发应用程序时,可以直接引用这些依赖库,而无需重新编写项目代码,从而提高开发效率和降低整体项目维护成本。
步骤S202,在Wayland系统中安装xserver-xwayland程序。
本申请实施例操作系统采用的显示服务器协议是Wayland,Wayland 系统无法显示采用通过X11生成的应用程序,因此,需要在Wayland系统中安装xserver-xwayland程序。xserver-xwayland程序可以从互联网获得,例如一个下载地址为:https://gitlab.freedesktop.org/xorg/xserver/-/tree/xwayland-21.1,下载后的压缩包显示的程序名称为“xserver-xwayland”。
另外,如果是QtWayland,还会修改qtbase源码中针对xcomposite的配置文件configure.json,支持交叉编译识别libxcomposite库的检测命名改为xcomposite。同时,gl4es配置需要设置NOEGL=1,DDEFAULT_ES=2 (gl4es是OpenGL到GLES的翻译库,其代码可以从互联网获得,例如一个下载地址:https://github.com/topics/gl4es)。
步骤S203,在Wayland系统中添加对X11窗口管理器的支持。
窗口管理器(Window management,WM)和桌面环境是用户在操作系统里的主要界面,窗口管理器是一个程序,它控制窗口的外表、位置和提供用户去操作这些窗口程序的方法,桌面环境为操作系统提供了一个较完整的图形操作界面,并提供了一定范围和用途的实用工具和应用程序。
X11系统的窗口管理器称之为X11窗口管理器,当X11窗口管理器开始运作时,X11服务器和客户端之间的互动会重新导向到窗口管理器,每当要显示一个新窗口时这个请求便会被重新导向到窗口管理器,它会决定窗口的初始位置。
Wayland系统的窗口管理器为Wayland窗口管理器(简写为WWM), X11系统的窗口管理器为X11窗口管理器(简写为XWM)。
窗口管理器是窗口合成器的一部分,对于本申请实施例而言,本申请实施例Wayland合成器中包括Wayland窗口管理器,能够对Wayland窗口进行管理,通过将X11窗口管理器添加至Wayland合成器中,能够使得Wayland合成器管理X11窗口和Wayland窗口。
本申请实施例在Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装xserver-xwayland程序;在Wayland系统中添加对 X11窗口管理器的支持。本申请实施例将X11系统移植到Wayland系统中,实现了在采用Wayland作为显示服务器协议的操作系统上显示采用 X11作为显示服务器协议生成的应用程序。
可通过预设的文件描述符fd实现X11系统的窗口与Wayland系统的窗口之间的转化。
本申请实施例中提供了一种可能的实现方式,X11系统的依赖库包括第三方依赖库、运行依赖库以及程序依赖库;
在Wayland系统中添加对X11系统的第三方依赖库的支持;
在Wayland系统中添加对X11系统的运行依赖库;
在Wayland系统中添加X11系统的程序依赖库。
本申请实施例X11系统的依赖库包括第三方依赖库、运行依赖库以及程序依赖库;其中,第三方依赖库是指除官方开发的官方依赖库外的第三方开发的用以实现基础功能的依赖库;第三方依赖库包括xcb窗口的依赖库、xkb窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库。
具体而言,例如xcb窗口的依赖库有libxcb库;xkb窗口的依赖库有libxkbcommon、libxkbfile等,其他依赖库在此不再一一举例。
第三方依赖库定义了函数原型,并未提供实现,运行时依赖库用于提供具体实现,运行依赖库包括libbsd库、libmd库、libtirpc库以及xkbcomp 库。
程序依赖库是指运行程序所依赖的库,例如qtx11extras库、 Kwindowsystem库以及qgsettings。
可将上述第三方依赖库、运行依赖库以及程序依赖库直接导入预设目录,实现在Wayland系统中添加对X11系统的第三方依赖库的支持。
本申请实施例提供了一种可能的实现方式,在Wayland系统中安装 xserver-xwayland程序之前还包括:
更新Wayland系统中的原始依赖库,使得原始依赖库和X11系统的依赖库保持兼容。
本申请实施例Wayland系统本身有的依赖库,称为原始依赖库,原始依赖库和X11系统的依赖库可能由于版本、型号等原因无法保持兼容,因此,需要更新Wayland系统中的原始依赖库,使得原始依赖库和X11系统的依赖库保持兼容。
原始依赖库包括libdrm库、libfontenc库、libxfont2库以及 Wayland-protocol库。
libdrm库封装了DRM driver提供的open/close/ioctl等接口,通过 libdrm库,程序可以间接调用DRM Driver,DRM是Linux内核层的显示驱动框架,把显示功能封装成open/close/ioctl等标准接口,用户空间的程序调用这些接口,驱动设备,显示数据。
Libfontenc库和libxfont2库提供各种服务,比如字体选择fontselection 和光栅化rasterisation。
Wayland-protocol库中,Wayland的协议定义在protocol目录,通信协议实现在src目录,它主要编译出三个库,libwayland-client、 libwayland-server和libwayland-cursor,第一个为协议的client端实现,第二个为协议的server端实现,第三个是协议中鼠标相关处理的实现。编译时会首先编译出wayland-scanner这个可执行文件,它利用expat这个库来解析xml文件,将wayland.xml生成相应的wayland-protocol.c, wayland-client-protocol.h和wayland-server-protocol.h,它们会被Wayland 的client和server在编译时用到。在编译时,一般会修改wayland-protocols 生成版本的路径为usr/lib64/pkgconfig。
本申请实施例提供了一种可能的实现方式,第三方依赖库包括xcb窗口的依赖库、xkb窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库;
在Wayland系统中添加对X11系统的第三方依赖库的支持,还包括:
将X11系统的enable-malloc0returnsnull生成配置项设置为预设值。 xcb是Xlib的替代品,xcb最大的特征是可以自动生成X协议的c语言绑定,xcb占用空间小、延迟隐藏、直接访问协议、改进的线程支持和可扩展性。
xcb窗口的依赖库的依赖库包括:libxcb库、libmad库、ffmpeg库以及libdrm。
xkb,全称X Keyboard Extension,是Liunx下管理键盘输入的一套较为复杂的系统,采用这套系统来支持图形界面下的键盘管理。为了能够在wayland系统中显示使用X11协议生成的应用程序,需要将X11系统的 enable-malloc0returnsnull生成配置项设置为预设值,预设值为yes。
本申请实施例提供了一种可能的实现方式,在Wayland系统中添加运行X11系统的程序的运行依赖库,包括:
在Wayland系统的运行依赖库对应的文件中添加对xcb窗口和egl接口的定义。
egl是OpenGL ES渲染API和本地窗口系统(native platform window system)之间的一个中间接口层,egl作为OpenGL ES与显示设备的桥梁,让OpenGL ES绘制的内容能够在呈现当前设备上。egl具有如下作用:a:与设备的原生窗口系统通信;b:查询绘图表面的可用类型和配置;c:创建绘图表面;d:在OpenGL ES和其他图形渲染API之间同步渲染;e:管理纹理贴图等渲染资源。具体地,例如对egl窗口的定义如下:
typedef Display*EGLNativeDisplayType;
typedef Pixmap EGLNativePixmapType;
typedef Window EGLNativeWindowType;
本申请实施例在EGL中其中某个图像平台库eglplatfrom.h中去掉宏 MESA_EGL_NO_X11_HEADERS的定义。
由于移动操作系统不支持3D渲染,本申请实施例除了添加对xcb窗口和egl接口的定义之外,还通过meson_build文件设置禁用xwayland后台进程中的glamor、glx、xvfb模块。
本申请实施例提供了一种可能的实现方式,运行时依赖库包括libbsd 库、libmd库、libtirpc库以及xkbcomp库;程序依赖库包括qtX11extras 库、Kwindowsystem库以及qgsettings库。
第三方依赖库定义了函数原型,并未提供实现,运行时依赖库用于提供具体实现。
运行时依赖库包括libbsd库、libmd库、libtirpc库以及xkbcomp库。其中,libbsd是移植Freebsd的代码库,包含了USB的协议栈部分;libmd 为消息摘要库,libmd库使用轻量级API提供了加密散列算法MD4、MD5、SHA1和SHA2(包括SHA256、SHA384、SHA512)的实现;libtirpc库提供一个Sun的独立于传输的RPC库到Linux的端口支持,旨在替代GNU C库中的RPC代码,为IPv6上的RPC(以及NFS)提供支持;xkbcomp库用于编辑xkb的键盘描述装置。
本申请实施例程序依赖库是编译、执行程序所依赖的基础库。其中, qtX11extras库提供类便于在X11平台进行开发;KWindowSystem库提供有关窗口系统的信息,并允许与窗口系统交互,提供了一个独立于窗口系统的高级应用编程接口,并具有特定于平台的实现,该应用编程接口的涉及针对于X11,因此并非所有功能都适用于所有窗口系统;QSettings可以存储一系列设置,每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。
本申请实施例为了显示窗口和浏览器,增加WaylandChrome和 WaylandWindow辅助接口类,在移动操作系统中实现Xwayland功能,另外,也可根据需要定制修改或采用对应模块进行替换,替换为用户需要的接口模块。
需要强调的是,上述的X11系统的移植方法的实现,可以使用QML 语言实现。
本申请实施例提供了一种X11系统的移植装置,如图3所示,该X11 系统的移植装置30可以包括:该装置包括:
依赖库添加模块310,在Wayland系统中添加对X11系统的依赖库的支持;
程序安装模块320,用于在Wayland系统中安装xserver-xwayland程序;
X11窗口管理器添加模块330,用于在Wayland系统中添加对X11窗口管理器的支持。
本申请实施例提供了一种可能的实现方式,依赖库添加模块包括:
第三方依赖库添加模块,用于在Wayland系统中添加对X11系统的第三方依赖库的支持;
运行依赖库添加模块,用于在Wayland系统中添加对X11系统的运行依赖库;
程序依赖库添加模块,用于在Wayland系统中添加X11系统的程序依赖库。
本申请实施例提供了一种可能的实现方式,该装置还包括:
原始依赖库更新模块,用于更新Wayland系统中的原始依赖库,使得原始依赖库和X11系统的依赖库保持兼容,原始依赖库包括libdrm库、 libfontenc库、libxfont2库以及Wayland-protocol库。
本申请实施例提供了一种可能的实现方式,第三方依赖库包括xcb窗口的依赖库、xkb窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库;
第三方依赖库添加模块包括具体用于将X11系统的 enable-malloc0returnsnull生成配置项设置为预设值。
本申请实施例提供了一种可能的实现方式,运行依赖库添加模块具体用于在Wayland系统的依赖库对应的文件中添加对xcb窗口和egl接口的定义。
本申请实施例提供了一种可能的实现方式,运行时依赖库包括libbsd 库、libmd库、libtirpc库以及xkbcomp库;程序依赖库包括qtX11extras 库、Kwindowsystem库以及qgsettings库。
本实施例的X11系统的移植装置可执行本申请前述实施例所示X11 系统的移植方法的步骤,其实现原理相类似,此处不再赘述。
本申请实施例通过在Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装xserver-xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例实现了将X11系统移植到 Wayland系统中,实现了在采用Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现x11系统移植的方法的步骤,与现有技术相比可实现:本申请实施例通过在Wayland 系统中添加对X11系统的依赖库的支持;在Wayland系统中安装 xserver-xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例实现了将X11系统移植到Wayland系统中,实现了在采用 Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
在一个可选实施例中提供了一种电子设备,如图4所示,图4所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC (Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001 也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP 和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或 EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器 4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、 PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容,与现有技术相比,本申请实施例通过在Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装 xserver-xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例实现了将X11系统移植到Wayland系统中,实现了在采用 Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例通过在Wayland系统中添加对X11系统的依赖库的支持;在Wayland系统中安装xserver-xwayland程序;在Wayland系统中添加对X11窗口管理器的支持。本申请实施例实现了将X11系统移植到 Wayland系统中,实现了在采用Wayland作为显示服务器协议的操作系统上显示采用X11作为显示服务器协议生成的应用程序。
本申请实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序用于执行如前述方法实施例所示的内容。与现有技术相比,本申请实施例通过在Wayland系统中添加对X11系统的依赖库的支持;在 Wayland系统中安装xserver-xwayland程序;在Wayland系统中添加对X11 窗口管理器的支持。本申请实施例将X11系统移植到Wayland系统中,实现了在采用Wayland作为显示服务器协议的操作系统上显示采用X11 作为显示服务器协议生成的应用程序。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种X11系统的移植方法,其特征在于,包括:
在Wayland系统中添加对X11系统的依赖库的支持;
在所述Wayland系统中安装xserver-xwayland程序;
在所述Wayland系统中添加对X11窗口管理器的支持。
2.根据权利要求1所述的方法,其特征在于,所述X11系统的依赖库包括第三方依赖库、运行依赖库以及程序依赖库;
所述在Wayland系统中添加对X11系统的依赖库的支持,包括:
在所述Wayland系统中添加对X11系统的第三方依赖库的支持;
在所述Wayland系统中添加对所述X11系统的运行依赖库;
在所述Wayland系统中添加所述X11系统的程序依赖库。
3.根据权利要求1所述的方法,其特征在于,所述在Wayland系统中安装xserver-xwayland程序之前还包括:
更新所述Wayland系统中的原始依赖库,使得所述原始依赖库和所述X11系统的依赖库保持兼容,所述原始依赖库包括libdrm库、libfontenc库、libxfont2库以及Wayland-protocol库。
4.根据权利要求2所述的方法,其特征在于,所述第三方依赖库包括xcb窗口的依赖库、xkb窗口的依赖库、input输入的依赖库以及epoxy输出的依赖库;
所述在Wayland系统中添加对X11系统的第三方依赖库的支持,还包括:
将所述X11系统的enable-malloc0returnsnull生成配置项设置为预设值。
5.根据权利2所述的方法,其特征在于,所述在Wayland系统中添加运行所述X11系统的程序的运行依赖库,包括:
在所述Wayland系统的运行依赖库对应的文件中添加对xcb窗口和egl接口的定义。
6.根据权利要求2所述的方法,其特征在于,所述运行时依赖库包括libbsd库、libmd库、libtirpc库以及xkbcomp库;所述程序依赖库包括qtX11extras库、Kwindowsystem库以及qgsettings库。
7.一种X11系统的移植装置,其特征在于,包括:
依赖库添加模块,在Wayland系统中添加对所述X11系统的依赖库的支持;
程序安装模块,用于在所述Wayland系统中安装xserver-xwayland程序;
X11窗口管理器添加模块,用于在所述Wayland系统中添加对X11窗口管理器的支持。
8.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189449.3A CN114090010A (zh) | 2021-10-12 | 2021-10-12 | X11系统的移植方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189449.3A CN114090010A (zh) | 2021-10-12 | 2021-10-12 | X11系统的移植方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090010A true CN114090010A (zh) | 2022-02-25 |
Family
ID=80296720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111189449.3A Pending CN114090010A (zh) | 2021-10-12 | 2021-10-12 | X11系统的移植方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090010A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309315A (zh) * | 2022-10-11 | 2022-11-08 | 麒麟软件有限公司 | Wayland环境下X应用的截图方法、系统及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102017215496A1 (de) * | 2016-09-02 | 2018-03-08 | Continental Automotive Gmbh | Fahrzeugmultimediasystem und Verfahren zur datentechnischen Verbindung eines Fahrzeugmultimediasystems mit mindestens einem mobilen Endgerät |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
-
2021
- 2021-10-12 CN CN202111189449.3A patent/CN114090010A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102017215496A1 (de) * | 2016-09-02 | 2018-03-08 | Continental Automotive Gmbh | Fahrzeugmultimediasystem und Verfahren zur datentechnischen Verbindung eines Fahrzeugmultimediasystems mit mindestens einem mobilen Endgerät |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
TIAGOVIGNATTI: ""X on Wayland"", 《HTTPS://VIGNATTI.WORDPRESS.COM/2012/06/13/X-ON-WAYLAND/》 * |
食铁兽: ""Wayland入门4:XServer"", 《HTTPS://FEATER.TOP/WAYLAND/INTRODUCTION-OF-WAYLAND-XSERVER》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309315A (zh) * | 2022-10-11 | 2022-11-08 | 麒麟软件有限公司 | Wayland环境下X应用的截图方法、系统及介质 |
CN115309315B (zh) * | 2022-10-11 | 2023-01-20 | 麒麟软件有限公司 | Wayland环境下X应用的截图方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10026147B1 (en) | Graphics scenegraph rendering for web applications using native code modules | |
US10026211B2 (en) | Hardware-accelerated graphics for web applications using native code modules | |
US8675000B2 (en) | Command buffers for web-based graphics rendering | |
WO2016155388A1 (zh) | 应用安装、运行方法及装置 | |
US10497083B2 (en) | Systems and methods for using an OpenGL API with a Vulkan graphics driver | |
JP6294886B2 (ja) | アプリケーション用の中間言語コードからネイティブコードを生成すること | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
US20170124306A1 (en) | Method and apparatus for preventing application from being deciphered | |
CN110716720A (zh) | 一种实现应用热部署的方法和装置 | |
CN111506368B (zh) | 对异步调用转同步调用的方法、装置、设备及存储介质 | |
CN110221840B (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN114090010A (zh) | X11系统的移植方法、装置、电子设备及可读存储介质 | |
US11379201B2 (en) | Wrapping method, registration method, device, and rendering apparatus | |
EP3752914B1 (en) | Techniques for native runtime of hypertext markup language graphics content | |
CN112416303A (zh) | 软件开发工具包热修复方法、装置及电子设备 | |
CN115982491A (zh) | 页面更新方法及装置、电子设备和计算机可读存储介质 | |
US8954947B2 (en) | Fast variable validation for state management of a graphics pipeline | |
CN114924837A (zh) | 数据处理方法、电子设备和可读存储介质 | |
US20150040102A1 (en) | System and method for software interoperability | |
KR20110069443A (ko) | 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법 | |
CN117573277A (zh) | 微信小程序页面动态化方法、系统、设备及储存介质 | |
CN113760323A (zh) | 一种开发应用的方法、装置和系统 | |
CN118092886A (zh) | 移动应用中间层组件调用方法、装置、设备及存储介质 | |
CN116932068A (zh) | 基于idea的插件类加载方法、装置及设备 | |
CN115934123A (zh) | 一种客户端逻辑更新方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |