一篇文章让你透彻认识 Mac 应用切换和窗口切换的逻辑

date
Dec 24, 2022
slug
mac-switch-app-or-windows
status
Published
tags
Mac
Productivity
数码
MacBook
type
Post
Created time
Dec 24, 2022 05:55 PM
summary
MacBook 的窗口管理一言难尽,本文尝试尽可能系统的梳理 Mac 系统中窗口切换,应用切换的的操作逻辑,本文还分享了使用 Mac 系统时的小技巧
macOS 精美的硬件设计,系统流畅的动画吸引着我,她是美的代表。但在使用 MacBook 处理多项复杂任务时,总有一种无力感。我使用 Windows 超过十年,使用 MacBook 超过五年。Windows 一直是我的主力电脑,原因非常多,其中最主要的是我喜欢操作台式机的感觉,厚实的大机箱可以自定义更强的性能,同时也有充分的散热空间,总之就是“耐操”。MacBook这边就显得稍微金贵了些,除了价格因素,笔记本轻薄的机身,13寸的屏幕操作起来也很费眼。除去鼠标和触控板的差异,两个系统的窗口管理和应用管理方式也不相同,其中有一些管理方式你并不能在两个系统之间找到类似的地方。因此深入了解macOS的应用窗口管理方式以及应用切换方式是必要的。
本文尝试尽可能全面的梳理应用窗口的切换方式,以及各个切换方式的组合,全面梳理所有切换方式多时间复杂度,比较macOS 和 Windows 系统到底在窗口切换方式和效率上有何不同。
本文分为三部分。第一部分介绍macOS应用中的基础知识和操作定义,着重介绍和Windows 中差异的应用打开类型,比如全屏和最大化;定义了所有本文设计到的操作以及操作的实现方式。第二部分将讨论macOS两种应用打开类型的四种切换场景,包括窗口切窗口,窗口切全屏,全屏切窗口和全屏切全屏,详细描述各个场景下可行的操作方式以及各个操作方式的特点。第三部分是本文结论。

应用的两种打开类型

macOS 中应用有两种打开类型,全屏界面和窗口界面。
全屏界面,full-screen,像是一个 iPad 界面,也可以理解成专注模式。在全屏界面你只能看到这个app 本身,上方的菜单栏和下方的程序坞都被隐藏起来了。你可以在这里找到苹果官方对于使用全屏应用的介绍
窗口界面,windows,这个和 Windows 系统的窗口是一个概念,窗口可以叠放。

全屏和最大化

全屏 full-screen 是 Mac 上的一种应用打开方式。Windows 上没有相同或类似的操作。
最大化 maximum 指的是应用窗口最大化,仍然是窗口,只不过是最大的窗口。和 Windows 上的最大化相同。

空间 Spaces

空间是一个工作区域,每一个空间都会在 调度中心 的上方显示预览图。空间有两种形式,一种是桌面,在桌面中可以打开多个应用的窗口。打开电脑后默认的界面是桌面 1,你也可以创建多个这样的桌面,桌面 2,桌面 3 等。另一种形式是上面提到的全屏应用,或者是全屏应用的分屏组合。
因此从系统级别来说,全屏应用和桌面的地位相等,因为一个桌面中可以包含多个窗口应用,桌面的地位是大于窗口应用的,我们可以说全屏应用的系统级别大于窗口应用的系统级别(而不是它们两相等)。

操作定义和介绍

