Repolode
mogenson

mogenson/PaperWM.spoon

一款 macOS 平铺式可滚动窗口管理器,以 Hammerspoon 插件(Spoon)形式运行。

可替代:MagnetRectangle

Star
1,791
Fork
87
未关闭 Issue
23
最近提交
6天前

这是什么?

PaperWM.spoon 把 macOS 上的窗口排成一条横向的列带,可以左右滚动,思路与 GNOME 上的 PaperWM 扩展相近。新窗口会自动平铺,每一列可以调整宽度、折叠成手风琴式堆叠,也可以与其他窗口分屏。

它运行在 Hammerspoon 中,用 Lua 进行配置。用户可以绑定快捷键,完成焦点切换、窗口交换、尺寸调整、在 Mission Control 空间之间移动窗口以及浮动窗口操作。配置项涵盖窗口间距、外部状态栏和 Dock 偏移、按应用设置默认宽度、选择受管应用和屏幕的窗口过滤器,还支持触控板滑动和鼠标拖拽、滚轮滚动。

使用前需要 macOS 和 Hammerspoon,并在系统设置中开启“显示器拥有独立空间”。由于 macOS 不允许窗口完全移出屏幕,超出可见区域的平铺窗口会停靠在屏幕左右边缘的一段边距中。

核心功能

  • 01可左右滚动的平铺窗口列带
  • 02通过 Hammerspoon 快捷键完成焦点切换、交换和尺寸调整
  • 03手风琴式堆叠列和分屏布局
  • 04在 Mission Control 空间之间移动窗口
  • 05支持触控板滑动,以及按住修饰键用鼠标拖拽或滚轮滚动窗口
  • 06可配置窗口间距、外部状态栏偏移和按应用的默认宽度

适用场景

  • 希望在 macOS 上使用类似 GNOME PaperWM 的可滚动平铺布局的用户
  • 需要同时打开大量编辑器和终端窗口、偏好键盘操作的开发者
  • 使用多显示器或多个 Mission Control 空间、希望窗口位置保持一致的用户

快速上手

  1. 1

    将 Spoon 克隆到 Hammerspoon 的 Spoons 目录

    git clone https://github.com/mogenson/PaperWM.spoon ~/.hammerspoon/Spoons/PaperWM.spoon
  2. 2

    按 README 所述在系统设置中调整 Mission Control 选项

  3. 3

    在 ~/.hammerspoon/init.lua 中加载并启动该 Spoon

    PaperWM = hs.loadSpoon("PaperWM") PaperWM:bindHotkeys(PaperWM.default_hotkeys) PaperWM:start()

使用前须知

  • 仅支持 macOS,并且需要 Hammerspoon 自动化应用。
  • 使用前需要修改 Mission Control 设置(每个显示器使用独立空间)。
  • 无法完全移出屏幕的窗口会被放置在屏幕左右边缘的边距中,且难以检测窗口在空间或屏幕之间的拖动。

标签

常见问题

PaperWM.spoon 是什么?
一款 macOS 平铺式可滚动窗口管理器,以 Hammerspoon 插件(Spoon)形式运行。 PaperWM.spoon 把 macOS 上的窗口排成一条横向的列带,可以左右滚动,思路与 GNOME 上的 PaperWM 扩展相近。新窗口会自动平铺,每一列可以调整宽度、折叠成手风琴式堆叠,也可以与其他窗口分屏。
PaperWM.spoon 可以免费使用吗?用的什么许可证?
PaperWM.spoon 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
PaperWM.spoon 还在维护吗?
活跃维护中。PaperWM.spoon 最近一次提交是在 2026年10月13日。
PaperWM.spoon 适合用来做什么?
希望在 macOS 上使用类似 GNOME PaperWM 的可滚动平铺布局的用户 需要同时打开大量编辑器和终端窗口、偏好键盘操作的开发者 使用多显示器或多个 Mission Control 空间、希望窗口位置保持一致的用户
PaperWM.spoon 怎么安装和运行?
将 Spoon 克隆到 Hammerspoon 的 Spoons 目录: git clone https://github.com/mogenson/PaperWM.spoon ~/.hammerspoon/Spoons/PaperWM.spoon 按 README 所述在系统设置中调整 Mission Control 选项 在 ~/.hammerspoon/init.lua 中加载并启动该 Spoon: PaperWM = hs.loadSpoon("PaperWM") PaperWM:bindHotkeys(PaperWM.default_hotkeys) PaperWM:start()
在哪里获取 PaperWM.spoon?
源代码和安装说明在 GitHub 上:https://github.com/mogenson/PaperWM.spoon

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目