背景
在提供图形界面的操作系统里,都会存在一个问题,就是当我们需要查找大量资源时,窗口会变得较多不方便管理。
比如我现在打开的窗口,就包含了编辑博客的编辑器,一个命令终端,一个查找资料的浏览器,一个临时记录信息的备忘录,还有一些其它的软件。
这时会存在两个问题:
- 应用过多,切换应用时会有很多精力浪费在找目标应用的过程中
- 窗口布局过乱,重新规划放多个桌面又耗费太多精力,得不尝失
对于窗口的管理,现在已经存在一些方案,主要有以下几大类:
- 提供窗口管理工具,这类工具一般以快捷键为入口,方便对目标窗口调整大小,设置位置
- 加速操作,这类工具一般是牺牲精确度,将移动和修改窗口大小合并为一个操作,如将窗口拉到屏幕边缘自动贴合并调整位置和大小,或直接选择提前准备好的位置,magnet和divvy就属于此类
- 平铺式窗口设计,将所有窗口平铺到屏幕
其中,1和2虽能解决布局问题,但是耗费精力也不小,而且当应用过多时,仍然会有很大一部分精力耗费在切换应用上。目前来看,3似乎是一种比较理想的方式。
平铺式窗口
平铺式窗口管理器的设计存在很长一段时间了,最早应该是linux平台先行做的实践。
原因猜测应该是linux分层外包的协作方式,内核、核心工具、窗口系统、UI系统等都是由不同的开源团队分别完成,这样大家也有更多的精力和空间去做尝试。
我最早使用的linux上的平铺式窗口管理器是awesome,它将所有的窗口都平铺在电脑的屏幕上,不需要自己去调整窗口的位置和大小或窗口间做切换时的视觉适应,而且可以一眼看到其它应用,可以节省很多的精力。
不过,平铺式窗口也有一些问题,比如窗口过多而电脑屏幕过小时就会很尴尬,再比如使用一些gui软件如chrome时也会很别扭,所以它较适合用于多个终端的情况。一些软件如tmux、vim split window的设计也有异曲同工之妙。
mac os x 的情况稍有不同,它的开发模型是大一统,整个系统从内核到上层用户软件的设计都是由苹果公司包揽,所以做窗口管理只能提供有限的能力。但这是足够的,我们极少需要完全从底层自定义整个设计,这是一种偏执。
该设计的主要目标还是解放人的精力,让我们能够投入到更有价值的事情中。所以下面我以此为基础,探索一下mac os x上的相关实现。
Amethyst
这是我在寻找平铺式窗口管理器时找到的一个开源方案,仓库的地址在 https://github.com/ianyh/Amethyst。
Amethyst是一个基于xmonad的软件,xmonad运行在linux平台上,类似awesome。
Amethyst默认提供了十多个布局供用户使用,用户可以使用快捷键来管理窗口布局或窗口大小。
缺点是,Amethyst提供的用户界面只有快捷键,所以上手难度较大,用户需要自己去寻找符合自己的操作方式。
比如,我现在的方式是,使用 Widescreen tall
布局,左半屏即是一个主要的工作窗口,其余窗口都竖排在右侧窗口。可以鼠标点击需要切换的窗口,然后快捷键切换到左侧使用。
默认布局和默认快捷键在官方文档都有,这里就不赘述了。
总结
这篇文章对操作讲解地较少,对于高度可配的软件来说,具体的使用是见仁见智的事情。
第一种方案,大多工具只是提供了一个快捷键操作的方式而已,对我的问题没有太大帮助。
我之前也在第二种方案上试用过很长一段时间,总体来说如果打开的应用较为稳定且数量较少,也是一种不错的方案。使用的工具类似magnet,是一个开源方案,具体工具名称倒记不得了。
当然工具是一方面,良好的使用习惯也是很重要的,甚至它完全可以取代大部分效率提升工具。真正的效率提升还是在人,工具只是在为人打补丁而已。