GridMove – 小巧灵活,高效可靠,Windows 快捷分屏应用

5 min


这些年来,「大屏就是生产力」的观念深入人心,越来越多的用户开始使用大尺寸屏幕以及多显示器,但有效利用屏幕面积、快捷操作应用窗口还需要辅助。

Windows 平台下,作为 PowerToys 组件之一的 FancyZones 就有不少拥趸。它的功能非常简单:划出一块区域,将窗口移至此区域后便会被调整到指定大小与位置:

来自 PowerToys 官网

功能基础的同时相对臃肿成为了我拒绝它的理由。我希望有一个应用能做到像 FancyZones 般可靠的同时,更加快捷灵活,于是我并改进了一个分屏:GridMove。

如果你频繁地使用 Windows 自带的窗口贴靠功能,或者已经是 FancyZones 的用户,那么、开箱即用并且功能更加强大的 GridMove 或许能赢得你的芳心。

JGPaiva 2013 年发布 GridMove 后一直没有再更新,检查代码后不难发现有一些功能原作者并没有写完。下面的版本是以此为基础改善而来,下载 exe 文件双击安装即可体验:

免费开源 GitHub  |  Gitee

启动后,GridMove 会在后台静默运行。如果想要控制某些以提升运行的应用,例如任务管理器,需要同样以管理员权限运行 GridMove。右键位于系统托盘的绿色方格图标即可调整软件功能。

方便的 WinDrag

软件的第一个功能是 WinDrag。默认情况下,当我们需要调整窗口的位置时,必须将鼠标到窗口的标题栏,而有了此软件后,仅需按住 Windows 徽标键,鼠标左键应用窗口的任意位置便能拖动窗口,窗口开始移动后可以松开 Windows 键:

鼠标在黄色圆点处

Linux、macOS 系统也有类似的实现,但一般以 Alt 为修饰键。而在 Windows 上,使用 Alt 键会和文件管理、Office 插件等诸多应用功能冲突,因而我选择使用极少被用到的 Windows 键。

同样在按住 Windows 键的情况下,鼠标悬停在窗口的任意位置,按下中键会关闭此应用,这样能省下不少找右上角小小的叉号的功夫。

窗口调整更快一步

鼠标右键自然也不会闲着,这便引出了 GridMove 的第二个功能:以多种方式快捷调整窗口的大小和位置。

像其他的分屏工具一样,GridMove 在显示器上划出许多固定位置、固定大小的区域,我们称之为 Grid,将应用窗口拖到 Grid 上后,该应用就会被缩放、移动到这块区域上。

然而相较于 Windows 自身的窗口贴靠和 FancyZones,软件针对不同的交互方式,提供了更加全面快捷的切换手段:

  • 键盘 + 鼠标:按住 Windows 键,鼠标右键窗口的任意位置放置应用:

不需要聚焦到标题栏,也不需要激活窗口,直接拖动即可

  • 键盘 + 触摸板:按住 Windows 和 Shift 键,鼠标左键放置应用;许多 Windows 触摸板不支持模拟鼠标右键拖动,因而设计此按键组合;
  • 仅鼠标:按住鼠标中键放置窗口;
  • 仅触摸板:拖放到屏幕边缘。请关闭 Windows 自带的贴靠窗口使用;以及
  • 仅键盘:勾选「快捷键」> 「快捷模式」,使用 Alt + 数字键放置激活的应用,Alt 键可替换为其他按键。

这些触发方式覆盖了多种使用场景,提供了开关选项,并且以简洁易操作为前提,不会出现诸如 Windows + PageUp 难以单手操作的交互设计。此外,GridMove 可以直接覆盖系统默认的各类快捷键,例如,如果你很少用 Windows + 数字键切换任务栏应用,那么将其分配给 GridMove 也能生效。

日常使用中,我会把以上所有功能全部开启,以备不时之需。由于 GridMove 本身占用资源极少,并不需要担心性能和功耗问题,仅需留意不和其他应用的快捷功能冲突。

而当操作少数窗口——例如 VirualBox 虚拟机、全屏——出现问题时,可以按 Esc 键退出窗口调整模式,然后利用「过滤窗口」功能按屏幕提示将该应用添加到不生效的名单中。

