本发明涉及系统托盘图标显示技术,尤其涉及一种linux系统的托盘图标显示方法及系统。
背景技术:
1、在linux/unix类操作系统上,display用来设置将图形显示到何处。针对linux系统开发的桌面环境的使用过程中,使用者希望一个用户同时在桌面上连接了多个display时,每个display的系统托盘都可以独立的展示各个应用的状态。
2、目前国内外对于linux桌面环境的单用户多display场景下托盘图标的显示方案如下:
3、方案一:只在其中一个display上显示托盘图标,保证显示正常,其他display上不显示托盘图标。这种方案的缺点是无法满足所有display都正确显示托盘图标的需求。
4、方案二:为每一个display启动一个托盘服务,每个托盘服务监听托盘图标的注册,并在自己对应的display上显示出来。这种方案缺点是托盘图标注册时,每个托盘服务都可以监听并显示到对应的display上,从而导致图标重复问题。
5、专利cn202210709431提供了一种系统托盘图标管理方法,涉及了确定运行系统托盘的目标进程、检测系统托盘区内的无效图标、删除所检测到的无效图标等功能,能够有效解决任务栏系统托盘区存在大量的无用空白占位区域的问题。
6、专利us2004061723a1提供了一种一个显示器内多个系统托盘区域显示和管理的方法,其中每个系统托盘区域均可设置为特定大小,并且可以显示多个托盘图标,以使用户能够选择任一图标来执行相应的系统托盘功能。
7、但是上述专利并不是多个display托盘图标的管理方案,也未解决单用户多display场景下托盘图标显示的问题。
技术实现思路
1、本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种linux系统的托盘图标显示方法及系统,使得每个display都可以独立的展示各自的托盘图标,解决了在多display场景下托盘图标缺失和显示重复的问题。
2、为解决上述技术问题,本发明提出的技术方案为:
3、一种linux系统的托盘图标显示方法,包括以下步骤:
4、s101)获取服务端计算机和客户端计算机的display信息;
5、s102)若监听到托盘图标的注册请求,获取托盘图标注册者的display信息;
6、s103)将托盘图标注册者的display信息与服务端计算机和客户端计算机的display信息分别进行对比,若对比结果相同则将托盘图标注册者的托盘图标显示在对应的服务端计算机或客户端计算机的display上。
7、进一步的,步骤s101包括以下步骤:
8、s201)获取服务端计算机的display信息;
9、s202)若监听到客户端计算机通过远程桌面连接服务端计算机,获取所述客户端计算机的display信息。
10、进一步的,步骤s102中,获取托盘图标注册者的display信息时,包括以下步骤:
11、s301)获取托盘图标的dbus服务名,通过所述dbus服务名解析出托盘图标注册者的pid;
12、s302)将托盘图标注册者的pid匹配指定文件中的目标字段,然后将匹配结果作为托盘图标注册者的display信息。
13、进一步的,指定文件中的目标字段具体是“/proc/$pid/environ”文件的“display=”字段。
14、进一步的,步骤s102中,所述托盘图标注册者为服务端计算机或者客户端计算机上启动的应用。
15、进一步的,步骤s103包括以下步骤:
16、s401)将托盘图标注册者的display信息与当前计算机的display信息进行对比;
17、s402)如果对比结果为相同,则将托盘图标注册者的托盘图标显示在当前计算机的display上,如果对比结果为不同,则从服务端计算机和客户端计算机中选取下一计算机,跳转执行步骤s401直到对比结果为相同。
18、本发明还提出一种linux系统的托盘图标显示系统,包括服务端计算机和客户端计算机,所述服务端计算机设置有托盘监听服务和托盘显示程序,所述托盘显示程序与服务端计算机和客户端计算机一一对应,其中:
19、所述托盘监听服务用于监听托盘图标的注册请求;
20、所述托盘显示程序用于获取对应的服务端计算机或者客户端计算机的display信息作为自身display信息,还用于在托盘监听服务监听到托盘图标的注册请求之后,获取托盘图标注册者的display信息,将托盘图标注册者的display信息与自身display信息进行对比,若对比结果相同则将托盘图标注册者的托盘图标显示在对应的服务端计算机或客户端计算机的display上。
21、进一步的,所述服务端计算机用于监听到客户端计算机通过远程桌面连接之后,启动所述客户端计算机对应的托盘显示程序。
22、进一步的,获取对应的服务端计算机或者客户端计算机的display信息作为自身display信息时,所述托盘显示程序将display环境变量设置为对应的服务端计算机或者客户端计算机的display信息。
23、进一步的,在托盘监听服务监听到托盘图标的注册请求之后,获取托盘图标注册者的display信息时,所述托盘监听服务将托盘图标dbus服务的服务名发送给托盘显示程序,所述托盘显示程序通过所述dbus服务名解析出托盘图标注册者的pid,并将托盘图标注册者的pid匹配指定文件中的目标字段,然后将匹配结果作为托盘图标注册者的display信息。
24、与现有技术相比,本发明的优点在于:
25、本发明获取服务端与客户端计算机的display信息之后,等待并监听托盘图标的注册信息,然后获取托盘图标注册者的display信息,并且将托盘图标注册者的display信息与各计算机的display信息进行匹配,将托盘图标注册者的托盘图标显示在匹配到的计算机的display上。保证每个display的系统托盘都可以独立的展示对应的应用的状态,解决了在多display场景下托盘图标缺失和显示重复的问题,提高了用户的工作效率和工作体验。
1.一种linux系统的托盘图标显示方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的linux系统的托盘图标显示方法,其特征在于,步骤s101包括以下步骤:
3.根据权利要求1所述的linux系统的托盘图标显示方法,其特征在于,步骤s102中,获取托盘图标注册者的display信息时,包括以下步骤:
4.根据权利要求3所述的linux系统的托盘图标显示方法,其特征在于,指定文件中的目标字段具体是“/proc/$pid/environ”文件的“display=”字段。
5.根据权利要求1所述的linux系统的托盘图标显示方法,其特征在于,步骤s102中,所述托盘图标注册者为服务端计算机或者客户端计算机上启动的应用。
6.根据权利要求1所述的linux系统的托盘图标显示方法,其特征在于,步骤s103包括以下步骤:
7.一种linux系统的托盘图标显示系统,其特征在于,包括服务端计算机和客户端计算机,所述服务端计算机设置有托盘监听服务和托盘显示程序,所述托盘显示程序与服务端计算机和客户端计算机一一对应,其中:
8.根据权利要求7所述的托盘图标显示系统,其特征在于,所述服务端计算机用于监听到客户端计算机通过远程桌面连接之后,启动所述客户端计算机对应的托盘显示程序。
9.根据权利要求7所述的托盘图标显示系统,其特征在于,获取对应的服务端计算机或者客户端计算机的display信息作为自身display信息时,所述托盘显示程序将display环境变量设置为对应的服务端计算机或者客户端计算机的display信息。
10.根据权利要求7所述的托盘图标显示系统,其特征在于,在托盘监听服务监听到托盘图标的注册请求之后,获取托盘图标注册者的display信息时,所述托盘监听服务将托盘图标dbus服务的服务名发送给托盘显示程序,所述托盘显示程序通过所述dbus服务名解析出托盘图标注册者的pid,并将托盘图标注册者的pid匹配指定文件中的目标字段,然后将匹配结果作为托盘图标注册者的display信息。