本文会设计到 6 种系统功能。操作系统版本:macOS 13.1, Windows 11
功能名称
当前场景
触控板实现1
触控板实现2
键盘实现1
键盘实现2
备注
调度中心 mission control
通用
三指上滑(四指)
右上角触发角
control + ⬆️ 
功能键 F3
默认从主桌面进入调度中心是不显示上方预览图的(之前的MacOS系统显示,后来改掉了),只有光标移动到上方时,才显示预览;因此只有右上角触发角显示预览。从全屏应用进入调度中心则任何操作都显示上方预览
窗口暴露 app expose 显示本应用所有窗口界面
只能在桌面使用
三指下滑(光标在目标应用窗口,或者光标在dock栏目标应用图标)
双指两次轻触(tap)dock栏目标应用图标
control + ⬇️
调出 app expose 的任何一种操作方式都需要主桌面完成(不能在全屏应用中调出 app expose
窗口切换 迭代本应用的所有窗口界面
只能在桌面使用
command + `
只有键盘方式,没有触控板方式
空间切换 桌面或全屏应用切换
通用
三指左右滑动
进入调度中心,从上方空间预览图中选择 O(3)
control + ⬅️ / ➡️
系统没有快捷键可以直达某个空间。系统默认有快捷键可以直达桌面,control + 1 跳转至桌面 1,control + 2 跳转至桌面 2。
程序坞 调出 Dock 栏
通用
指针移到屏幕底部
fn + A
control + F3
在桌面时可以让dock常驻
应用切换 切换到你最近使用的一个 app
command + tab
无视该应用是窗口还是全屏,对于打开多窗口或者多全屏的应用,会切到你最近一次使用的界面(例如,你最近使用了窗口化的Word A,你切回Word的时候回到Word A;你最后使用了全屏化的Word B,你切回Word的时候回到Word B)本功能仅有键盘实现
Note
    从桌面进入调度中心,上方只显示空间名字
    从桌面进入调度中心,上方只显示空间名字
    从全屏应用进入调度中心,上方显示空间名字和缩略图
    从全屏应用进入调度中心,上方显示空间名字和缩略图
    1. 在全屏应用中可以四指聚拢进入launchpad,不能四指发散显示桌面(四指发散只可以在桌面使用)。

    窗口切换和全屏切换

    接下来我们聊窗户,全屏之间的切换方式。两种状态,当前状态,下一步状态,构成以下四种组合。每一种操作方式都有时间复杂度分析,即 big O,最大操作数。比如通过触控板完成从 app A 切换到 app B 的操作,时间复杂度为 O(2),移动光标到dock 上的 app B 图标,点击,一共两个操作。

    窗口切窗口

    1. 点击程序坞中应用图标切换到应用,如果该应用只有一个窗口,切换完成。如果该应用有多个窗口,然后 窗口切换 O(2) + O(W) W是该应用的窗口数量
    1. 点击程序坞中应用图标切换到应用,如果该应用只有一个窗口,切换完成。如果该应用有多个窗口,然后 窗口暴露 O(5)
    1. 光标移动到 程序坞 中目标应用的 logo,进入 窗口暴露 ,选择窗口。 O(4)
    1. 进入 调度中心 ,在中间的预览图中寻找(前提是 调度中心 设置为所有窗口平铺)
    • 推荐方法 3, 是和 Windows 的操作逻辑一样,会比 Windows 多一个进入 app expose 的操作。先切换应用,再切换窗口的逻辑。
    • 方法 1 和 2 的优点在于如果你之前已经切到该窗口一次,那么点击图标后,上一次的窗口仍然在最上层。
    • 方法 5 在窗口多时不可用。

    窗口切全屏

    1. 点击程序坞中应用图标 O(2)
    1. 使用空间切换 向右滑 (时间复杂度取决于当前空间和目标空间的距离,两个空间相邻时最短O(1),最远时最大 O(15),最多有16个空间。)
    1. 使用应用切换 (时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过 O(n), n 为打开的应用数量)
    1. 进入调度中心,从上方空间缩略图中选择 O(3)
    • 方法 1 要求当且仅当目标应用只有一个全屏界面,如果还有窗口界面或者其他全屏界面就切不过去了。因此通过程序坞切换不是一个通用的办法,或者窗口和全屏不要混用。
    • 推荐方法 2 和方法 4 结合来使用

    全屏切窗口

    1. 进入调度中心,从中间预览图中选择应用,然后窗口切换 O(3) + O(W),W = 该应用窗口数量 - 1。
    1. 进入调度中心,从中间预览图中选择应用,然后 app expose 当设置为所有窗口平铺 O(3), 当设置为应用窗口集合为组应用窗口集合为组 O(6)
    1. 进入调度中心,从程序坞中选择应用,然后窗口切换 O(3) + O(W)
    1. 触控板调出程序坞,选择应用图标,然后窗口切换 O(3) + O(W)
    1. 使用空间切换向左滑到目标桌面,在程序坞中选择应用,然后窗口切换。时间复杂度取决于当前空间和目标空间的距离,最短O(3) + O (W),最大 O(17) + O (W),最多有16个空间。
    1. 应用切换 时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过O(n), n = 打开的应用数量
    • 方法 1 不是很好,因为调度中心中间的 app 预览图位置不是固定的,找起来费劲;但优点是预览图面积远大于 dock 中的图标,在窗口数量少时尤其好用方法 2 O(3) 并不一定不 O (5) 快,虽然操作步骤少,从众多窗口中寻找你要的那个可能会很费时。建议设置为应用窗口集合为组
    • 方法 2 O(3) 并不一定不 O (5) 快,虽然操作步骤少,从众多窗口中寻找你要的那个可能会很费时。建议设置为应用窗口集合为组
    • 方法 3 和方法 4 非常像,本质都是从 程序坞 来切换,区别是一种是光标下移,等待一点延时,dock栏上来,另一种是三指上滑,我觉得更迅速更稳定。dock 栏中程序位置是固定的,这点非常利于切换程序。时间复杂度固定 O(3)
    • 包含窗口切换的方法只能由键盘完成,我个人不考虑,但确实是这个场景下效率最高的方式。唯一留给我的只有方法 2,恒定 O(6)
    • 滑永远不慢。如果你要切换的 app 窗口已经在最上层了,也就是说之前你切过去一次了,那么这个任务就变成了 全屏切全屏,是个空间切换问题,滑~吧~

    全屏切全屏

    也就是空间切空间,三指左右滑动切换,三指上滑选择
    1. 空间切换 O(1) ~ O(S), S = 空间数量 - 1
    1. 调出调度中心,在上方预览图中选择 恒定O(3)
    1. 应用切换 时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过O(n), n = 打开的应用数量
    • 方法 1 和 2 结合来使用,全屏数量少时 ≤ 5,滑动效率很高,全屏数量多时,进入调度中心点选。

    结论

    全屏应用不利于和其他桌面 app 的交互

    分两种情况,1. 如果目标 app 只有一个窗口,最快为 O(3),进入调度中心,光标移动到app图标,点击。2. 如果目标 app 有多个窗口,通过触控板操作会是 O(6)
    如果使用 Windows,通过鼠标操作,情况1会是 O(2),情况2会是 O(3)。这就是为什么macOS 窗口管理做的一塌糊度,尤其是单应用多窗口场景,时间复杂度比 Windows 直接翻倍。
    在这个场景下和 iOS 系统做类比,因为 iOS 不允许应用双开,每个应用只有一个全屏界面,避免了单应用多窗口的发生。

    相邻的全屏应用方便交互 空间切换 三指滑动

    本操作可以做到 O(1),是所有操作里效率最高的,并且不需要移动光标,随意滑动就行。这应该是Mac最出彩的地方。效率等同于 应用切换 command + tab 切换上一个应用

    同一桌面下的多应用方便交互 程序坞 应用切换

    通过程序坞app expose是O(4),比 Windows 的O(3)慢一点点

    同一桌面同 app 的多窗口方便交互 窗口切换 窗口暴露

    窗口的操作涉及到两种,其中 窗口切换 只可以由键盘完成,效率非常高,你可以把切换过程当作窗口的 1:1 预览图,直到你看到你想要的那个窗口的预览图,再松掉 command
    另一种窗口切换的方式则是用触控板,三指下滑进入 窗口暴露 ,预览图是比较大的,因为只显示本应用的窗口而不是所有应用的窗口。

    同一桌面下不同app的不同窗口则是结合上面两步的排列组合,共有四种办法。

    程序坞窗口切换 程序坞窗口暴露 应用切换窗口切换 应用切换窗口暴露
    其中恒定高效的是O4,移动光标到app,三指下滑进入窗口暴露,移动光标选择中型预览图,点击。win可以做到O3。移动光标到app,通过预览图选择缩略图,点击。

    macOS 的应用切换的两个特色

    空间切换 左右滑动 ~

    当之无愧的macOS灵魂,不涉及操作光标,尤其是触控板本身不擅长光标精细操作,滑动很好的规避了这个缺点。

    多桌面的使用

    调度中心是失败的设计

    预览图的位置不固定,如果你设置为窗口平铺,不再显示窗口名称和应用图标,这一点让我费解。其实参考Mac中 safari 的设计,两指收缩的视图,会显示网站的icon和名称,寻找网页就不会很困难。当窗口数量大于 10 时,调度中心基本没用了,找起来太费劲。比 Windows 的 alt-tab 更混乱,Windows 至少保证显示窗口名称和图标。

    通过 dock 切换是不通用的

    目标应用只有全屏,有时回跳到桌面一次,再次点击图标才会跳到这个全屏应用。当目标应用有 2个全屏界面,你点击dock中的图标会跳到其中一个全屏界面,永远跳不到另一个全屏界面

    如果你想像 Windows 一样的操作逻辑来使用 Mac,只使用应用窗口最大化,不要使用应用全屏

    不要担心不使用全屏会不会太特立独行,有很多人是这么使用的。

    隐藏和最小化

    隐藏 command + h 和最小化 command + m 这两个操作很像。都是一种减少的感觉,让你的桌面更干净。
    隐藏是作用于 app ,这个 app 的所有窗口都会被隐藏。最小化是作用于 app 中的当前窗口,这个 app 的其他窗口不受影响。从这个角度来说,隐藏具有更高的系统操作级别。
    隐藏后,使用 app expose 无法显示应用的窗口。最小化后,使用 app expose无法显示应用的窗口,但会在下方以更小的缩略图的形式显示当前最小化的窗口。从这个角度来说,隐藏就是不用了,最小化还 “可能” 用。
    隐藏后,使用 应用切换 command + tab , 所有隐藏窗口会切回来。最小化后,使用应用切换 command + tab ,最小化的窗口不会切回来。从这个角度来说,隐藏还可能用,最小化就是不用了。与 app expose 的结果相反。看看这操作系统的设计,amazing!
    使用 调度中心 ,隐藏和最小化都不会在中间预览图中出现
    最小化有自己独特的切回方式,从 dock 最右侧点击对应窗口切回。这一点对于对于那些 “我只使用调度中心,dock 一直是隐藏的” 的人是很好的反驳,因为你必须从 dock 中取回最小化的窗口。除非你不用,但不用又有不用的问题。因为最小化是系统窗口管理的最基本操作,如果可以不使用最小化同时不影响操作系统,那么最小化这个功能就是冗余的。应该没有人操作 Windows 时不使用最小化或者最大化这样的功能吧。
    此外,最小化的窗口默认是收缩到 dock 右侧,这一点很糟糕。首先右侧的图标位置不是固定的,取决于窗口最小化的先后顺序。其次,当你想要找回你最小化的窗口,你必须清楚目标窗口是被最小化了,你要去 dock 右侧寻找,而无法通过任何其他 调度中心 app expose 等操作找的。这一点和找回全屏应用非常类似,在那里你必须清楚你的目的地是某一个全屏界面。

    调度中心和程序坞

    调度中心和程序坞有点重复,它们都可以用来切换应用,都可以使用触控板或者键盘完成。
    调度中心效率更低,相比较于程序坞,预览窗口的位置不是固定的。
    调度中心有两种设置,集合同应用的所有窗口或者所有窗口平铺。如果设置为前者,很好通过应用 logo 和名字来辨认,但无法选择具体的窗口,还需要进一步使用 app expose 或者 窗口切换 来选择具体窗口;如果设置为所有窗口平铺,我认为很难辨识这是哪个应用以及这是这个应用的哪个窗口,不可用。
    通过程序坞切换也同样棘手。当你开了 4 个 word,2 个是窗口,2 个全屏。这时候你从其他应用切换 word 时,如果通过程序坞,你不知道你会去窗口还是全屏。
    如果去了窗口,你发现这个不是你想要的窗口,这时候你通过 app expose 或者 迭代本应用所有窗口界面 选择另一个 窗口。如果你的目的地是全屏,你需要再次点击 word 图标。
    如果去了全屏,如果这不是你想要的那个全屏 word,你要通过左右滑或者调度中心最上方的全屏预览来选择。
    哇,真麻烦。也就是说你必须要清楚你要去的 word 是个窗口还是全屏了。这并不是切换应用时的自然逻辑。我在 notion A,我想去 word C,我应该能准确定位到 word 在哪里,以及快速辨认我要的那个 word 界面。

    不要使用隐藏和最小化

    这两个设计的都有问题,隐藏后窗口暴露也失效了

    macOS 的窗口管理没有有一个通用切换办法

    Mac 是把窗口应用和全屏应用分开管理的。严格来说,多桌面多全屏的切换有个前提是你知道你想去的地方是一个桌面还是一个全屏,这就有点奇怪。当你在app A, 想去 app B,你还要清楚这个是全屏还是窗口?
    切换桌面上的窗口? 窗口暴露,程序坞,窗口切换
    切换全屏应用或者其他桌面?左右滑或者
    切换到最小化的程序?程序坞最右侧
    看到这里回感觉很麻烦,因为当你想切换到一个app时,你要知道它是窗口还是全屏。切窗口和切全屏的办法不一样。
    如果应用只窗口,那么app expose 或者 command + ` 就可以切到
    如果应用是全屏,那么左右滑,或者进入mission control在上方点选

    切换应用切换窗口自然的逻辑

    通过icon找到应用,通过标题或者预览图确定窗口。icon位置要固定。

    References and useful links

    同类博客

    Appendix A 其他用户的使用分享

    • 我没有安装任何软件,使用 mac 的多桌面,设置 10 个桌面,每个软件放到不同的桌面,快捷键直接切换桌面即可,指哪打哪。切换软件不需要做任何思考和眼睛识别
      notion image

      Appendix B 窗口切换尝试过的软件

      1. Dockview for mac
      1. Dockmate
      1. AltTab
      1. manico
      1. thor
      1. totalspaces3
      1. jitouch
      1. bettertouchtool
      1. multitouch
      1. contexts

      Appendix C 一次操作记录

      在全屏chrome界面下,调出dock栏,点击notion,不能跳转的全屏的notion界面,而是回到了主界面
      在全屏chrome界面下,调出dock栏,点击notion,不能跳转的全屏的notion界面,而是回到了主界面
      使用键盘
      💡
      使用command+tab 切到全屏应用需要在设置中选中选到app时切到该空间。 切回到全屏应用:一直往右滑;四指上滑然后点选;control + ➡️;command + tab
      使用键盘有几个问题
      同一个应用开多个窗口,其中有全屏窗口,这时候 command + tab 只能切到窗口,无法切到全屏的窗口。
       
      使用触控板
      1. 不会用键盘快捷键进入调度中心mission control (因为不能用键盘在调度中心中选择应用,快捷键占用两个手,左边的control和右手的向上箭头
      1. 也就是说使用三指向上进入调度中心。 (也可以左手使用最上排的功能键)
      1. 进入调度中心后的看到画面1
      图一
      图一
      1. 调度中心里无法使用键盘来选择不同的应用,因此这里只能使用触控板。所有的应用在这里显示了两遍。 第一遍是在下方的dock栏,所有打开的应用在这里都出现了。第二遍是上方缩略图+中间大面积的预览。上方缩略图显示了不同的桌面以及全屏的应用,中间大块的预览是主桌面的窗口应用。如果选择不同的全屏应用,就在上方的缩略图中选择,如果选择窗口应用,在预览图中选。
      这里没有谈多桌面,问题会复杂化,比如进入调度中心后看不到桌面2桌面3的应用,你必须从桌面2进入调度中心才可以看到桌面2的窗口应用有哪些。此外,在桌面1使用app expose时,显示了所有桌面的该app的窗口,你点击后可能进入了不同的桌面,也就是说不同桌面的相同app的窗口不能一样。
      1. 如果选择了上方的全屏应用,这时候进入该全屏窗口,选择结束。如果选择了单窗口的应用,选择结束。如果选择了多窗口的应用,这时候需要进行多窗口选择。使用快捷键 control + ⬇️ (如果这里使用快捷键,会有点割裂) 或者 三指下滑进入 app expose 看图二
      图二
      图二
      1. 在app expose 画面后,使用触控板点击来选择窗口。(使用键盘则是使用方向键切换,按return选择。有两步,而且右手需要向上移动)

      © wulimaxh 2021 - 2024