本发明属于操作系统窗口自适应,具体涉及一种linux操作系统桌面环境窗口自适应的方法及系统。
背景技术:
1、
2、随着计算机技术的不断发展,越来越多的计算机用户在使用24寸、27寸、32寸......等大屏幕显示器办公、娱乐、学习。不同于小屏幕的显示器,在一个大屏幕显示器中,窗口多开各个窗口并行工作共同完成任务成为用户使用的常态。
3、用户在窗口多开时,往往固定住一个或多个窗口,使用鼠标拖动另外的窗口到合适位置,再拖动鼠标调整窗口的大小。这个过程往往需要几秒到十几秒的时间,并不能满足用户便捷需求。在桌面窗口的使用过程中,特别是大屏显示器的使用中,桌面窗口的自适应、自排列并行工作将极大的提升用户使用的便捷性、灵活性、舒适性,增加产品的竞争力。
4、目前在windows平台下windows 10之前的版本未发现桌面窗口的自适应,windows10之后的版本拖动窗口的左右边缘会触左右两列窗口自动排列。在苹果的计算机设备mac os操作系统上未发现窗口的自适应。在使用android的平板设备浏览器时,未发现窗口自适应。在使用ipad的平板设备safari浏览器时,当拖动浏览器标签时,可看到窗口被等分自适应均分排列,目前仅有ipad的平板设备safari浏览器对标签均分自适应。
5、linux操作系统提供了众多的桌面环境供用户选择。gnome是目前linux环境下较为流行、基于gtk图形库开发的桌面环境,被广泛应用于red hat enterprise linux和centos各类服务器操作系统中,kde基于qt图形库开发的桌面环境,在国内用户较少,比较小众的还有unity、xfce、lxde、cinnamon、mate等等。
6、linux操作系统的桌面环境(desktop environment,有时称为桌面管理器)是对桌面比拟的实现,它由多个软件组成。一个桌面环境中的软件共享同一个图形用户界面,提供给多个用户统一的用户界面。在一个典型的桌面环境中,这些软件提供给计算机用户视窗、文件夹管理、工具栏、任务栏、壁纸、登录、锁屏、桌面图标、指针,不同桌面环境在设计和功能上的特性会赋予其与众不同的主题外观。桌面窗口通常是指运行于桌面环境上的各式各样办公软件、多媒体软件、系统程序、游戏、实用程序、聊天软件、编程、美工工具等等,在不同的操作系统上,桌面环境在设计和功能上的特性,赋予了它与众不同的外观和感觉,如窗口显示、全屏显示、logo透明度和实时任务栏缩略图,此过程是桌面环境应用程序管理的重要组成部分。银行麒麟桌面操作系统、银河麒麟高级服务器操作系统的桌面环境使用自研的ukui桌面环境。ukui桌面环境是由麒麟团队针对用户需求研制的全新桌面环境,提供易用、用户友好的交互风格。窗口自适应将桌面应用程序窗口,依据某种方法快速将桌面窗口自动排列、自动布局在整个显示区域并行执行任务。但是,ukui桌面环境和其他linux操作系统的桌面环境一样,没有窗口自适应、自排列的功能。因此,如何实现linux操作系统桌面环境窗口自适应,已成为一项亟待解决的关键技术问题。
技术实现思路
1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种linux操作系统桌面环境窗口自适应的方法及系统,本发明旨在针对linux操作系统桌面环境实现快速自适应分割显示桌面窗口使其并行执行,窗口快速切换到工作窗口并行显示,可适用于龙芯桌面环境、兆芯桌面环境、x86桌面、arm桌面环境和服务器环境。
2、为了解决上述技术问题,本发明采用的技术方案为:
3、一种linux桌面环境的窗口自适应排列的方法,包括下述步骤:
4、s1,监测指定的外设事件,若监测到指定的外设事件则跳转步骤s2;
5、s2,获取当前桌面环境中的顶层窗口;
6、s3,将当前桌面环境中的顶层窗口进行快速排列显示并铺满当前显示屏幕区域。
7、可选地,步骤s1中指定的外设事件为鼠标拖动窗口的事件或者键盘的快捷键触发事件,其中鼠标拖动窗口的事件为通过函数cmd_mousedown()监测获取鼠标按键事件、通过函数cmd_mousemove()监测获取鼠标移动事件以及通过窗口位置信息监测识别窗口移动来实现。
8、可选地,步骤s2中获取当前桌面环境中的顶层窗口包括:
9、s2.1,确定系统中的当前桌面环境,包括:利用操作系统提供的库函数获取操作系统中的显示设备集合及其默认的显示设备,将默认的显示设备作为系统中的当前桌面环境;
10、s2.2,获取当前桌面环境中的程序窗口集合;
11、s2.3,针对程序窗口集合中的每一个程序窗口,通过查询该程序窗口对应的结构体标识来确定该程序窗口是否为顶层窗口,从而得到当前桌面环境中所有的顶层窗口。
12、可选地,步骤s2.3中结构体标识中包含窗口顶层标志位windows_top_flags,所述窗口顶层标志位windows_top_flags取值为真或者假,若窗口顶层标志位windows_top_flags取值为真则确定该程序窗口是否为顶层窗口;且在系统管理程序窗口时,若监测到某一程序窗口当前用户正在操作或者使用的窗口且没有被别的程序窗口覆盖则在该程序窗口对应的结构体标识中将其对应的窗口顶层标志位windows_top_flags设置为真;否则将其对应的窗口顶层标志位windows_top_flags设置为假。
13、可选地,步骤s3中将当前桌面环境中的顶层窗口进行排列显示并铺满当前显示屏幕区域包括:
14、s3.1,使用x11库提供的获取当前工作区函数get_current_workspace获取当前工作区,然后使用x11库提供的获取当前显示设备函数get_current_screen、获取显示设备名称函数get_display_name或获取当前监视器函数get_current_monitor获取当前显示设备,然后以点(0,0)作为当前显示屏幕区域的左上角坐标,x的值向右增加,y的值向下增加,当前显示屏幕区域的右下角的y轴坐标为当前显示设备的刷新率的高度减去工具栏面板的高度后的值、x轴坐标为当前显示设备的刷新率的宽度,从而确定当前桌面环境的网格大小;
15、s3.2,确定当前桌面环境中的顶层窗口的数量以及各个顶层窗口的左上角位置、宽度和高度,结合当前桌面环境的网格大小和顶层窗口的数量以及各个顶层窗口的左上角位置、宽度和高度分别确定各个顶层窗口排列显示并铺满当前显示屏幕区域所需的新的左上角位置、宽度和高度,将当前桌面环境中的顶层窗口按照新的大小和位置进行排列显示并铺满当前显示屏幕区域。
16、可选地,步骤s3.2中确定当前桌面环境中的顶层窗口的数量以及各个顶层窗口的大小和位置时包括采用枚举类型edge_or_corner来记录各个顶层窗口的大小和位置,所述枚举类型edge_or_corner中包含的字段包括none、left、top_left、top、top_right、right、bottom_right、bottom以及bottom_left,其中none表示是否被选中,left表示左侧边缘距离,top_left表示左上角距离,top表示顶部边缘距离,top_right表示右上角距离,right表示右侧边缘距离,bottom_right表示右下角距离,bottom表示底部边缘距离,bottom_left表示左下角距离。
17、可选地,步骤s3.2中结合当前桌面环境的网格大小和顶层窗口的数量以及各个顶层窗口的左上角位置、宽度和高度分别确定各个顶层窗口排列显示并铺满当前显示屏幕区域所需的新的左上角位置、宽度和高度包括:
18、s3.2.1,根据顶层窗口的数量确定需要当前桌面环境的网格需要划分的子网格数量,若顶层窗口的数量为偶数,则确定子网格数量为顶层窗口的数量;若顶层窗口的数量为奇数,则确定子网格数量为顶层窗口的数量加1;
19、s3.2.2,将当前桌面环境的网格大小按照子网格数量均分划分子网格;
20、s3.2.3,根据各子网格的左上角位置、宽度和高度确定子网格的中心点位置,根据子网格的中心点位置和顶层窗口的中心点位置之间的距离将各个子网格分配给一个顶层窗口,若存在剩余的子网格则将该子网格与其相邻的同一列的子网格合并使子网格、顶层窗口一一对应;
21、s3.2.4,根据顶层窗口动态调整子网格的大小,包括:针对各列子网格,根据每一列子网格对应的单个顶层窗口的宽度或者多个顶层窗口的宽度平均值作为该列子网格的列宽,并根据各列子网格的列宽比例将当前桌面环境的网格宽度按照比例划分,从而确定各列子网格的宽度以及宽度方向上的位置;针对每一列子网格,若该列子网格只包含一个子网格,则该子网格的高度为当前桌面环境的网格高度;若该列子网格只包含多个子网格,则根据多个子网格对应顶层窗口的高度比例将当前桌面环境的网格高度按照比例划分,从而确定该列子网格中各个子网格的高度以及高度方向上的位置,从而确定各个子网格的左上角位置、宽度和高度;
22、s3.2.5,将各个子网格的左上角位置、宽度和高度作为对应的各个顶层窗口排列显示并铺满当前显示屏幕区域所需的新的左上角位置、宽度和高度。
23、此外,本发明还提供一种linux桌面环境的窗口自适应排列的系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述linux桌面环境的窗口自适应排列的方法。
24、此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序/指令,该计算机程序/指令被编程或配置以通过处理器执行所述linux桌面环境的窗口自适应排列的方法。
25、此外,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被编程或配置以通过处理器执行所述linux桌面环境的窗口自适应排列的方法。
26、和现有技术相比,本发明主要具有下述优点:本发明linux桌面环境的窗口自适应排列的方法监测指定的外设事件,若监测到指定的外设事件则获取当前桌面环境中的顶层窗口,将当前桌面环境中的顶层窗口进行快速排列显示并铺满当前显示屏幕区域,从而能够针对linux操作系统桌面环境实现快速自适应分割显示桌面窗口使其并行执行,窗口快速切换到工作窗口并行显示,可适用于包括龙芯桌面环境、兆芯桌面环境、x86桌面、arm桌面环境和服务器环境等在内的各类linux桌面环境。
1.一种linux桌面环境的窗口自适应排列的方法,其特征在于,包括下述步骤:
2.根据权利要求1所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s1中指定的外设事件为鼠标拖动窗口的事件或者键盘的快捷键触发事件,其中鼠标拖动窗口的事件为通过函数cmd_mousedown()监测获取鼠标按键事件、通过函数cmd_mousemove()监测获取鼠标移动事件以及通过窗口位置信息监测识别窗口移动来实现。
3.根据权利要求2所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s2中获取当前桌面环境中的顶层窗口包括:
4.根据权利要求3所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s2.3中结构体标识中包含窗口顶层标志位windows_top_flags,所述窗口顶层标志位windows_top_flags取值为真或者假,若窗口顶层标志位windows_top_flags取值为真则确定该程序窗口是否为顶层窗口;且在系统管理程序窗口时,若监测到某一程序窗口当前用户正在操作或者使用的窗口且没有被别的程序窗口覆盖则在该程序窗口对应的结构体标识中将其对应的窗口顶层标志位windows_top_flags设置为真;否则将其对应的窗口顶层标志位windows_top_flags设置为假。
5.根据权利要求3所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s3中将当前桌面环境中的顶层窗口进行排列显示并铺满当前显示屏幕区域包括:
6.根据权利要求5所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s3.2中确定当前桌面环境中的顶层窗口的数量以及各个顶层窗口的大小和位置时包括采用枚举类型edge_or_corner来记录各个顶层窗口的大小和位置,所述枚举类型edge_or_corner中包含的字段包括none、left、top_left、top、top_right、right、bottom_right、bottom以及bottom_left,其中none表示是否被选中,left表示左侧边缘距离,top_left表示左上角距离,top表示顶部边缘距离,top_right表示右上角距离,right表示右侧边缘距离,bottom_right表示右下角距离,bottom表示底部边缘距离,bottom_left表示左下角距离。
7.根据权利要求5所述的linux桌面环境的窗口自适应排列的方法,其特征在于,步骤s3.2中结合当前桌面环境的网格大小和顶层窗口的数量以及各个顶层窗口的左上角位置、宽度和高度分别确定各个顶层窗口排列显示并铺满当前显示屏幕区域所需的新的左上角位置、宽度和高度包括:
8.一种linux桌面环境的窗口自适应排列的系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述linux桌面环境的窗口自适应排列的方法。
9.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序/指令,其特征在于,该计算机程序/指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述linux桌面环境的窗口自适应排列的方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述linux桌面环境的窗口自适应排列的方法。