从最简界面的Total Commander谈起 (4月25日更新)


中科大TC讲座后,又和一些朋友谈论TC,想起“最简界面”的事。决心把“计划了很长时间”的相关文章写出来,却发现此篇文章早已经发布,并得到了很好地讨论互动。奇怪的是——我完全忘记这篇文章了!细想原因,可能是酝酿时间太长、思考的印象更加深刻,而“发布”的动作,就没费力,没印象了。所以,旧文重发。 ——2012-11-15

一、引言

1. 缘起

TC好像不能去掉标题栏和菜单栏,有没啥办法可以做到?最好像chrome那么简洁,善用佳软能不能让作者实现这一点?』网友 荒谬的艺术 问。

这样的界面,我认为,并无长期实用的价值。但技术上是能做到的。并且,引申来谈,可以加深对软件和应用的理解。于是,xbeta回复说:『区区小事,岂敢有劳作者?且让我动几下键盘,配制一款最简界面的TC,效果如图,以供参考。』

图:最简界面的TC

所谓“一图胜千言”。上图就是最简界面的TC——就是——完全看不出是TC的TC。这倒和Vim一个光秃秃的窗口,有着同样的风情。套用时兴的句式,就是你看或不看——那些熟悉的界面元素都不在眼前;你知或不知——那些强大的功能就一直等在后面。

如果仅关注答案,问题到此已可结束。但为了背后的道理,并为了免除更多问题,在这一图片背后,可能更需要千言万言的描述。有心体验软件应用精妙之处的网友,不妨慢慢读来。

2. 背景
近一年来,因事务繁忙,几乎没有写过一篇真正意义博文。而同时,也放下了“软件控”的心态——我现在可以在一台初装的Windows新机上,不用Vim而用Notepad,不用TC而用资源管理器,不用chrome而用IE6,不用极点或自然五笔而用智能ABC…… 而心下安然。我在这里想说的不是效率,而是心境。在过去的一年里,我做到了“能放下”。

相应的,我也极少再研究软件的技术细节。所以,过去一段时间中,对需要研究才能回答的问题,我也较少回复。

而今天,某事暂告一段落(“……博客排在本职工作、家庭生活、某事之后” via)后,适逢网友问起TC问题,适逢水木社区TC版无人申请版主而有被关闭的风险,适逢与沙牛探讨如何写出更好的软件应用文章,于是,重试技术,发现功力还在——虽有几分生疏,但也多了几分新意。 且细细道来。

二、如何实现最简界面的 Total Commander ?

1. 基本做法

① 选项设置:众所周知的第一步,就是通过TC的配置界面取消相应元素的显示:配置→选项→外观,取消勾选要隐藏的内容(如工具栏、当前文件夹、状态栏等)。
② 变双面板为单面板:将左右两个面板之间的分割线,向右侧拖动到极限位置。
修改配置文件:增加如下2行,分别消除主菜单、开始菜单,总体实现菜单栏隐藏:

[Configuration]
Mainmenu=%commander_path%\LANGUAGE\none.MNU
RestrictInterface=1

借用 AutoHotkey:“WinSet, Style, -0xC00000, A”——简单一句AHK脚本即可隐藏活动窗口的标题行

2. 补充建议

上面的做法已经足够。但在遇到意外时,很难处理。因此,从实践角度,还有如下辅助建议。

建议①:为TC增加相应快捷键

在TC配置文件中加入如下3行:
[Shortcuts]
CA+O=cm_Config
CA+P=cm_ConfigSavePos
CA+Q=cm_ConfigSaveSettings

效果:
按下 ctrl+alt+o 即可进入配置界面,以备不时之需。
按下ctrl+alt+p, ctrl+alt+q 保存当前的窗口位置和设置,以确保TC下次重启后仍保持最简状态。

建议②:使用完整的AutoHotkey脚本

功能:按 win+F11 ,使当前活动窗口的标题行,在隐藏/显示状态之间切换。——该脚本值得喜欢折腾程序界面的所有用户关注。 (感谢Lin、xcv58、xell)

#f11::
WinSet, Style, ^0xC00000, A
WinSet, Style, ^0x40000, A
return

