一种云操作系统的窗口视图显示方法与流程

文档序号:30057551发布日期:2022-05-17 19:25阅读:180来源:国知局
一种云操作系统的窗口视图显示方法与流程

1.本发明涉及视图显示技术领域,具体而言,涉及一种云操作系统的窗口视图显示方法。


背景技术:

2.在linux操作系统中,桌面环境通常是一个模块化的组件综合体,它运行在操作系统之上,为使用者提供图形化的用户界面。桌面环境包括壁纸、图标、工具栏、文件、文件管理器、默认文本编辑器、图像查看器、用于登录和注销本地系统的界面及各种桌面小组件。桌面环境被开发出来取代命令行界面,决定了用户与操作系统的交互方式。因而,搭建一个出色的桌面环境对操作系统十分重要。主流的桌面环境有kde、gnome、xfce、lxde等。
3.现有技术存在的问题有以下三点:1.现有市场背景下,视图系统依赖传统函数库进行执行操作,如从代码层对硬件层进行操作导致桌面环境运行速度相对较慢。
4.2.传统的桌面环境庞大臃肿,资源占用相对较多。以linux系统广泛使用的kde桌面为例,搭建一个完整的kde桌面系统需要643个源码软件包,启动运行需占用ram资源615mb、cpu资源1ghz。然而,kde桌面环境中所包含的很多组件在我们的日常生活中使用频率并不大。这些非必要的桌面组件增加了冗余,加大了系统体积,让系统运行速度变慢。
5.3.现有操作系统的桌面环境资源占用多因而对硬件平台的依赖性大。例如,安装重量级的图形界面kde可以获得较好的图形效果,但它在性能方面的损失使之运行在树莓派上速度较慢。


技术实现要素:

