CN113535287B - 一种Linux操作系统桌面环境窗口自动排列的方法 - Google Patents

一种Linux操作系统桌面环境窗口自动排列的方法 Download PDF

Info

Publication number
CN113535287B
CN113535287B CN202010305809.0A CN202010305809A CN113535287B CN 113535287 B CN113535287 B CN 113535287B CN 202010305809 A CN202010305809 A CN 202010305809A CN 113535287 B CN113535287 B CN 113535287B
Authority
CN
China
Prior art keywords
window
windows
event
display
keyboard
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.)
Active
Application number
CN202010305809.0A
Other languages
English (en)
Other versions
CN113535287A (zh
Inventor
吕非
左宏盛
王博
李蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Standard Software Co Ltd
Original Assignee
China Standard Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Standard Software Co Ltd filed Critical China Standard Software Co Ltd
Priority to CN202010305809.0A priority Critical patent/CN113535287B/zh
Publication of CN113535287A publication Critical patent/CN113535287A/zh
Application granted granted Critical
Publication of CN113535287B publication Critical patent/CN113535287B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Abstract

本发明涉及一种Linux操作系统桌面环境窗口自动排列的方法,步骤为S1、建立键鼠显示映射表、建立窗口堆栈以区分活动窗口和非活动窗口、对活动窗口进行显示。本方法可以层叠显示窗口、堆叠显示窗口、并排显示窗口,可在桌面错乱无序情况下,优雅平滑的显示桌面窗口,适用于龙芯桌面环境、兆芯桌面环境、ARM桌面环境,系统运行良好,具有较高的推广应用价值。

Description

一种Linux操作系统桌面环境窗口自动排列的方法
技术领域
本专利申请属于操作系统窗口排列技术领域,更具体地说,是涉及一种Linux操作系统桌面环境窗口自动排列的方法。
背景技术
目前在Windows平台下Microsoft windows 7、Microsoft windows 8、Microsoftwindows 8.1、Microsoft windows 10家庭版、专业版和企业版提供了桌面窗口的自动层叠显示窗口、堆叠显示窗口、并排显示窗口的功能,Microsoft Windows系列是一个由微软开发的操作系统,设计目标是统一包括个人电脑、平板电脑、智能手机、嵌入式系统、Xbox One等等,目前是世界范围内最为流行的操作系统。但是并不适用于Linux操作系统。
开源的Linux操作系统,提供了众多的桌面环境供用户选择。Gnome Shell目前Linux环境下较为流行、基于GTK图形库开发的桌面环境,被广泛应用于Red HatEnterprise Linux和Centos各类服务器操作系统中,KDE基于QT图形库开发的桌面环境,在国内用户较少,比较小众的还有Unity、Xfce、LXDE、Cinnamon等等。
MATE桌面环境是GNOME 2的延续。MATE为Linux或其他类Unix操作系统提供直观且吸引人的桌面环境,MATE在保持传统桌面体验的同时引入对新技术的支持,中标麒麟桌面操作系统基于MATE深度开发,针对X86及龙芯、申威、众志等国产CPU平台,完成了硬件适配、软件移植、功能定制和性能优化,运行在台式机、笔记本、一体机、车载机等不同产品形态之上。近些年,Linux系统迅速发展,计算机技术的不断发展,越来越多的个人和企业开始大量使用Linux系统,各种应用程序的种类不断增加,程序功能不断发生变化,变的愈加多样和复杂,窗口越开越多,当窗口数量大于四个以上时候,还可以通过拖动解决,当窗口数量大于十个以上时候,屏幕通常会显示错乱无序,用户体验不好。几乎所有的Linux桌面环境几乎没有窗口自动排列的功能。
发明内容
本发明需要解决的技术问题是提供一种Linux操作系统桌面环境窗口自动排列的方法,该方法可以层叠显示窗口、堆叠显示窗口、并排显示窗口,可在桌面错乱无序情况下,优雅平滑的显示桌面窗口。适用于龙芯桌面环境、兆芯桌面环境、ARM桌面环境,
为了解决上述问题,本发明所采用的技术方案是:
一种Linux操作系统桌面环境窗口自动排列的方法,包括利用Xlib库提供的扩展函数获取当前桌面环境下所有启动窗口的窗口标题、窗口焦点、窗口是否最大化、窗口是否可以移动的信息,从而确定出活动窗口,然后模拟键盘输入事件和鼠标输入事件执行多种窗口管理任务,获取所有启动窗口的ID;接着将活动窗口的ID、非活动窗口的ID放到各自的窗口堆栈中,同时用户可以动态的调整活动窗口和非活动窗口的状态,并按照要求从活动窗口堆栈中进行桌面活动窗口的自动排列和显示。
本发明技术方案的进一步改进在于:具体包括如下步骤:
S1、建立键鼠显示映射表:该表常驻内存,内容包括显示设备(屏幕)、显示名、键盘输入事件(keydown、keyup、keypress)、键盘键值映射、键盘键值数据长度、鼠标输入事件(mousedown、mouseup)、可见窗口、非活动窗口(最小化窗口)的信息,当桌面环境启动后,从键鼠显示映射表中通过函数获取启动窗口的信息,也就是系统应用信息;
S2、建立窗口堆栈:启动窗口中,当多个窗口处于运行状态时,通过Xlib库的X11函数和XTEST函数从键鼠显示映射表来搜索窗口状态,以判断窗口是否是活动窗口,并将最小化窗口视为不活动窗口;然后建立两个堆栈,分别命名为活动窗口堆栈和非活动窗口堆栈,将活动窗口放到活动窗口堆栈中,非活动窗口放到非活动窗口堆栈中;
S3、对活动窗口进行显示:把活动窗口堆栈的窗口按照要求进行自动排列显示。
本发明技术方案的进一步改进在于:S1中,建立键鼠显示映射表包括如下步骤:
S11、调用底层Xlib库发送模拟的鼠标输入事件和键盘输入事件,比如修改窗口大小,移动窗口到固定的坐标,执行多种窗口管理任务,并使用窗口标志位来标记窗口位置发生的变化,窗口标志位可以标记窗口变化事件,以及关联窗口点击事件、窗口大小变化、窗口移动事件,用于检测窗口是活动窗口还是非活动窗口,并对标志出的活动窗口的x坐标值和y坐标值进行表示。具体代码表示为:
#define SIZE_USEHINTWINS(1L<<0),上述代码表示:设置一个窗口标志位,标记窗口变化事件,关联窗口点击事件,窗口大小变化、窗口移动事件,用于检测窗口是活动窗口还是非活动窗口;
#define SIZE_USEHINTWINS_X(1L<<1),用于表示活动窗口的x坐标值;
#define SIZE_USEHINTWINS_Y(1L<<2),用于表示活动窗口的y坐标值。
S12、定位当前窗口,由于当前窗口是一个特定的标识,需要标记鼠标、键盘、坐标值,因此首先定位当前窗口,然后调用XTEST发生事件来模拟鼠标键盘事件的发生。
S13、将键盘的键值映射到具体要发送信号的信息,如keycode、modifiers、键值(如字母a),键对应的ascii值,然后将这些信息放到一个结构体中,形成键值映射事件;
S14、使用Xlib库的函数获取显示设备,形成显示事件;然后将键值映射事件和显示事件放到另外一个结构体中,建构键盘按键事件、鼠标按钮事件、窗口显示事件;
S15、将键盘按键事件、鼠标按钮事件、窗口显示事件中的显示设备(屏幕)、显示名、键盘输入事件、键盘键值映射、键盘键值数据长度、鼠标输入事件、可见窗口、非活动窗口(最小化窗口)的结构体信息放到键鼠显示映射表中,该键鼠显示映射表常驻内存,当桌面环境启动后,利用函数从该表中获取启动窗口信息,也就是系统应用的信息,以执行下一步操作。
本发明技术方案的进一步改进在于:S11中的窗口标志位为动态设置的窗口标志位,该窗口标志位通过调用Xlib库的函数,将窗口动态的存放到活动窗口堆栈中和非活动窗口堆栈中。
本发明技术方案的进一步改进在于:S3中,显示窗口的方式为层叠、堆叠或并排显示窗口,其中:
层叠窗口,把窗口一层一层叠加起来,只有最上面的窗口能看到内容,下面的窗口只能看到一个角,窗口看似杂乱重叠在一起,可是每个窗口并不会被完全遮挡,不论用户点击哪个窗口,其他窗口总有一个角露出来;
堆叠显示窗口,窗口被分成两列,纵向排列,按窗口大小平分,窗口的近乎一半的区域被窗口的标题和顶部的功能区域占据了,所以窗口能显示的内容很少;
并排显示窗口,打开的窗口都变成了长方形,获取当前窗口的分辨率,按照获取的分辨率的长度和活动窗口的个数,等分当前窗口,高度是当前分辨率的高度。
由于采用了上述技术方案,本发明取得的有益效果是:该方法可以层叠显示窗口、堆叠显示窗口、并排显示窗口,可在桌面错乱无序情况下,优雅平滑的显示桌面窗口。适用于龙芯桌面环境、兆芯桌面环境、ARM桌面环境。本系统使用稳定且易用性较好,已默认集成在中标麒麟桌面操作系统龙芯版、中标麒麟桌面操作系统兆芯版、中标麒麟桌面操作系统ARM版,中标麒麟云桌面环境,系统运行良好。
附图说明
图1为本发明的三种设备坐标的结构示意图;
图2为本发明的建立窗口堆栈的流程示意图;
图3为本发明的窗口动态的存放到活动窗口堆栈中和非活动窗口堆栈中的窗口标志位示意图;
图4为本发明的活动窗口层叠排列效果图;
图5为本发明的活动窗口堆叠排列效果图;
图6为本发明的活动窗口并排排列效果图。
具体实施方式
下面结合实施例对本发明做进一步详细说明。
本发明公开了一种Linux操作系统桌面环境窗口自动排列的方法,参见图1-图6,包括利用Xlib库提供的扩展函数获取当前桌面环境下所有启动窗口的窗口标题、窗口焦点、窗口是否最大化、窗口是否可以移动的信息,从而确定出活动窗口,然后模拟键盘输入事件和鼠标输入事件执行多种窗口管理任务,获取所有启动窗口的ID;接着将活动窗口的ID、非活动窗口的ID放到各自的窗口堆栈中,同时用户可以动态的调整活动窗口和非活动窗口的状态,并按照要求从活动窗口堆栈中进行桌面活动窗口的自动排列和显示。
具体包括如下步骤:
S1、建立键鼠显示映射表:该表常驻内存,内容包括显示设备(屏幕)、显示名、键盘输入事件(keydown、keyup、keypress)、键盘键值映射、键盘键值数据长度、鼠标输入事件(mousedown,mouseup)、可见窗口、非活动窗口(最小化窗口)的信息,当桌面环境启动后,从键鼠显示映射表中通过函数获取启动窗口的信息,也就是系统应用信息。
S1中,建立键鼠显示映射表包括如下步骤:
S11、调用底层Xlib库发送模拟的鼠标输入事件和键盘输入事件,执行多种窗口管理任务,比如修改窗口大小,移动窗口到固定的坐标,并使用窗口标志位来标记窗口位置发生的变化,其中的窗口标志位可以标记窗口变化事件,以及关联窗口点击事件、窗口大小变化、窗口移动事件,用于检测窗口是活动窗口还是非活动窗口,并对标志出的活动窗口的x坐标值、y坐标值进行表示。
具体代码如下:
#define SIZE_USEHINTWINS(1L<<0),上述代码表示:设置一个窗口标志位,标记窗口变化事件,关联窗口点击事件,窗口大小变化、窗口移动事件,用于检测窗口是活动窗口还是非活动窗口;
#define SIZE_USEHINTWINS_X(1L<<1),用于表示活动窗口的x坐标值;
#define SIZE_USEHINTWINS_Y(1L<<2),用于表示活动窗口的y坐标值;
S12、定位当前窗口,由于当前窗口是一个特定的标识,需要标记鼠标、键盘、坐标值,因此首先定位当前窗口,然后调用XTEST发生事件来模拟鼠标键盘事件的发生;
S13、将键盘的键值映射到具体要发送信号的信息,如keycode、modifiers、键值(如字母’a’),键对应的ascii值,然后将这些信息放到一个结构体中,形成键值映射事件;
S14、使用Xlib库的函数获取显示设备,形成显示事件;然后将键值映射事件和显示事件放到另外一个结构体中,建构键盘按键事件、鼠标按钮事件、窗口显示事件;
S15、将键盘按键事件、鼠标按钮事件、窗口显示事件中的显示设备(屏幕)、显示名、键盘输入事件、键盘键值映射、键盘键值数据长度、鼠标输入事件、可见窗口、非活动窗口(最小化窗口)的结构体信息放到键鼠显示映射表中,该键鼠显示映射表常驻内存,当桌面环境启动后,利用函数从该表中获取启动窗口信息,也就是系统应用的信息,以执行下一步操作。
S2、建立窗口堆栈:启动窗口中,当多个窗口处于运行状态时,通过Xlib库的X11函数和XTEST函数从键鼠显示映射表来搜索窗口状态,以判断窗口是否是活动窗口,并将最小化窗口视为不活动窗口;然后建立两个堆栈,分别命名为活动窗口堆栈和非活动窗口堆栈,将活动窗口放到活动窗口堆栈中,非活动窗口放到非活动窗口堆栈中。S11中的窗口标志位为动态设置的窗口标志位,该窗口标志位通过调用Xlib库的函数,在本步骤中,可将窗口动态的存放到活动窗口堆栈中和非活动窗口堆栈中。
S3、对活动窗口进行显示:把活动窗口堆栈的窗口按照要求在桌面的活动工作区进行自动排列显示。显示窗口的方式为层叠、堆叠或并排显示窗口,其中:
层叠窗口,把窗口一层一层叠加起来,只有最上面的窗口能看到内容,下面的窗口只能看到一个角,窗口看似杂乱重叠在一起,可是每个窗口并不会被完全遮挡,不论用户点击哪个窗口,其他窗口总有一个角露出来。
堆叠显示窗口,窗口被分成两列,纵向排列,按窗口大小平分,窗口的近乎一半的区域被窗口的标题和顶部的功能区域占据了,所以窗口能显示的内容很少。
并排显示窗口,打开的窗口都变成了长方形,获取当前窗口的分辨率,按照获取的分辨率的长度和活动窗口的个数,等分当前窗口,高度是当前分辨率的高度。
下面举例说明,首先进行关键词解释:
Linux操作系统桌面环境:本专利Linux操作系统桌面环境(Desktopenvironment,有时称为桌面管理器)是对桌面比拟的实现。它由多个软件组成。一个桌面环境中的软件共享同一个图形用户界面,提供给多个用户统一的用户界面。在一个典型的桌面环境中,这些软件提供给计算机用户视窗,文件夹,工具栏,壁纸、用户登录、锁屏、图标以及像拖放等服务。不同桌面环境在设计和功能上的特性会赋予其与众不同的外观和感觉。
桌面窗口:通常是指运行于桌面环境上的各式各样多媒体软件、系统程序、游戏、实用程序、网页开发工具、编程、办公软件、美工工具等等,在不同的操作系统上,桌面环境在设计和功能上的特性,赋予了它与众不同的外观和感觉,如窗口显示、全屏显示、Logo透明度和实时任务栏缩略图,此过程是桌面环境应用程序管理的重要组成部分。
窗口自动排列:通常将错乱、大量的桌面窗口应用程序,依据某种方法自动排列、自动布局,按照网格排序布局,固定的位置和大小布局。
应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定,逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单位(如毫米),还可以是用户自定义的一种单位。在应用程序中,使用映射模式。应用程序在其客户区绘制图形时,必须给出在客户区的位置,其位置用x和y两个坐标表示,x表示横坐标,y表示纵坐标。
在窗口创建函数中,这些坐标使用的是一种"逻辑单位"。函数将输出送到某个物理设备上时,将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点)。逻辑坐标和设备坐标的转换是由映射模式决定的。
映射模式被储存在设备环境中。在Linux系统下,工作区可以有四个,显示设备可以有单个和多屏。设备坐标指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。
设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。
若设备是VGA显示器,自动将其转化为像素点,逻辑坐标是系统用作记录的坐标,逻辑坐标的方向和单位与设备坐标的方向和单位相同,也是以像素为单位来表示的,X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。
逻辑坐标和设备坐标在缺省模式中一般是一致的,窗口为非滚动窗口,窗口为滚动窗口,垂直滚动条位于滚动边框的最上端,水平滚动条位于最左端,包括以下3种设备坐标,以满足各种不同需要:
1)客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0,0)。
2)屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0)。
3)全窗口坐标,包括一个程序的整个窗口,包括标题条、菜单、滚动条、窗口的左上角为(0,0)使用得到的窗口设备环境,可以将逻辑单位转换成窗口坐标。
Linux系统可以用X11和GTK提供Get_display_name或Get_Current_monitor等方法获取了一个显示设备,也可以指定全窗口坐标或屏幕坐标。点(0,0)是客户区域的左上角。x的值向右增加,y的值向下增加,窗口通过设置屏幕的坐标设置初始显示区域。
利用Xlib提供的X11和XTEST扩展函数获取当前桌面环境的活动窗口、窗口的标题,窗口焦点、窗口是否最大化是否可以移动并模拟键盘鼠标事件,获取窗口的ID,将活动窗口的ID放到窗口堆栈中,按照特定的算法,从初始坐标,层叠、堆叠、并排显示窗口。
S1、建立键鼠显示映射表
调用底层Xlib库发送模拟的鼠标输入事件和键盘输入事件,执行各种应用程序窗口的管理任务,修改窗口大小,移动窗口到固定的坐标,使用三个标志位标记窗口位置发生变化。
#define SIZE_USEHINTWINS(1L<<0);
#define SIZE_USEHINTWINS_X(1L<<1);
#define SIZE_USEHINTWINS_Y(1L<<2);
当前窗口是一个特定的标识,标记鼠标、键盘、坐标值,使用CurrentWindow_Keysequenc定位当前窗口,调用XTEST发生事件来模拟鼠标键盘发生,对于有多个显示器的设备,将Display(0)定义为当前窗口。
将键映射到具体的ascii值上。
Figure BDA0002455755030000101
键值映射到具体要发送信号的信息,如keycode、modifiers、键值(如字母’a’),键对应的ascii值,将这些信息放到一个结构体中,形成键值映射事件:
Figure BDA0002455755030000102
使用Xlib库,获取显示设备,将键值映射事件和显示事件放到另外一个结构体中,建构键盘按键事件、鼠标按钮事件、窗口显示事件。
Figure BDA0002455755030000103
Figure BDA0002455755030000111
将显示设备(屏幕)、显示名、键盘按键事件、键值映射、键值数据长度、鼠标按键事件、可见窗口、非活动窗口(最小化窗口)结构体的信息放到统一的数据表中,并命名为键鼠显示映射表,该数据表常驻内存,当桌面环境启动后,通过函数获取启动窗口信息,也就是应用的信息。
S2、对表xwinDisplay_t窗口建立窗口堆栈
当N个活动窗口处于运行状态时,可以通过Xlib获取函数搜索窗口状态,判断窗口是否是活动窗口,将最小化窗口视为不活动窗口,建立两个堆栈,活动窗口堆栈和非活动窗口堆栈,活动窗口放到窗口堆栈中,非活动窗口放到非活动窗口堆栈中。要查询窗口堆栈,可以使用特殊符号“%N”进行查询,其中N是数字或'@'符号。当前的活动窗口为(1..N)如果给出%N,将从窗口堆栈中选择第N个窗口。通常需要第一个窗口或所有窗口。窗口堆栈中窗口的顺序与窗口堆栈顺序相对应。
可以通过动态的设置窗口标志位将窗口动态的存放到活动窗口堆栈中和非活动窗口堆栈中。
S3、对活动窗口层叠、堆叠、并排显示把活动窗口堆栈的窗口按照层叠窗口,把窗口一层一层叠加起来,只有最上面的窗口能看到内容,下面的窗口只能看到一个角。窗口看似杂乱重叠在一起,可是每个窗口并不会被完全遮挡,不论你点击哪个窗口,其他窗口总有一个角露出来。可以设定层叠窗口。
堆叠显示窗口,窗口被分成两列,纵向排列,按窗口大小平分,窗口的差不多一半的区域被窗口的标题和顶部的功能区域占据了,所以窗口能显示的内容很少。
并排显示窗口,打开的窗口都变成了长方形,获取当前窗口的分辨率,按照获取的分辨率的长度和活动窗口的个数,等分当前窗口,高度是当前分辨率的高度。
本专利对Linux系统下的桌面窗口多应用程序、多窗口显示进行了美化,可以方便的对窗口上运行的应用进行排序,方便用户选择,也可以快速的预览进行中的应用。也方便应用程序之间的应用切换。
本系统使用稳定且易用性较好,已默认集成在中标麒麟桌面操作系统龙芯版、中标麒麟桌面操作系统兆芯版、中标麒麟桌面操作系统ARM版,中标麒麟云桌面环境,具有较高的推广应用价值。

