写在前面
写这篇文章前2年,我是一个 Linux 桌面用户,用户画像是折腾型的,非要把各种主流发行版、桌面环境都体验一遍。这就导致我浪费许多时间在表皮上,没有利用 Linux Kernel 的代码去深入去学习计算机原理。
从功利性角度来说,那段时间确实浪费了。但沿途的风景也是挺好看的,在折腾的过程中特别中意平铺窗口管理器。后面由于工作需要,许多应用只能在 Windows 上运行,于是就慢慢切换到了 Windows。但是切换过程中,想把 Linux 社区上的许多优秀的设计带到 Windows 上,于是仿照许多博客文章的《My Linux Setup》写一篇《My Window Setup》。
硬件上,我在两台电脑安装了 Window 10,一台是台式机工作站,一台是笔记本。台式机上的 Window 是 PVE 的一台虚拟机,我分配了 16G 的内存,绑定了所有的大核(一共 6C12T)。笔记本是联想拯救者,CPU 是 AMD R7-5800H,内存 64G,Nvidia RTX 3050 的显卡。
Window Manager
快速切换桌面
按理说,Window Manager 这一名词更多出现于 Linux 社区,例如 i3wm、awesomewm 等。这些平铺式窗口管理器都有一个共同点,就是通过按住一个 Meta 键(一般为 Alt 或者 Window)再按住数字键,实现切换虚拟桌面。快速切换虚拟桌面能提升很大效率,特别是在只有单个屏幕的情况下。
拿一个全栈项目举例,这个项目涉及到了前端、后端、APP。那么在上面虚拟桌面上,我就可以做如下部署:
- D1 桌面:浏览器(检索)、其他常用小工具
- D2 桌面:VSCode(前端)、浏览器(预览前端)
- D3 桌面:JetBrains IDEA(后端)、Terminal(SSH 到运行开发环境的 Linux 主机)
- D4 桌面:Android Studio(APP)
然后只需要按快捷键 Windows+X
(X
是数字),就可以切换到相应的桌面。例如按 Windows+3
,那么就切换到了 D3 桌面。社区已经有大佬使用 AHK 做好了 i3wm 的“模拟器”:https://github.com/yalibian/i3-windows.git
一些使用体验:
- 根据我的手指长度,按住 Window 键再按数字4已经有些不适应了,所以我一般就开4个虚拟桌面。
- 一个虚拟桌面放置两个窗口是最高效率的,直接快速无脑的通过
Alt+Tab
快捷键切换焦点。
快捷键
除了切换虚拟桌面外,平铺式窗口管理器还会有一些功能也是很值得借鉴,例如快速启动程序、关闭程序、全屏等。下面所述的 Shortcut 都是需要配合 Meta 按键,先说一般平铺式窗口管理器常见的按键绑定:
- 关闭程序:一般会绑定到 q 键(意为 quit)
- 启动程序:有的会绑定到 p 键(可能是 program 的意思),i3wm 默认是绑定到 d 键(launcher 程序名为 dmenu),我个人偏向使用 d 键,左手就可以完成操作。在 Window 上使用 PowerToy.Run 来启动程序
- 全屏:大部分情况下,在 Windows 上对应的是最大化操作,绑定 f 按键(意为 fullscreen)
- 打开终端:绑定 Enter 键,打开一个终端窗口
关于 d 键,我个人更偏向于能够有一个 Dashboard,能够快速看一下信息,如 Todo、系统资源、媒体信息,剪切板以及一些贴纸等,顶部还有一个搜索。看看能不能挖个坑,自己写一个。
此外,使用 ChatGPT 的频率越来越高,于是我把 a 键(意为 ask)绑定为启动 ChatGPT。交互界面使用的是 ChatGPT-Next-Web,Edge 浏览器可以把网页作为应用安装,这样就会有一个快捷方式,查看快捷方式的属性可以得到启动命令,再把按键绑定到启动命令就可以了。可以查看我的配置。
TrafficMonitor
很多平铺窗口管理器的 Unix Porn 都会带一个 StatusBar,用来监控系统资源,比如 CPU 占用、内存占用、网速、时间等。类似 MacOS 顶部的状态栏。
有时候能够一眼快速看到 CPU 占用,还是有一定的用途,比如程序跑起来了,大概会占用多少 CPU;如果要打开下一个程序,会不会卡等等。
Windows 上其实有很多软件能够显示实时的系统状态,鲁大师、各类加速球等,但毕竟是商业软件,时不时蹦出一个广告什么的,不可控。个人还是偏向能够用开源替代。于是就找到了TrafficMonitor 。
KDE Connect
互联神器。不仅限于手机和电脑互联,可以电脑和电脑之间互联。
LocalSend
KDE Connect 会有一些小 Bug,比如两台 Windows 之间传文件没有任何反应。
于是找到了 LocalSend,这个软件是基于局域网的文件传输工具,支持 Windows、MacOS、Linux、Android、iOS。真正的全平台。
不仅是文件,文本也是可以传送的。AirDrop 开源替代。
PixPin
在 V2ex 冲浪的时候发现的免费截图工具。 功能很全,除基本的截图功能外,支持 OCR、标注、贴图、GIF 等。
PowerToy
PowerToy 是一堆小工具的集合,目前主要在用 PowerToy.Run 作为应用启动器、无界鼠标。
无界鼠标就是两台 Windows 共用一套键鼠。前身是微软无界鼠标,先集成到 PowerToy 里面。但我这边开了无界鼠标之后,Ctrl + C
必须按两次才能复制。
NoMachine
远程神器,目前还没发现能够提供同等体验的开源软件。优点如下:
- 控制端和被控端都是跨平台的,且可以共存。即 Linux、MacOS、Windows 都是可以同时作为两个角色存在。
- 支持用 H.264 的方式编码。相比大部分 VNC 软件使用的 TurboJPEG 方案会流畅一些。可惜的是没有支持 H.265。
- 控制 MacOS 的流畅度也不错。
Nushell
PowerShell 在默认配置下,没有启用 Ctrl + D
退出终端这个快捷键。而之前用 Linux 的时候,会习惯创建终端窗口,用完就 Ctrl + D 关闭。为了这个习惯,于是找到了 Nushell。
除此之外,PowerShell 默认的 CMDLET 又臭又长,适合写脚本而不适合交互。Bash/Zsh 等用来写脚本感觉差点意思,而且历史包袱在,在设计理念没有 PowerShell 强大。
Nushell 是一个挺折中的方案。
- 管道传递结构化数据。这点和 PowerShell 一致,而 Bash 等是传递字符串。在涉及复杂数据处理的时候,这一点还是很占优势的。
- 原生支持 JSON、YAML、SQLite、Excel 等,更方便写脚本了。
- 插件系统
以上是优点,说说我使用过程中感觉的缺点:
- 把 POSIX 的重定向符号给干掉了,即大于号、小于号不能用于作为重定向符号,而是运算符
- 一些 Bash 常用的命令缺失,例如
cat
,而在 nushell 上要使用open
命令代替 - 脚本语法上还有一些不习惯,一般函数参数采用括号围起来,而 Nushell 采用
[]