ITADN
FancyWM/fancywm
FancyWM/fancywm · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

FancyWM

"引发了一场桌面革命" - Seelen UI Blog

"在一个小巧紧凑的包中提供了大量功能" - Softpedia

"尝试过 FancyWM 后,你可能会觉得自己像是一个超级高级用户" - MakeUseOf

"一旦你掌握了它,你就会看到这些功能可以有多高效" - ZDNET

"让多任务处理变得更加容易" - XDA Developers

Gitter Ask DeepWiki

FancyWM 是一款面向 Windows 10/11 的动态平铺窗口管理器,它将平铺窗口的生产力带到 Windows 桌面——无需复杂配置,且不牺牲大多数用户所期望的熟悉鼠标与键盘交互

无需手动排列重叠的窗口,FancyWM 会自动将您的应用程序组织到垂直、水平和堆叠面板中。窗口在打开时流入当前聚焦的面板,当同级窗口关闭时优雅地调整大小,并可通过简单的键盘快捷键或鼠标拖放进行重新排列。其结果是一个整洁无杂乱的工作区,每个应用程序都有明确的位置。

为什么在 Windows 上使用平铺?

平铺从根本上改变了您与桌面交互的方式。新窗口不再重叠;相反,它们会自动在现有窗口旁边占据空间。键盘导航取代了频繁的鼠标操作。对于同时管理多个应用程序的开发者、研究人员和高级用户——无论是边编码边查阅参考文档、跨项目多任务处理,还是编排复杂的工作流——平铺都能显著节省时间和认知负荷。

Windows 提供了 Snap Layouts 和 Virtual Desktops,它们很有用,但缺乏 tiling 所提供的控制力和动态行为。FancyWM 填补了这一空白:它是那些对 tiling 感兴趣但不愿离开 Windows 生态系统的用户的实用入门点。

核心功能

面板:水平、垂直和堆叠

FancyWM 将窗口组织为三种面板类型:

这些面板可以任意嵌套 - 包含垂直子面板的水平面板,其中嵌入堆叠面板。通过组合基本元素来构建自定义布局,而不是通过编辑配置文件。

无需配置

忘掉预定义的布局模板和复杂的配置。FancyWM 在你工作时创建布局。按 [⇧ Shift] + [⊞ Win] 后,会显示可用的 keybingins。

  1. 打开你的第一个窗口 - 它会自动填充工作区。
  2. 打开第二个窗口 - FancyWM 创建一个水平分割;两个窗口现在共享空间。
  3. 使用 [⇧ Shift] + [⊞ Win] 创建一个垂直面板,然后按 [V] - 焦点窗口移动到一个新的垂直面板中。
  4. 使用 [⇧ Shift] + [⊞ Win] 创建一个堆叠面板,然后按 [S] - 窗口现在可以像标签页一样重叠。
  5. 在面板之间拖动窗口,或将面板嵌入其他面板,实时优化布局。

混合输入:键盘和鼠标

FancyWM 尊重 Windows 用户对两种输入方式的重视:

这平衡了高级用户的效率与 Windows 上预期的易用性。

布局约束

应用程序通过 Windows API(WM_GETMINMAXINFO)声明最小和最大窗口尺寸。如果应用程序拒绝缩小到其声明的最小尺寸以下,FancyWM 将尊重该约束——窗口绝不会缩小到其声明的最小尺寸以下。对话框、工具提示和临时窗口会自动浮动(从平铺中移除),以免干扰布局。如果新窗口会导致你的列缩小到最小尺寸以下,该窗口也会自动浮动。

其结果是:没有重叠的平铺块,没有损坏的布局——平铺器会根据应用程序的约束进行适应,而不是强制应用程序使用不合适的尺寸。

原生虚拟桌面

FancyWM 与 Windows 的原生虚拟桌面集成。使用 [⇧ Shift] + [⊞ Win],然后按 [1][2][3] 跳转到桌面 1、2 或 3,或使用 [⇧ Shift] + [⊞ Win][⇧ Shift] + [1][2][3] 将窗口移动到不同的桌面。面板布局可以是每显示器独立或全局统一——由你选择。这适用于多项目工作流:“桌面 1 用于编码,桌面 2 用于研究,桌面 3 用于会议”,每个桌面都有各自的面板排列。