Claims (3)

1.一种Linux操作系统桌面环境窗口自动排列的方法,其特征在于:包括如下步骤:
S1、建立键鼠显示映射表:该表常驻内存,内容包括显示设备、显示名、键盘输入事件、键盘键值映射、键盘键值数据长度、鼠标输入事件、可见窗口、非活动窗口的信息,当桌面环境启动后,从键鼠显示映射表中通过函数获取启动窗口的信息,也就是系统应用信息;
S2、建立窗口堆栈:启动窗口中,当多个窗口处于运行状态时,通过Xlib库的X11函数和XTEST函数从键鼠显示映射表来搜索窗口状态,以判断窗口是否是活动窗口,并将最小化窗口视为不活动窗口;然后建立两个堆栈,分别命名为活动窗口堆栈和非活动窗口堆栈,将活动窗口放到活动窗口堆栈中,非活动窗口放到非活动窗口堆栈中;
S3、对活动窗口进行显示:把活动窗口堆栈的窗口按照要求进行自动排列显示;
S1中,建立键鼠显示映射表包括如下步骤:
S11、调用底层Xlib库发送模拟的鼠标输入事件和键盘输入事件,执行多种窗口管理任务,并使用窗口标志位来标记窗口位置发生的变化,窗口标志位可以标记窗口变化事件,以及关联窗口点击事件、窗口大小变化、窗口移动事件,用于检测窗口是活动窗口还是非活动窗口,并对标志出的活动窗口的x坐标值和y坐标值进行表示:
S12、定位当前窗口,由于当前窗口是一个特定的标识,需要标记鼠标、键盘、坐标值,因此首先定位当前窗口,然后调用XTEST发生事件来模拟鼠标键盘事件的发生;
S13、将键盘的键值映射到具体要发送信号的信息,然后将这些信息放到一个结构体中,形成键值映射事件;
S14、使用Xlib库的函数获取显示设备,形成显示事件;然后将键值映射事件和显示事件放到另外一个结构体中,建构键盘按键事件、鼠标按钮事件、窗口显示事件;
S15、将键盘按键事件、鼠标按钮事件、窗口显示事件中的显示设备、显示名、键盘输入事件、键盘键值映射、键盘键值数据长度、鼠标输入事件、可见窗口、非活动窗口的结构体信息放到键鼠显示映射表中,该键鼠显示映射表常驻内存,当桌面环境启动后,利用函数从该表中获取启动窗口信息,也就是系统应用的信息,以执行下一步操作。
2.根据权利要求1所述的一种Linux操作系统桌面环境窗口自动排列的方法,其特征在于:S11中的窗口标志位为动态设置的窗口标志位,该窗口标志位通过调用Xlib库的函数,将窗口动态的存放到活动窗口堆栈中和非活动窗口堆栈中。
3.根据权利要求2所述的一种Linux操作系统桌面环境窗口自动排列的方法,其特征在于:S3中,显示窗口的方式为层叠、堆叠或并排显示窗口,其中:
层叠窗口,把窗口一层一层叠加起来,只有最上面的窗口能看到内容,下面的窗口只能看到一个角,窗口看似杂乱重叠在一起,可是每个窗口并不会被完全遮挡,不论用户点击哪个窗口,其他窗口总有一个角露出来;
堆叠显示窗口,窗口被分成两列,纵向排列,按窗口大小平分,窗口的近乎一半的区域被窗口的标题和顶部的功能区域所占据;
并排显示窗口,打开的窗口都变成了长方形,获取当前窗口的分辨率,按照获取的分辨率的长度和活动窗口的个数,等分当前窗口,高度是当前分辨率的高度。
CN202010305809.0A 2020-04-17 2020-04-17 一种Linux操作系统桌面环境窗口自动排列的方法 Active CN113535287B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010305809.0A CN113535287B (zh) 2020-04-17 2020-04-17 一种Linux操作系统桌面环境窗口自动排列的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010305809.0A CN113535287B (zh) 2020-04-17 2020-04-17 一种Linux操作系统桌面环境窗口自动排列的方法