注:
WinSet, Style, ^0xC00000, A 用来切换标题行,主要影响是无法拖动窗口位置。
WinSet, Style, ^0x40000, A 用来切换sizing border,主要影响是无法改变窗口大小。

三、从最简界面的 Total Commander 看到更多

1. 软件的定位与发展阶段

网友希望TC能像Chrome一样简洁。这两者都是优秀软件,互相参照十分有益。但同时也要看到,它们在定位、成熟阶段方面存在很大不同。

定位:Chrome 定位于普通用户(所以,安装目录也不容易更改),默认使用方式(配置、界面)适合多数用户;而 TC 从来没期望成为多数人的工具,即便是追求效率的用户,也未必全适合TC。

个性化方式:Chrome 往往是通过扩展、参数为 Geek 实现个性化,而非内置在程序本身的设计中,并且其优先级永远排在第二位。而 TC 则在增加任一特性的同时,便提供了启用该特性的不同方式。即Chrome的个性化是“有余力才做”,TC的个性化则是原生的基因。

发展阶段:TC是“超成熟”产品,它不但到达了自身的极致,也达到了此类软件的极致。这种极致,带来了两种看似矛盾,实则合乎辩证法的结果。一方面,软件难有激动人心的新特性,作者为难,用户也略感失落。另一方面,即便是最资深的用户,也能在遇到新需求、做新研究时,从旧特性中发现新的解决方案。也就是说,软件本身的进步空间近乎于无,但留给用户的发挥空间却近乎无限。——这种境界的软件,唯 TC、AHK、Vim/Emacs 而已;三者之中,又以 Vim/Emacs 为最。而 Chrome 虽然短期发布诸多版本,但远未成熟。这既决定了它的操作个性化不可能满足Geek的需求,又预示了它未来发展的不可限量。

为了让非TC、非Vim用户也能直观理解“极致”,再举几例:
* BlackBerry的浏览器地址栏:按一下 backspace 键,www 就会整体删除——不用连续按3次。
* 自然码输入法:“shift+数字”输入符号时,左右shift键可区分定义,比如左shift生成全角符号,右Shift生成半角符号。

其实,发展阶段不仅要看产品自身,还要看该产品类别的大环境。随着跨平台、搜索技术的兴起,我们可以更直接面向信息,面向应用,而减少对“文件”的依赖。未来的IT用户,会管理知识,管理日程,管理联系人……即管理内容,但几乎不用管理“文件”。如果不明白这点,请向后看:今天的我们,在管理文件,而不需要向初期计算机用户那样管理磁盘、磁道、扇区…… 而浏览器,尽管看起来已经多年没有重大更新,但有了敢于重新定义媒体格式甚至互联网协议的 Google 介入,仍然可能发生重大改变。

产品的个性化程度、成熟度不同,也就决定了寻找问题的方向不同。一类只等期待作者改进,一类却给了用户无限空间。这和我以前总结,“Windows下的好软件是选出来的,Unix下的好软件是配出来的” 也有相通之处。

2. 更理想的世界是什么样的?

(1)观察事物有两个视角

曾有一些读者误以为我是“编程高手”,当他们得知我完全不懂编程、不会开发后,很奇怪我为什么也能对软件理解这样深刻和准确。道理很简单:观察软件——其实不仅是观察软件,观察事物都有两个视角:除了“制造者的视角”,更有一个“使用者的视角”。从量上,我们的直觉就可以判断,后者的数量和频率,都高达前者的数十甚至百千万倍。从性质上,使用才是根本,因为一切生产的最终目的,都是为了满足人类的需求。而这个过程,正是在“使用”中实现的。但长期以来,后者总得不到足够重视。其原因,与产品复杂之后的信息不对称有关,也与实际话语权、话语被稀释的程度有关。可是,越因为如此,我就越觉得后者的重要。或许,这一倾向,在我的毕业论文中已有体现:关注可持续发展,不从生产者角度,而从消费者角度。

(2)所知少,也可以所见多

回到正题,就是:要了解软件,未必要懂开发和编程。只要思维清晰,不具备某些知识也可能成为优势——因为相比他人,你减少了束缚,消除了知障,可以直面一个理想的世界。