6.为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种云操作系统的窗口视图显示方法,可减少冗余的软件库、缩小系统的体积,提高了桌面和系统的运行速度。
7.本发明的实施例是这样实现的:第一方面,本发明实施例提供一种云操作系统的窗口视图显示方法,包括以下步骤:搭建linux内核和系统运行必备程序及其依赖,构建无桌面系统环境;在无桌面系统环境上搭建用于支持串流应用的x server环境和用于支持html5视图的qtwebengine环境;使用javascript语言编写模拟传统本地桌面视图效果的html5视图;使用c++语言编写与html5视图交互的程序;基于搭建的x server环境,在云操作系统的客户端接受流并解码,然后由x server支持的窗口视图展示,并与html5主视图进行交互操作,完成云操作系统的窗口视图搭建;
在云操作系统启动时,自动启动x server环境和qtwebengine环境,并由qtwebengine启动html5窗口,展示云操作系统的窗口视图主界面,完成窗口视图展示。
8.为解决现有技术中运行速度慢的问题,本发明采用javascript作为视图系统开发语言,从而让代码层被浏览器内核识别并直接调度硬件层进行行为操作的方法。同时为了解决现有操作系统桌面环境臃肿庞大的问题,本发明利用qtwebengine与x sever搭建一个轻量级的模拟桌面环境,然后为解决桌面环境对硬件平台依赖大的问题,本发明利用html5技术搭建桌面系统,让设备开机时只需启动一个h5云端视图便可展示完整的桌面环境,通过发挥html5应用移植性强的优点实现降低对硬件平台的依赖性的目的。
9.本方法减少冗余的软件库、缩小系统的体积,打造出一个轻量化的操作系统桌面,让桌面运行更快、系统运行更快。同时降低了操作系统对硬件的依赖性:在html5页面的桌面系统下,应用程序运行在云端服务器,程序运行产生的数据和文件可实时保存在本地,大大降低了对本机硬件内存的要求,实现低配置电脑运行大型游戏和软件的需求。
10.基于第一方面,在本发明的一些实施例中,该云操作系统的窗口视图显示方法还包括以下步骤:利用javascript、css和html5完成对html5视图系统的开发。
11.基于第一方面,在本发明的一些实施例中,该云操作系统的窗口视图显示方法还包括以下步骤: linux内核启动x server;x server启动完成后,linux内核启动qt webengine;采用qt webengine启动html5视图与anani服务程序;通过html5视图模拟出云桌面,完成模拟桌面环境的搭建。
12.基于第一方面,在本发明的一些实施例中,该云操作系统的窗口视图显示方法还包括以下步骤:当用户点击云桌面上的应用时,调取并将对应应用的显示窗口在云桌面上进行展示。
13.基于第一方面,在本发明的一些实施例中,上述云桌面包含不同的html5应用程序与串流应用程序。
14.基于第一方面,在本发明的一些实施例中,上述当用户点击云桌面上的应用时,调取并将对应应用的显示窗口在云桌面上进行展示的方法包括以下步骤:当用户点击云桌面上的html5应用程序时,基于html5应用程序的javascript代码层通过调用function的方式通知anani服务程序的c++代码层提取并展示目标应用的显示窗口在云桌面上。
15.基于第一方面,在本发明的一些实施例中,上述当用户点击云桌面上的应用时,调取并将对应应用的显示窗口在云桌面上进行展示的方法包括以下步骤:当用户点击云桌面上的串流应用程序时,基于x server启动串流应用的显示窗口并在云桌面上进行展示。
16.基于第一方面,在本发明的一些实施例中,上述将对应应用的显示窗口在云桌面上进行展示的方法包括以下步骤:将对应应用的显示窗口进行初始化处理;
初始化处理完成后,设置显示窗口的窗口层级;窗口层级设置完成后,对显示窗口进行移动和缩放,完成展示。
17.基于第一方面,在本发明的一些实施例中,该云操作系统的窗口视图显示方法还包括以下步骤:当用户在云桌面上点击关闭程序时,基于html5云桌面的javascript代码层通过调用function的方式通知anani服务程序的c++代码层关闭当前窗口, 并取消对当前区域的扣除操作。
18.第二方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
19.本发明实施例至少具有如下优点或有益效果:本发明实施例提供一种云操作系统的窗口视图显示方法,本方法减少了冗余的软件库、缩小系统的体积,打造出一个轻量化的操作系统桌面,让桌面运行更快、系统运行更快。同时降低了操作系统对硬件的依赖性:在html5页面的桌面系统下,应用程序运行在云端服务器,程序运行产生的数据和文件可实时保存在本地,大大降低了对本机硬件内存的要求,实现低配置电脑运行大型游戏和软件的需求。
附图说明
20.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
21.图1为本发明实施例一种云操作系统的窗口视图显示方法的流程图;图2为本发明实施例一种云操作系统的窗口视图显示方法中模拟桌面环境的工作流程示意图;图3为本发明实施例的多边形示意图;图4为本发明实施例的判断算法代码算法示意图。
具体实施方式
22.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
23.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
25.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实
体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
实施例
26.如图1-图2所示,第一方面,本发明实施例提供一种云操作系统的窗口视图显示方法,包括以下步骤:s1、搭建linux内核和系统运行必备程序及其依赖,构建无桌面系统环境;s2、在无桌面系统环境上搭建用于支持串流应用的x server环境和用于支持html5视图的qtwebengine环境;s3、使用javascript语言编写模拟传统本地桌面视图效果的html5视图;在本发明的一些实施例中,还可以利用javascript、css和html5相结合的方式完成对html5视图系统的开发。javascript编程语言占比95%。javascript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。css层叠样式表(英文全称:cascading style sheets)是一种用来表现html(标准通用标记语言的一个应用)或xml(标准通用标记语言的一个子集)等文件样式的计算机语言。html5是构建web内容的一种语言描述方式。使用javascript语言(以及css等)编写一套模拟传统本地桌面视图效果的html5视图,包括桌面、图标、任务栏、系统设置窗口、文件管理窗口、软件运行窗口等等。
27.s4、使用c++语言编写与html5视图交互的程序;使用c++语言编写一套与html5视图交互的程序ananios,通过qt(c++)与javascript的互相调用(qtwebengine支持),实现设置系统环境(声音、亮度等)、控制系统操作(网络连接、开关机、休眠等)、展示系统信息(cpu、内存、硬盘等)、文件管理(新建、复制、移动、删除等)、应用打开关闭等。
28.在本发明的一些实施例中,使用c++语言编写了一套可与html5视图交互的程序anani os,然后通过qt与javascript的互相调用,实现了系统环境设置、系统操作控制、系统信息展示、文件管理、窗口管理等功能。
29.s5、基于搭建的x server环境,在云操作系统的客户端接受流并解码,然后由x server支持的窗口视图展示,并与html5主视图进行交互操作,完成云操作系统的窗口视图搭建;串流应用,是为了保证云操作系统轻量化的前提下,依旧能支持大型软件的使用。将大型软件安装于云操作系统的统一服务器端,通过视图流传输,在云操作系统客户端(用户端)接受流并解码,然后由x server支持的窗口视图展示,并与html5主视图进行样式的层级、重叠、透明、移动等交互操作。至此,云操作系统的窗口视图搭建完成。
30.s6、在云操作系统启动时,自动启动x server环境和qtwebengine环境,并由qtwebengine启动html5窗口,展示云操作系统的窗口视图主界面,完成窗口视图展示。
31.在本发明的一些实施例中,linux内核启动x server;x server启动完成后,linux内核启动qt webengine;采用qt webengine启动html5视图与anani服务程序;通过html5视
图模拟出云桌面,完成模拟桌面环境的搭建。上述云桌面包含不同的html5应用程序与串流应用程序。
32.在本发明的一些实施例中,当用户点击云桌面上的应用时,调取并将对应应用的显示窗口在云桌面上进行展示。
33.进一步地,当用户点击云桌面上的html5应用程序时,基于html5应用程序的javascript代码层通过调用function的方式通知anani服务程序的c++代码层提取并展示目标应用的显示窗口在云桌面上。当用户点击云桌面上的串流应用程序时,基于x server启动串流应用的显示窗口并在云桌面上进行展示。
34.进一步地,当用户在云桌面上点击关闭程序时,基于html5云桌面的javascript代码层通过调用function的方式通知anani服务程序的c++代码层关闭当前窗口, 并取消对当前区域的扣除操作。anani程序是一种服务程序,为html5视图系统提供应用运行所需的程序。
35.为解决现有技术中运行速度慢的问题,本发明采用javascript作为视图系统开发语言,从而让代码层被浏览器内核识别并直接调度硬件层进行行为操作的方法。同时为了解决现有操作系统桌面环境臃肿庞大的问题,本发明利用qtwebengine与x sever搭建一个轻量级的模拟桌面环境,然后为解决桌面环境对硬件平台依赖大的问题,本发明利用html5技术搭建桌面系统,让设备开机时只需启动一个h5云端视图便可展示完整的桌面环境,通过发挥html5应用移植性强的优点实现降低对硬件平台的依赖性的目的。
36.本方法减少冗余的软件库、缩小系统的体积,打造出一个轻量化的操作系统桌面,让桌面运行更快、系统运行更快。同时降低了操作系统对硬件的依赖性:在html5页面的桌面系统下,应用程序运行在云端服务器,程序运行产生的数据和文件可实时保存在本地,大大降低了对本机硬件内存的要求,实现低配置电脑运行大型游戏和软件的需求。让视图系统所包含的应用app都能实现快速定制开发和应用上架。保证操作系统的安全性,使之无法进行反编译。实现应用和后台机密数据分离,保证其安全性。
37.基于第一方面,在本发明的一些实施例中,上述将对应应用的显示窗口在云桌面上进行展示的方法包括以下步骤:将对应应用的显示窗口进行初始化处理;初始化处理完成后,设置显示窗口的窗口层级;窗口层级设置完成后,对显示窗口进行移动和缩放,完成展示。
38.将用户点开的目标应用的显示窗口展示在云桌面之上,其中的展示过程主要包括以下步骤:窗口的应用管理涉及到初始化窗口、设置窗口层级、移动窗口与缩放窗口等操作,其逻辑如下:step1:初始化窗口;step11:设置坐标点,初始化第一个窗口所显示的x轴坐标(f_x)和y轴坐标(f_y),并按照当前屏幕分辨率的百分比将x轴坐标进行设置为30%,y轴坐标为20%,即f_x=30%,f_y=20%;step12:设置每个窗口的偏移量,并将其命名为client,此时,每个窗口的偏移量为[x,y]=》[f_x+(client*n),f_y+(client*n)];
step13:设置每个窗口的默认宽(w)高(h)值。
[0039]
step2:设置窗口层级;step21:根据窗口打开顺序,设置当前窗口层级(z_index)从数字1开始逐步递增;step22:初始化窗口数量为window_count=0,每次打开新窗口时,进行++window_count更新窗口数量记录值,每次关闭窗口时,进行
‑‑
window_count更新窗口数量记录值;step23:当每个窗口被点击或被拖动或被缩放时,获取比当前窗口层级高的窗口的层级,并将其-1,即z_index
‑‑
(此处z_index泛指每个窗口的层级),然后修改当前窗口层级为最高,及z_index=window_count。
[0040]
step3:移动窗口;step31:在每次打开新窗口时,通过javascript通过调用function方式,通知c++需显示当前窗口,并携带窗口属性为宽=》w,高=》h,左侧坐标距离=》f_x,顶部坐标距离=》f_y;step32:对当前窗口顶部注册鼠标按下事件(onmousedown),在按下后(并未松开),获取当前鼠标按下的点距离屏幕边缘的坐标偏移量(mouse_x,mouse_y);step33:计算当前鼠标按下的坐标点距离当前窗口左侧(s_w)和顶部(s_h)的距离,当前鼠标按下点的距离窗口的距离为[s_w,s_h]=》[mouse_x-(f_x+(client*n)),mouse_y-(f_y+(client*n))];step34:对当前屏幕注册监听鼠标移动的事件(onmousemove),并获取到鼠标每次移动时当前鼠标相对于屏幕的x轴和y轴的坐标偏移量[move_x,move_y];step35:在鼠标移动时,根据当前鼠标的坐标偏移量,计算窗口新的坐标[x,y]=》[move_x-s_w,move_y-s_h],即[x,y]=》[move_x-(mouse_x-(f_x+(client*n))),move_y-(mouse_y-(f_y+(client*n)))],并修改为当前窗口的新坐标;step36:在窗口移动结束后,释放对于当前屏幕所监听的移动事件。
[0041]
step4:缩放窗口step41:对每个窗口动态添加左上、上、右上、右、右下、下、左下、左八个dom树节点,后面定义为(a、b、c、d、e、f、g、h)节点;step42:对每个节点分别注册鼠标的按下(onmousedown)和抬起(onmouseup)事件,在每次按下时,对屏幕注册移动(onmousemove)事件,在抬起时释放该事件;step43:定义当前窗口的宽(w)高(h),偏移量(x,y)和最小宽(min_w)最小高(min_h);step44:其中,a节点:在鼠标按下时,获取该点的坐标偏移量为(a_x,a_y),在鼠标移动时,获取当前鼠标新的坐标偏移量为(new_a_x,new_a_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_a_x-a_x,new_a_y-a_y),更新当前窗口的宽高[w,h]=》[w-(new_a_x-a_x),h-(new_a_y-a_y)],偏移量[x,y]=》[new_a_x,new_a_y],若x《=min_w成立,则x=min_x,若y《=min_y成立,则y=min_y;b节点:(在b点由于只需操控y轴的变化,故可不考虑x轴的情况)在鼠标按下时,获取该点的y轴坐标偏移量为(b_y),在鼠标移动时,获取当前鼠标新的y轴坐标偏移量为(new_b_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_b_y-b_y),更新当前窗口的高h=》h-(new_b_y-b_y),y轴偏移量y=》new_b_y,若y《=min_y成立,则y=min_y;
c节点:在鼠标按下时,获取该点的坐标偏移量为(c_x,c_y),在鼠标移动时,获取当前鼠标新的坐标偏移量为(new_c_x,new_c_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_c_x-c_x,new_c_y-c_y),更新当前窗口的宽高[w,h]=》[w+new_c_x-c_x,h-(new_c_y-c_y)],偏移量[x,y]=》[x,new_a_y],若x《=min_w成立,则x=min_x,若y《=min_y成立,则y=min_y;d节点:(在d点由于只需操控x轴的变化,故可不考虑y轴的情况)在鼠标按下时,获取该点的x轴坐标偏移量为(d_x),在鼠标移动时,获取当前鼠标新的x轴坐标偏移量为(nnew_d_x),获取鼠标移动后的偏移量最初的偏移量的差值(new_d_y-d_y),更新当前窗口的宽w=》w+new_d_y-d_y,x轴偏移量x=》new_d_x,,若x《=min_w成立,则x=min_x;e节点:在鼠标按下时,获取该点的坐标偏移量为(e_x,e_y),在鼠标移动时,获取当前鼠标新的坐标偏移量为(new_e_x,new_e_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_e_x-e_x,new_e_y-e_y),更新当前窗口的宽高[w,h]=》[w+new_e_x-e_x,h+new_e_y-e_y],偏移量[x,y]=》[x,y],若x《=min_w成立,则x=min_x,若y《=min_y成立,则y=min_y;f节点:(在f点由于只需操控y轴的变化,故可不考虑x轴的情况)在鼠标按下时,获取该点的y轴坐标偏移量为(f_y),在鼠标移动时,获取当前鼠标新的y轴坐标偏移量为(new_f_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_f_y-f_y),更新当前窗口的高h=》h+new_f_y-f_y,y轴偏移量y=》y,若y《=min_y成立,则y=min_y;g节点:在鼠标按下时,获取该点的坐标偏移量为(g_x,g_y),在鼠标移动时,获取当前鼠标新的坐标偏移量为(new_g_x,new_g_y),获取鼠标移动后的偏移量最初的偏移量的差值(new_g_x-g_x,new_g_y-g_y),更新当前窗口的宽高[w,h]=》[w-(new_g_x-g_x),h+new_g_y-g_y],偏移量[x,y]=》[new_g_x,y],若x《=min_w成立,则x=min_x,若y《=min_y成立,则y=min_y;h节点:(在h点由于只需操控x轴的变化,故可不考虑y轴的情况)在鼠标按下时,获取该点的x轴坐标偏移量为(h_x),在鼠标移动时,获取当前鼠标新的y轴坐标偏移量为(new_h_x),获取鼠标移动后的偏移量最初的偏移量的差值(new_h_x-h_x),更新当前窗口的宽w=》w-(new_h_x-h_x),x轴偏移量x=》new_h_x,若x《=min_x成立,则x=min_x。
[0042]
step45:在每次缩放窗口时,通过javascript通过调用function方式,通知c++需对当前窗口进行缩放,并携带窗口属性为宽=》w,高=》h,左侧坐标距离=》x,顶部坐标距离=》y。
[0043]
在此过程中,考虑到用户端会发生在模拟云桌面打开多窗口的操作,还需要解决一个计算机图形学中经常遇到的问题,即,如何判断点是否在多边形内。例如,当用户打开了两个窗口任务时,需要编写函数来判断用户触发的的a、b、c、d按钮是否位于多边形内。
[0044]
如图3所示,需要考虑一个由n个顶点(xa,ya)组成的多边形,其中,按顺时针方向排列,a的范围是从0到n-1。假设最后一个顶点(xn,yn)与第一个顶点(x0,y0)相同,那么我们可以认定多边形是封闭的。要确定点(xb,yb)是否位于多边形内,我们只用判断从点(xb,yb)右侧发出的水平射线与多边形线段相交的次数是奇数还是偶数。加入这条射线与构成多边形的线段相交的次数是偶数,则该点在多边形之外。而如果交叉点的数量是奇数,那么点位于多边形内。算法实现如图4所示。
[0045]
在本技术所提供的实施例中,应该理解到,所揭露的方法和方法,也可以通过其它的方式实现。以上所描述的方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的方法、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0046]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0047]
第二方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0048]
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0049]
对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其它的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1