Sessions control 是一套基于 hammerspoon(Mac) 的脚本程序。可以通过快捷键把 Mac 中的各个窗口归类,并快速的在各个分类中切换,包括全屏的窗口也会自己切换。

注意:本程序还处于开发状态,不会关闭或丢失窗口,但并不对稳定性提供保证,请勿用于正式工作中!

Hammerspoon

sessions control

简介

Sessions control 主要有以下三个功能:

  • 显示当前场景(sessions)
  • 为当前场景增删窗口(windows)
  • 在不同场景中切换

当前实现主要通过把窗口最小化完成场景切换,后期版本会考虑把窗口隐藏,不占用任务栏空间。

目前主要优势在于同时可以处理全屏窗口,当切换场景时,全屏的窗口也会同时最小化,前台场景也会恢复应有的全屏状态。

由于切换动画为系统动画,所以无法简单地关闭动画,在切换场景的时候会有部分动画。

各个场景都会定时保存到磁盘中,以保证各个场景不会因为 hammerspoon 或电脑的开关而丢失。

对各个功能的快捷键提供定制,在脚本中可以很简单地修改快捷键。

安装

  1. 从 GitHub 中下载压缩包,或 clone 仓库到本地
  2. sessions-control-hammerspoon 文件夹复制到 ~/.hammerspoon/ 文件夹下
  3. 更新 ~/.hammerspoon/ 目录下 init.lua,加入 sessions control 功能

下载地址:

  • GitHub 地址:()[]
  • GiuHub 压缩包地址:()[]

注:.hammerspoon 是隐藏文件夹,如果找不到相应位置,可以运行下载的程序中的 setup 程序,会自动复制相应文件到目标位置,并自动更新 init.lua

注:init.luahammerspoon 本身自带的初始化文件。

功能说明

在本说明中使用默认的快捷键进行说明,操作主要是先按住功能键,然后点击相应快捷键,默认键位如下:

  • 功能键: ctrl + alt + cmd

  • 显示当前场景:P

  • 前一场景:[

  • 下一场景:]

  • 加入当前场景:L

  • 从当前场景删除:;

  • 数字键快速切换:1 ~ 场景数

其中,数字键快速切换 会按照场景数自动生成,通过按住功能键,加上相应的数字可以快速在场景间切换。

默认键位都位于键盘右侧,通过功能分区。

显示当前场景

按住 ctrl + alt + cmd 后,点击 P

通过系统通知展示当前各个场景,并自动编号,便于后面的快速切换。

当然,同时进行太多任务会很乱,所以不应该同时有太多场景,同时,系统通知中不可以放入过长的内容,所以刚刚好 (;¬_¬)

前后场景

  • 前一场景:按住 ctrl + alt + cmd 后,点击 [
  • 下一场景:按住 ctrl + alt + cmd 后,点击 ]

这两个功能主要用于切换上一个或下一个场景,完成按键后,会自动记录当前窗口的全屏状态,并把当前场景的窗口最小后,然后切换到新场景,恢复新场景中的窗口状态。

窗口操作

  • 加入:按住 ctrl + alt + cmd 后,点击 L
  • 删除:按住 ctrl + alt + cmd 后,点击 ;

这两个功能主要用于对当前窗口的操作

  • 把正在使用的窗口加入到当前场景中
  • 从当前场景中删除正在使用的窗口

增删窗口之后会弹出通知提示完成操作,并显示当前场景中共有几个窗口

快速切换

在查看场景时,每个场景名之前会有一个序号,该序号可用于快速切换,主要用于跨越多个场景的切换时,避免多个最大化,最小化动画。

使用方法就是按住功能键后,再按相应的序号键(注:未测试小键盘区)

  • 按住 ctrl + alt + cmd 后,点击 1
  • 按住 ctrl + alt + cmd 后,点击 2

程序实现

Sessions control 是基于 Hammerspoon 的脚本程序,使用 lua 编写,主要是两个文件实现。

  • sessions_control.lua
  • sessions_head.lua

为了方便管理,把这两个文件放到了 sessions-control-hammerspoon 文件夹中。