低资源占用

FancyWM 作为一个轻量级的用户态进程运行,而非系统服务。空闲时的典型 CPU 使用率为 <1%,并可选动画开关以减少笔记本电脑的功耗。基于 .NET 运行时的 C# 实现足够高效,可在后台进行窗口管理,而不会对系统产生明显影响。

其他控制

☑ 使用 [⇧ Shift] + [⊞ Win] 完全开启/关闭平铺,然后使用 [F11] 短暂使用浮动窗口

☑ 最大化并还原单个窗口,而不破坏平铺布局

☑ 自动折叠单窗口面板以减少视觉杂乱

☑ 为注重电池续航的工作流禁用动画

☑ 窗口焦点高亮(短暂闪烁)以提高可见性

☑ 可自定义的按键绑定 - 重新绑定所有按键以匹配你的习惯

☑ 如果 [Shift]+[Win] 与其他软件冲突,请将激活热键重映射为 [Ctrl]+[Win][Alt]+[Win]

设计理念

FancyWM 基于特定标准构建,其中许多标准在其他地方并未同时实现:

其结果是一个感觉像 Windows 自然延伸的平铺器,而非 Linux 移植版。

两遍布局算法

在幕后,FancyWM 使用两遍算法来计算窗口位置:

第一遍:约束收集 查询每个窗口的最小和最大尺寸(通过 WM_GETMINMAXINFO)。识别层级中的所有面板及其约束。

第二遍:位置计算 给定面板树和约束,计算每个窗体的像素位置,使得没有窗口被迫低于其最小值。如果所有窗口在其最小尺寸下没有足够的空间,FancyWM 会优雅地降级 - 尊重最小值,并可能将窗口推至可见工作区边界之外,而不是让它们重叠。

后果:布局绝不会因应用约束而损坏。 每个窗口获得相等的空间;关闭一个窗口只是将该空间在剩余窗口中重新平均分配。

二叉空间分割(BSP)通过每次分割将空间递归地划分为两个区域,这可能导致低效的布局或需要手动重新平衡。FancyWM 的等空间方法更易于理解,并能自动适应窗口数量的变化。

原生主题引擎(预览版)

FancyWM v2.19 增加了对使用 CSS 进行自定义主题的支持。这是基于原生平台 API 构建的,不使用 WebViews/Chromium,因此速度快且开销低。

要完善和改进此功能,还需要大量工作,因此请考虑为开发做出贡献或进行捐赠。

在此处查看一些示例:https://github.com/FancyWM/fancywm/pull/444#issuecomment-4016018314

panel-bar {
    border-color: white;
    border-width: 1px;
    border-radius: 12px;
    filter: drop-shadow(0px 0px 8px white);
    background-image: linear-gradient(30deg,
            red 0%, blue 20%, green 40%, green 60%, orange 60%);
}
Screenshot

下载

可以从 Releases 下载预编译的二进制文件。

这些文件由自动化的 GitHub Action 构建,您可以查看所有 构建步骤之前的运行记录

通过 winget 安装(推荐)

winget install fancywm

从 Microsoft Store 安装

English badge

安装 .msixbundle(不推荐)

您可以通过使用 PowerShell 安装 Microsoft Store 包来测试它们。

PowerShell(以管理员身份运行)

certutil.exe -addstore TrustedPeople .\FancyWM.Package_1.0.0.0.x64.cer
Add-AppxPackage -Path .\FancyWM.Package_1.0.0.0.x64.msixbundle

用户指南

请访问 Wiki

问题反馈

请花点时间通过以下方式报告您遇到的任何问题:

从源码构建

克隆此仓库,包括子模块。

git clone --recursive https://github.com/FancyWM/fancywm.git

使用 Visual Studio 2022 打开 .sln 文件并构建 FancyWM 项目。

WinMan & WinMan.Windows

FancyWM 基于 WinManWinMan.Windows

Screenshots

浅色主题,左侧垂直面板
深色主题,左侧为垂直面板,右侧为包含 3 个 VS Code 窗口的堆叠面板
左侧垂直面板,中间为 Edge,右侧垂直面板