背景

从研究生毕业开始,我在过去的七年都在使用Mac作为自己主要的工作机器。一开始是追随家里人,后来则形成了贯性。今年年初为了回国搬家方便,我卖掉了自己的iMac,换上了新的Apple Silicon驱动的Macbook Pro。在这七年期间,我也间歇性地使用过Windows或者Chromebook,但是并不是作为主力机器使用。

对于Linux,同很多不是计算机科班出生的人一样,我最初的接触方式是通过树梅派。但是树梅派的性能确实太弱,不适合日常使用,因此树梅派的桌面环境我接触的很少。很快,树梅派就被我装上了没有GUI环境的操作系统,扔到家庭网络中作了一个小型的homelab,也是从这个契机,我接触到了更多的关于容器、虚拟化的知识,并且购入一台小型的二手主机,在上面搭建了一个ubuntu server,用于跑一些简单的开发环境。对于Linux的桌面环境我并不熟悉,最日常工作还是在Mac OS上完成的:包括文书的撰写,平常的网页浏览,以及大量的阅读。我最接近于使用Linux桌面的经验,也是使用套娃了Chrome OS,利用Crostini容器运行Linux的GUI软件。

最近我发现,除了PDF的阅读之外,我的大量的工作其实都是以纯文字的方式进行的。不管是数据分析、笔记记录还是文章书写,我的整体的工作流程已经越来越贴近Kieran Healy所言的基于纯文本(Plain Text)的流程(https://plain-text.co/)。 我的几乎所有的写作都已经转移到了某种形式的markdown格式中。非文本细读的数据分析基本上都是在R和Python中完成。甚至我常用的幻灯片也基本上是用beamer,或者在拥有模板的情况下使用Pandoc转化成PPT,最后再用PowerPoint进行微调。加之基于Electron的多端软件的发展,我开始想测试以下的情况:如果我将所有的工作流程都转移到一台Linux的笔记本上,是不是可以成功?

天气渐热,MBP 16的重量着实感人,背着到处跑确实也不方便,家里正好有一台被家属淘汰下来的2014年的Macbook Pro 13寸备用机。我便决定来试一试,在2022年的今天,Linux作为桌面环境,究竟能不能满足人文社科的研究使用?

软件环境

Linux分发版本选择

这台Macbook Pro 13毕竟是一台八年的老机器。它的系统支持停留在了Mac OS Big Sur。在跑Mac OS Big Sur的时候已经有一些力不从心,经常发热和运作迟缓。

在Linux的发行版的选择上,我选择了Debian分支下基于Ubuntu的Pop OS。主要原因是之前对于Ubuntu的接触更多。Pop OS提供了很多基于Ubuntu的优化,在整体的UI上也比Elmentary OS更加讨我的喜欢。我选择了Pop OS 22.04 LTS。

软件选择

我常用的软件包括以下的部分:

  • 浏览器:Firefox和Chrome。在Mac OS一直使用Chrome为主,Firefox为辅,这次决定使用Firefox作为主力浏览器。

  • R和Rmarkdown的IDE环境:Rstudio。Rstudio基于Electron,有Linux的客户端。Rstudio也负责Rmarkdown的修改和渲染。但是长一点的,不带数据分析的Rmarkdown文档,一般会在VS code中进行写作。

  • Python和其他的文本编辑器:VS code。对于短的markdown文本(2万字),以及Python相关的代码,使用VS code作为IDE。不得不说VS code真是影响非常大的文本编辑器。虽然很多人吐槽VS code就是一个浏览器套壳,但是VS code也有很多优点:比如提供了一个非常完善和易用的插件系统。这篇文章就是在VS code中写作的。

  • 笔记软件:Obsidian。笔记主要使用Obsidian进行编辑和查看,但是因为Obsidian也是基于markdown,所以也常用VS code进行编辑。Obsidian也支持Linux平台,相关的笔记通过dropbox进行备份和同步。

  • 长文本编辑:Typora。很好看的markdown文本编辑器,也支持pandoc的简单输出。不会使用Typora写需要引用文献的文档,但是会写一些新闻稿件,或者是其他工作用的稿件。

  • 字典软件:GoldenDict。GoldenDict是从我大学时期就开始使用的软件。在Mac OS上,GoldenDict比较不稳定,因此一直用的是收费的EuDict。现在在Linux可以用回GoldenDict,使用自定义字典(韦氏、AHD和SOE)。

  • 储存服务:Dropbox。用于移动端、Macbook和这台机器之间的数据同步。

  • 代码管理:GitHub Desktop。官方没有进行维护,但是GitHub上有一个个人项目,提供了Linux桌面端的支持。当然,实践中也可以利用VS code或者Rstudio内置的Git模块进行改动。

  • 文献管理和阅读:Zotero和系统内置的Pdf Reader。文献管理主要使用Zotero。Linux上一直缺少一个合适的pdf阅读器。Zotero 6的更新解决论文阅读的大问题。我在电脑端只会作pdf的轻阅读,和已经阅读的文献的查阅。配合zotfile,论文附件储存在了dropbox。

  • 启动器:Pop OS launcher。系统自带的一个非常基本的启动器,同Mac OS上的Raycast和Alfred都没有办法相提并论,暂时没有想去找另一个第三方的替代。

我基本上会花费一天80%的时间在以上的这些软件进行工作。

  • 其他的辅助软件:tweaks(用于对于GUI界面进行微调);Indicator Sticknotes(类似于Mac OS和Windows上的便利贴);FontFinder(安装新的字体);Clash X Pro(网络控制需求)

不工作的软件

  • Fcitx: 上手后发现系统内置的iBus拼音输入法出现了卡顿的问题,想更换为Fcitx。但是Pop OS上对于Fcitx的支持也有问题。最后还是使用iBus,在出现卡顿的时候对于iBus进行重启。中文输入法一直没有在其他平台上那么灵敏。

  • 各种即时通讯软件:不用了。方便肯定是更加不方便了,但是也更少地会被这些软件所干扰。

变化与不变

资源的节省

首先感受到的一个变化是,这台八年前的电脑变得更加的凉快和安静了。比起越来越臃肿的Mac OS,轻量的Linux对于老机器显然要更加友好。一个例子是,Zotero在Mac OS上通常要占用800MB以上的内存,但是在linux上,如果不打开pdf,可能只有100-200MB的内存占用。(但是zotero还是有内存泄漏的问题,内存占用会不断增加到600MB)日常的应用占用大约在6GB作用。在试用了一天之后,我觉得这台机器还能作为非常合适的备用机,也决定把已经鼓胀的电池进行替换。

发热与续航

该热的时候还是会热。M1 Pro只有在进行长时间的并行计算的时候,才会出现轻微的发热。我一般会设置8个大核做运算,剩下的两个小核来支持我同时来做一些文书相关的工作。对比之下,虽然日常使用凉快了很多,这台8年前的Macbook受制于处理器,在进行大型运算的时候还是会发热。这是自然规律,不可能因为软件的变化而变化。如果对比这台MacBook Pro和MacBook Air M1的Geekbench 5的分数,这个差距就很明确了:这台8年前的Macbook Pro的多核得分是1651,而M1的单核得分是1752。

在使用原先都已经鼓包的电池的情况下,续航在3-4个小时之间。换上了新的电池后续航应该会有不少的增加。

需求与习惯

就像上面所说的,如果Chromebook已经可以满足很多人的选择,那么Linux也可以满足很多人的日常工作,甚至是更加复杂的创意工作。但这也得益于现代浏览器已经成为了一个新的平台。Chromium提供前端的页面渲染,node.js提供一个稳定的JavaScript running time。这两者在Electron中结合在了一起。

上面列出的软件中,VS code、Rstudio、Obsidian、GitHub Desktop、Typora都是基于Electron。而Zotero则是基于Firefox。可以说,我其实只是打开了无数的、单独定制过的浏览器窗口在完成自己的工作。

Linux和Mac OS之间的一些在快捷键上有不同的设置。这个反倒是需要刻意习惯的部分。

几个典型的工作流

以下是我典型的几个工作流程。

博客的书写

一个典型的博客的书写流程如下:

  1. 首先安装Jekyll生成网页的基础架构,类似的还有hugo等方案。安装完后只需更新Post。
  2. 将相关的静态网站commit到github page repo托管。并设置好域名解析。

以上的两个步骤一般不会要重复改动。

  1. 添加Yaml抬头后,按照markdown格式书写相关的博客内容。
  2. 通过Github Desktop将改动提交到相关的库。
  3. 检查网页效果

这篇博客就是在这个流程下完成的。

论文的书写

论文的书写要更加复杂一些。但是基本上也是相似的流程,但是各个步骤之间常常会重复。

  • 在Rstudio中新建Rmd文件,列出文章大纲。
  • 在zotero中阅读文献,列出的笔记录入obsidian。
  • 阅读obsidian中的笔记,讲相关的部分摘录,成为文章主体。
  • 如果需要与其他人一起合作,则将相关的纯文字部分复制到google docs进行协作。也可以通过一个R包:Trackdown来控制相关流程。
  • 文章初步定稿后,从zotero中导出引用书目作为bibtex文件。
  • 检查bibtex文件中可能的问题,比如中文引用是使用拼音,还是保留中文。
  • 准备docx模板和引用格式所需要的csl文件。
  • 在Rmarkdown文件中补充citation key,并通过rmarkdown或者officedown包knit成为docx文件。
  • 需要时使用Word后续的加工。

如果有数据分析的部分的话,我一般会保留一个单独的R文件,而不会将代码合并进入RMD。除非这个Rmd只是简单的数据分析,而不包括比较长的论证。

更详细的方式也可以参考https://plain-text.co/

The Rub

当然,切换Linux作为主力电脑还有一些问题。这是避免不了的。

首先,有很多即时通讯软件无法使用,比如微信。虽然微信的优麒麟客户端提供了一个deb的打包文件,但是会篡改系统文件(https://v2ex.com/t/858659),所以我并没选择。像我之前所说的,聊天工具的缺失不一定是个缺点。

其次,很多在Mac OS上使用的小的定制化软件不存在替代,或者说迁移成本比较高。比如我常用的代码片段管理软件Snippetslab,代码块都是通过icloud进行同步。

脱离了Mac OS,计算机与iPad和iPhone之间的联动自然也就变弱了。没有了airdrop,airplay和handle off的功能在日常生活中确实会造成一些小的不便利。

最致命的是一个硬件支持问题:因为MacBook Pro 2014是retina屏幕,日常会开启200%的缩放,在这个时候如果再外接一个屏幕,则对于外接屏幕的支持不佳,经常出现屏幕尺寸和缩放的识别问题。

后续计划

这次安装Linux的时候,顺便给电脑清理了一下灰尘。发现电池出现了鼓包。因为还是决定保留一台备用电脑,所以还是保险起见,订了一块第三方电池进行更换。

另外,为了在处理一些计算类型的任务时发热,我本来想通过内网穿透暴露一个studio server的服务端口。但是开源版本的rstudio server不支持https,而我使用的内网穿透服务已经停止了对http转发的支持。我已经尝试了使用Apache2进行包装,但是因为证书冲突没有解决,导致rstudio server处于一个不可用。下一步我准备尝试使用“remoter”包,或者干脆安装一台Mac OS的虚拟机,用远程桌面进行连接。

结论

Linux让这台老的Macbook焕发了第二春,但是它依然只会是一台好的备用机,肯定不会是我的主力机,特别是在我还有一些计算需求的时候。我不会愿意用它替换新机器,就像我不会选择8年前的手机一样。即使我的整个工作流程同8年前可能并没有什么差异,日常使用的这些软件也将性能都吃走了。计算机毕竟是工具,在可以不将就的情况下自然是不将就。

但我也发现我不需要那么讲究。这次实验也给我带来了两个主要的收获。首先,当一个人的工作流程越是贴近与纯文本,她就越容易在不同的平台间迁移。既然我能够在Linux下完成这些工作,这也意味着我一定能够在Windows下完成类似的事情,而且应该会完成得更加的顺畅。毕竟,工具并不会自动的生成思想,完成工作。

其次,它出乎意料的成功带给我的问题是:我真的需要在惯性下支付苹果税吗?日常工作中,我对于手机、平板和电脑间的无缝连接并没有太多依赖。手机、平板和电脑还处于各司其职的状态。现在Apple对于我的吸引力越来越在硬件环节上。ARM架构的处理器真的提供了一个性能、发热和续航之间的平衡,非常适合移动平台的使用。我并不需要一台笔记本具有最高的性能。相反,计算环境完全可以迁移至台式机和云端。如果是这样的话,那么我对移动设备的需求就会进一步的降低。

我的下一台计算机会选择Mac吗?大概率是,不过选择的产品可能就不再会在专业线上了。