窗管技术备忘录

本文档作为X11/Linux窗口管理器的备忘录,详细介绍了窗口管理器的概念、作用、分类以及混成器的功能。窗口管理器管理着应用程序的外观和交互,包括边框、标题栏、布局等,提供了虚拟桌面、窗口状态改变等功能。混成器则通过离屏渲染和透明化等技术,增强了视觉效果。此外,文章还讨论了窗口管理器的技术细节,如X11协议、窗口状态、工作区管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

窗口管理器(Window Manager)

这篇文章可以看成是一个备忘录,分别从两个角度来描述了有关窗口管理器的一些信息。首先是从用户的角度来看,接着从技术的角度来探讨有关窗口管理器的一些问题。

什么是窗口管理器

  • 是X11/Linux上的一个概念,windows似乎没有这种东西。技术上说它是一个X11的客户端程序,没有走后门,通过标准的X11技术来管理顶层窗口的请求、大小、位置、层次关系等。并且根据口味、窗口类型等信息决定是不是要给顶层窗口提供边框,标题栏、状态栏等界面元素。不同的窗口管理器外表上看可能千差万别。

  • 所以窗口管理器是 一个X11客户端程序,它控制其他图形程序的外观和行为方式:边框、标题栏、大小、布局等以及允许对窗口进行调整大小、位置的等操作(通过鼠标或快捷键)。

  • 窗口管理器有几种分类方式:

    按照管理窗口的方式:

    • 堆栈式窗口管理器(stacking window manager):最常见的方式,窗口按层次排列,有前有后,可以通过快捷键、鼠标点击等方式交换前后位置的两个窗口。

    • 平铺式窗口管理器(tiling window manager):基本上窗口之前不会有前后重叠的部分,每个窗口占用的屏幕区域不会交错。

    • 动态?就是兼顾上面两种能力的。

    主流都是堆栈式,很多小众的都是平铺式。也可以用另外一种方式分类:

    • 混成式窗口管理器:offscreen渲染(因此可以获取缩略图),alpha混合透明化,甚至各种动画效果。

    • 非混成式窗口管理器:客户端窗口根据服务器报告的expose事件重绘窗口部分区域,X11服务器并没有保存窗口内容的离线位图。

为什么要使用窗口管理器

  • 首先想想看没有是什么样的,可以自行脑补:一般就是没有标题栏,没有边框,背景黑压压的一片,窗口之间没有明显的界限,没有圆角(或者有锯齿的圆角),没有透明等等。但是有些例外,比如使用gtk+的程序有一个趋势,就是绕过窗口管理器自己来绘制边框和标题栏。然后常规的操作可能不起作用,比如鼠标点击最大化,最小化,移动,改变大小等,也即无法进行交互。同时也没有输入焦点(跟随鼠标),也就是说很难切换到一个窗口里进行输入。

  • 有是什么样的:可能有好看的桌面背景,可能有标题栏,可能有边框,大部分时候可以鼠标点击最大化,最小化,移动,改变大小等。可能有透明(取决于是否使用了混成器),反锯齿的窗口圆角等。可用通过鼠标点击使一个被遮挡的窗口置顶,获得焦点(当然不是唯一的方式)并且能够输入。

  • 从外观怎么区分有没有窗口管理器:看经验,看外表。比较悲观的是有时候可能是区分不出来的,尤其是在使用一些所谓的平铺窗口管理器的时候。很多情况下,如果你使用一个窗口管理器的时间够长,那么还是有一些方法从表像来判断的。

窗口管理器提供了什么

​ 直观上,一般会在client上加入边框和标题栏,并且有丰富的样式,支持漂亮的主题,并且用户至少能够定制某些外观。但是也不一定,比如大多数平铺窗口管理器等就不提供标题栏,比如有些窗口类型是splash,tooltip等等也不会有标题栏。所以说不同的窗口管理器会有不同的视觉风格。

  • 管理大小:窗口的大小变化会有很多因素的共同影响:窗口自己的要求,工作区的大小,workarea的范围,窗口管理器的想法等等。

  • 调整位置:同类型的窗口,一般窗口管理器会有规律的排列,类似瓦片堆叠的效果。不同类型的窗口,窗口管理器一般会尽量分散到workarea各处。当然,这只是一类窗口管理器的做法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值