说到 TouchBar,能够用到的场景不是很多,有一点儿鸡肋。用得稍多的是调节音量和亮度,其他一些比如 Safari 里的切换 tab、输入法的词汇提示、代码编辑器的快捷运行等等基本不大会用。一般使用 MBP 的 power user 难道不是快捷键都用得飞起吗?所以希望苹果能够还我们 esc 键,比如可以把 TouchBar 缩短一点,留出 esc 的位置来。我甚至也不介意把触控板稍稍缩小一点点,然后还原第一排按键,把 TouchBar 往上挪一挪。
UI 与交互
高光和投影
Mac 精美的 UI 对外貌协会充满了诱惑。特别喜欢窗口底下的那一层弥散投影,在凸显 UI 层次的同时提升了整体质感,微妙轻盈。这次使用还注意到窗口四周还有一层高光和描边,光线感更加强烈,与背景的区分也更加明显,不会和阴影以及深色的背景糊在一起。
Mac 窗口上的半透明磨砂材质也非常惹人喜爱。换上色彩鲜艳的壁纸,缤纷的颜色透过半透明的材质弥散开来,像雨天透过玻璃看外面朦胧的世界一样。这种效果已经被微软在其 Fluent Design 里头抄去了,在 Windows 下也可以体验到。Windows 下这个叫「亚克力」材质,在 UWP 平台下有 API 可以调用。Windows 的亚克力没有 Mac 的高光和弥散投影,看上去像薄薄的一层塑料片,但是和 Mac 比起来高档感还是差了一点点。我觉得可以先把投影加上。现在 Windows 下的投影给得太小气,而且略显生硬,不够弥散。也许亚克力这种材质本身不会产生很大的投影效果?可是人家就是投影嘛,还是希望快快加上。
更加遗憾的是现在精品 UWP 应用还是太少,连最常用的系统自带资源管理器都还是老旧的 Win32 UI。 很多找出来的精品 UWP 应用似乎都是有情怀的个人开发者的作品。macOS 在整体 UI 上要统一和谐得多。现在许多新的桌面 app 为了方便多端复用、降低成本用基于 Web 技术的 Electron (或者其他什么框架)来开发,比如钉钉、Visual Studio Code 等等,专门做面向普通消费者的原生桌面应用似乎已经很少了。
Mac App Store 里的推荐界面印象特别深刻。最近现代桌面 app 的 UI 好像比较流行降低按钮、开关等组件的比例,加入更多高清大图,营造沉浸式的体验。比如这里 full bleed 的图片像印刷的杂志一样视觉冲击力非常强。
Windows Vista 出来以后玻璃材质很流行,Mac 的 Dock 应该还是 3D 玻璃的形状。那个时候还记得在 Windows 下用 Stardock 家的 ObjectDock 还有 RocketDock 之类的软件做美化。除了放在底部的 Dock,还有放在屏幕右侧的侧边栏。Windows Vista 还自带了右边栏。那个时候就喜欢在屏幕上放上一大块“玻璃”,挂上日历 📅 、相册等等小部件(Widget,这个癖好保留到了现在用的 Android 系统)。这些 UI 基本都遵照拟物的风格。在 Dribble 上常常惊叹 UI 设计师们的 PS 功力,一个小小的图标可以画得像真得一样。后来记得突然 iOS 7 发布以后刮起了一阵扁平风,Windows 8 推出了 Metro 设计系统,搞大色块磁贴。阴影、光线和质感全没了,记得 iOS 7 里的几个自带图标(好像是语音便签)之类丑得难以置信,像是设计师随便划拉记下做出来的图标,一点儿不走心,直到现在还是觉得丑。
后开 Google 推出了 Material Design,微软推出了 Fluent Design,都突出了光影效果和质感。Material Design 取纸片的隐喻,但其实还是类似厚纸板的东西,普通一张薄薄的 A4 纸似乎也不会形成那种光影的质感,所以还是一种在只存在于数字世界的特殊物质,只不过从现实世界汲取灵感,遵循一定的物理规则,用户能够借助现实世界的直觉更加容易地区分 UI 组件之间的关系。
最近移动端 app 好像不怎么流行 Material Design 这种重阴影了,许多 Google 官方 app 里卡片组件的阴影被线框代替。在小屏上卡片这种组件可能会显得比较重,喧宾夺主。所以说,Material Design 可能在大屏上效果会更好,而大屏上的光影质感还是 Mac 做得最为优雅。
前面提到曾经一度热衷于在 Windows 上装模拟仿照 Mac 的 Dock 软件。那么正宗的 Dock 体验怎么养呢?感觉下来颜值挺高,逻辑复杂。固定在 Dock 上的图标打开以后有的时候会在右边以窗口预览的形式显示另外一个小图标,这个窗口预览图标和原来固定在 Dock 上的图标是啥关系似乎并不是非常明显,至今也没完全搞清楚,没有 Windows 里头任务栏一一对应的关系直截了当。Dock 也没有 Windows 那种预览标题和鼠标悬浮现实缩略图的功能,在易用性上是要差一些的。不过 Dock 上标志性的阿拉丁神灯特效和风筝特效还是看起来非常惊艳。讲道理 UI 动画一般比较微妙含蓄,这么浮夸的动画看起来倒也自然酣畅,不低级油腻,真是非常经典的创意了。
开发体验
据说程序员标配 Mac,实际体验下来跟 Windows 差不太多,可能要略好一点。
终端
好的地方在于 Mac 有 Unix 的基因,在终端下可以无缝使用 bash,很多情况下跟 Linux 终端体验比较接近。比如可以直接在终端里使用 open 命令,其效果和在资源管理器(哦不对,是「访达」)双击打开一样。Windows 10 的 WSL (Windows Subsystem for Linux) 也可以提供 Linux 终端体验,但是比较黑魔法,比如要实现前面的 open 命令还得间接得去调用 PowerShell 或者 cmd。印象中 PowerShell 蛮优雅,但是一直没什么动力去完整学一遍,毕竟平时 Linux 服务器用得比较多,PowerShell 用得不多,学了也容易忘。
Mac 下默认的终端模拟器已经很好用了,后来一直用 iTerm2。这两个软件美化起来都非常简单,直截了当。终端我比较喜欢用 sindresorhus/snazzy 主题,很容易就用上了。
相比之下 Windows 下的 CMD 和 PowerShell 要做美化麻烦得多。中文 Windows 控制台默认用的宋体真的是难看至极,换字体的菜单找不到装的编程字体,微软雅黑也没有。后来经过一番搜索才知道可以用 更纱黑体 。控制台的配色方案也很难切换,后来又是经过一番搜索得知官方有 colortools 工具可以下载使用。哎,难道换个主题不能直接集成进去?用了 colortools 以后重新打开控制台主题会消失。这个问题至今还未解决,也实在是麻烦得不高兴搞了…
不过还好,Windows 下也有不少第三方终端模拟器,比较喜欢的包括 ConEmu,hyper 和 Fluent Terminal。ConEmu 有点儿像 iTerm2,可以设置的选项非常多,不过用了老旧一点的 Win32 的 UI,把条条框框隐藏掉一点会稍微好看一些。hyper 是 Electron 的 app,颜值比较高,但是 Electron 费内存。Fluent Terminal 和 hyper 都是基于 xterm.js,但是套了个 UWP 的壳,加了磨砂玻璃(亚克力)的透明效果。(另外还有一款 Terminus 也支持磨砂玻璃效果。我一度觉得磨砂玻璃非常适合做终端的背景,实际用下来文字可读性可能会稍微变差一下,很多主题在磨砂玻璃的背景上效果会大打折扣。)Windows 下的终端软件在美化、自定义这些方面倒也比 Mac 差不了多少,但用的时候各个软件都有各自的毛病。iTerm2 好像用 tmux 的时候好像也遇到了点毛病,但是比 Windows 下的兄弟们整体要顺畅点。
还有一个小细节,Mac 键盘上有 cmd 和 ctrl 两个键。刚从 Windows 转过来会有一点点迷糊,总结下来 Windows 里平时常用的 ctrl-c、ctrl-v 对应的是 Mac 下的 cmd 键,而终端里则是对应 ctrl-c(中断)、ctrl-v(vim 的 block 模式)。不知道 Mac 下的 cmd 和 ctrl 是从哪儿来的,对于终端使用来说十分优雅地解决了快捷键冲突问题。在 Windows 下往往需要按 ctrl-shift-c 之类的,不同终端模拟器默认快捷键还不一样,容易错乱,有的时候得按好几下才弄对。
在 Mac 下试了用 homebrew 直接装在本机的方案。homebrew 可谓大名鼎鼎,连我这个 Windows 用户都早又有耳闻(不过我本来就知道很多 Mac 用户都不知道的 Mac 软件)。homebrew 的体验也不是一帆风顺,当然这跟网络环境有一定关系。homebrew 的一些命名也是挺有趣的,什么 brew 啦,pour 啦,bottle 啦,感觉作者对喝啤酒 🍺 情有独钟。上次新闻听说他在 Google 面试由于无法在白板上反转二叉树被拒了,后来发 Twitter 吐槽了一番 …
总之经过一番摸索,学会了要愉快地使用 homebrew 得做完整三个配置,一个是更新 formula 索引
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
brew update
好像花了几个小时也没搞定,后来用了 Laravel Valet 。之前琢磨 Laravel 开发环境的时候有注意到这个为 Mac minimalist 准备的工具,当时看文档也没完全搞明白怎么回事儿。Valet 本质上依赖 homebrew 直接在 Mac 系统中安装依赖软件。使用 valet use php@7.2 命令可以方便地切换 php 版本,省得我们自己去折腾手动链接二进制文件。Valet 的 park 和 link 命令甚至自动接管了 nginx 的配置,为 Laravel 开发提供了开箱即用的体验。Valet 可以说是继承了 Laravel 框架充满魔法的风格,使用起来非常神奇。