切换布局

GridMove 预置了一些 Grid 布局,这些布局可以满足绝大多数需求。你可以从「模板」选项栏中应用不同的布局。如果要直观地看到模板效果,可以勾选「选项」>「显示网格」,再以任意方式触发窗口调整模式,模板设置的 Grid 便能一览无余:

网格上的数字是该区域的编号,在快捷模式开启的情况下,我们能按下修饰键 + 区域编号快速移动窗口。

软件还支持在不同布局间快速切换。首先选择「模板」>「模板切换顺序」,以英文逗号分隔填写不同模板的名称。接着,在激活 GridMove 的情况下,单击鼠标右键便能按顺序切换布局模板。

自定义布局

尽管不像 FancyZones 那样直观,在 GridMove 中设计自己的布局并不难。

定位到软件安装目录,或者选择「模板」>「打开模板文件夹」,你可以看到Grids 目录。其中所有以 .gird 结尾的文件本质上是文本文件,它们会在软件启动时被读取加载为模板;修改、添加模板只要编辑或新建 gird 文件。

建议直接从既有的 gird 文件上修改布局,其语法非常简单,只涉及到了一些四则运算和一些变量,如下所示:

# 井号及之后的内容仅做说明,使用时需删除
[Groups]
 NumberOfGroups = 12 # 这里写总共有多少区域
[1] # 这是 grid 的编号
# Trigger 部分
 TriggerTop = [Monitor1Top]
 TriggerRight = [Monitor1Left] + [Monitor1Width] / 9 * 1
 TriggerBottom = [Monitor1Bottom]
 TriggerLeft = [Monitor1Left]
# Grid 部分;如果不写这一部分,则取 Trigger 的值
 GridTop = [Monitor1Top]
 GridRight = [Monitor1Right] - [Monitor1Width] / 3 * 2
 GridBottom = [Monitor1Bottom]
 GridLeft = [Monitor1Left]

简单来说,我们首先要告诉 GridMove 一共有多少个区域,然后要为每一个区域分别定义两个矩形的位置和大小,每个矩形要定义上下左右四条线的位置,因而每个区域要写八行。

四行定义四条边的位置,进而界定矩形的位置和大小

第一个 Trigger 矩形是用于触发窗口调整的区域,应用窗口放到这个矩形中会被缩放、移动。Trigger 区域不能重叠;第二个 Grid 矩形是应用最终所占屏幕的空间,Grid 区域可以重叠;每一个显示器都要单独写配置,GridMove 最多只支持三个显示器。

文件中所用的变量以直角括号包围,都非常语义化。保存文件后重启应用就能看到效果。

应用安装目录下的 GridsExample 文件夹是一些用作参考的模板,你可以从这些文件中学习如何自定义布局。

高级设置

点击「选项」>「更多选项」可以打开 GridMove 的配置文件。如果应用出现问题,删除此文件后重启一般能解决问题。

这个配置文件提供一些不方便设置 GUI 的选项,例如:

  • Gap:控制不同 Grid 间的空隙,但不建议设置为 0。TIM,等不使用标准窗口框架的应用,空隙会异常;
  • NoTrayIcon:控制是否显示托盘图标;
  • Exceptions:如果「过滤窗口」功能有问题,可以在此处手动填写。这里是不需要控制的应用的 Class,Window Class 可通过 AHK 组件 Window Spy 获取,以逗号分隔。

总结

如何有效利用多显示器和大屏幕?开放自由的 Linux 已然交出趋近于满分的答卷:i3、xmonad 等平铺式窗口管理器羡煞了 Windows 用户。尽管 Windows 平台上已有数个模仿者,但项目工程量大、维护人手不足的同时商业化困难,使用门槛高、配置繁杂的同时效果却只能做到差强人意,效颦之作不少折戟沉沙。

在厌倦了多个尚不完善的窗口管理器后,我只得退而求其次,在前人的基础上敲敲打打做出了 GridMove。它小巧灵活,高效可靠,已经默默地陪伴我大半年,我也希望它能帮助到你。


Like it? Share with your friends!

0
Anonymous

Choose A Format
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Video
Youtube and Vimeo Embeds