Publications (2)

Publication Number Publication Date
CN113535287A CN113535287A (zh) 2021-10-22
CN113535287B true CN113535287B (zh) 2022-12-13

Family

ID=78123327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010305809.0A Active CN113535287B (zh) 2020-04-17 2020-04-17 一种Linux操作系统桌面环境窗口自动排列的方法

Country Status (1)

Country Link
CN (1) CN113535287B (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310655A (ja) * 2003-04-10 2004-11-04 Matsushita Electric Ind Co Ltd ウィンドウスタック制御方法
US20060158459A1 (en) * 2004-07-20 2006-07-20 Ferguson Stuart H Systems and methods for creating user interfaces
US9298474B2 (en) * 2004-10-06 2016-03-29 International Business Machines Corporation System and method for managing a floating window
WO2012044713A1 (en) * 2010-10-01 2012-04-05 Imerj LLC Drag/flick gestures in user interface
US9495012B2 (en) * 2011-09-27 2016-11-15 Z124 Secondary single screen mode activation through user interface activation
KR20130039628A (ko) * 2011-10-12 2013-04-22 삼성전자주식회사 디스플레이 장치 및 디스플레이 장치의 제어 방법
CN102520946A (zh) * 2011-12-09 2012-06-27 山东大学 一种基于嵌入式Linux的桌面系统的实现方法
CN102937859A (zh) * 2012-10-19 2013-02-20 山东大学 一种基于Android操作系统的桌面系统的实现方法
CN103077076B (zh) * 2013-01-06 2015-10-28 北京航空航天大学 在Linux上模拟实现Windows堆管理的方法
CN103279349B (zh) * 2013-05-31 2016-09-21 正益无线(北京)科技有限公司 手机或pda的基于移动中间件的多窗口浏览系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《Scaling and Self-repair of Linux Based Services Using a Novel Distributed Computing Model Exploiting Parallelism》;GIovanni Morana et al.;《2011 IEEE 20th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises》;20110818;全文 *

Also Published As

Publication number Publication date
CN113535287A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
US6188405B1 (en) Methods, apparatus and data structures for providing a user interface, which exploits spatial memory, to objects
US7013435B2 (en) Three dimensional spatial user interface
US7512892B2 (en) Method and system for displaying and interacting with paginated content
JP4290871B2 (ja) 階層データ構造に編成されたデータの表示および相互作用のためのコンピュータシステム
Dachselt et al. Three-dimensional menus: A survey and taxonomy
US6636246B1 (en) Three dimensional spatial user interface
CN102999274B (zh) 语义缩放动画
US6243093B1 (en) Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects and which visually groups matching objects
US20070150810A1 (en) Virtual desktop
US20090019348A1 (en) Fractal Grid Hierarchical Presentation Of Information
US20120151397A1 (en) Access to an electronic object collection via a plurality of views
US20130219331A1 (en) Apparatus and method for positioning windows on a display
US20110004839A1 (en) User-customized computer display method
US20090244016A1 (en) Information handling system display device and methods thereof
JP2013504793A (ja) ズーミング・グラフィカル・ユーザー・インターフェース
US7689924B1 (en) Link annotation for keyboard navigation
GB2324450A (en) Graphical user interface
US20120036476A1 (en) Multidirectional expansion cursor and method for forming a multidirectional expansion cursor
CN1113021A (zh) 拖放操作中滚动目标窗口
CN113535287B (zh) 一种Linux操作系统桌面环境窗口自动排列的方法
KR20110040428A (ko) 검색 결과 표시 방법
Dachselt et al. A Survey and Taxonomy of 3D Menu Techniques.
US20040098522A1 (en) Apparatus and method for retrieving and displaying related information on a handheld communication device
Peuhkurinen et al. Using RDF data as basis for 3D Window management in mobile devices
US20040090459A1 (en) Graphical user interface for presenting and manipulating object attributes

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
GR01 Patent grant
GR01 Patent grant