A 看热键与鼠标手势。当你面对多个程序的热键冲突、自定义程度或强或弱、对全局热键的争夺…… 关于鼠标手势,大多数软件不支持,各浏览器又要分别定义方案,分别增加原生代码或借助扩展实现…… 这时,我会认为:操作系统(比如Windows)应该提供一个中间层。让它站在用户和应用之间,对用户的动作——包括鼠标的点击、拖拽、手势,包括键盘的普通输入、连击、长按、组合——做出翻译,在不同情况下(比如视激活窗口,视打开的程序,甚至视时间),匹配到各程序的不同内部命令上。

B 看输入法和翻译软件。再如,输入法与编码规则、词库应该是分离的。举例,王永民老师的最大贡献在于五笔编码的发明和推广;周志农老师则既在双拼、自然码的编码方面产生了巨大影响,又做出了强大的输入法平台。词库,根本应该是语言学家的事。同理,翻译软件或词典软件,也应该是程序平台与词典分离,且形成标准。否则,个人软件要么无法得到词典,要么只好不遵守版权规则。所以,当我听到“喜欢xx输入法因为大词库”“喜欢xx词霸因为词典多”这类说法时,我知道这个世界距离理想境界还很远。

C 看blogger有所为有所不为。再如,我很长时间都拒绝在博客上添加“分享”按钮的建议。理由是,这是用户的操作,应该通过用户浏览器的功能(或扩展、小书签)实现,而不应由作者提供。作者只应当提供内容。正如我在邮件中说过,所谓的blogger,核心是writer,其次也应该是editor。如果ta成为了html,css,wordpress,域名注册,空间购买的专家,那真是人力的极大浪费。世之不如意事,十常居七八。当不能把这些当作常态,要看作迫不得已,要看到理想境界。现面,我对css,都要产生厌离之心了。我认为,理想的情况是,wordpress有一套规范的语义标签,blogger只须关注这些,无须扩展到css。然后,读者无论访问网页,还是在rss阅读器中,都可以调用独立第三方或自定义的css,按照自己的样式来阅读。

(3)AutoHotkey 的重要地位

再次回到正题,我认为 AutoHotkey 和 StrokeIt 这样的通用软件,对 Windows 平台是一个非常重要的补充。它们不仅是一款软件,而是为热衷自定义的用户,创造了一种新的Windows应用结构,即实现了上文中提到的介于用户和程序之间,从动作到命令的解释层。所以,尽管实现Gvim的透明度、置顶、全屏有专门的扩展,我仍采用ahk方案。因此,在实现TC无菜单化的过程中,我也很满意TC没有提供这种违背Windows标准窗口风格的功能,而安心用万能的ahk实现。正如在某文中所说,「圣人者,方而不割。君子者,望之俨然,即之也温。AutoHotkey者,入门易而妙用无穷,在用户与windows程序之间飞舞往返,行天使之善,精灵之魔力。」

(4)总结

理想世界不是一个新话题,早就被多位哲人思考过。因此,我也没有新答案,而是对先人观点的重述和重新理解。用4个字概括,就是 提倡分工。原因:分工 → 专业化 → 更高效率。

既是旧观点,那就可以找到渊源。知识丰富,了解IT新技术者,会看到“内容与展现分离”(separation of document content from document presentation)。新知识少,但读过旧经典者,会看到200多年前《国富论》的“劳动分工论”(Division of labour has caused a greater increase in production than any other factor. The Wealth of Nations by Adam Smith),甚至更早中国先贤的思想。这再次证明:所知少,并不妨碍所得多;关键在是否思考,是否领悟。

3. 实用的TC界面是什么样的?

仍在写作中……


扩展阅读:
* TC/gvim去标题栏/置顶/透明的au3脚本 by happyTC:本文的ahk脚本比较简略,但有些TC window style 和它的 扩展Style没有去掉完整,所以发个完整的au3版出来。
* Minimal TC interface

文章更新历史:
2012-11-15:旧文重发。
2011-04-25:完成第2部分。
??:初稿。


发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据