有读者希望看到我的平铺式窗口管理器i3的设置。
首先解释下下什么是平铺式窗口管理器。平铺就是窗口都不重叠,而是自动的被调整大小使得它们能够刚好占满整个屏幕。
一个经典场景就是,左边窗口看代码,右边窗口看文档。Windows和macOS也可以实现类似功能,但是需要用户手动调整窗口大小和位置。我这里是简化描述。平铺式窗口针对特定工作流进行了很多优化。不是普通桌面加几个插件就能模拟的。
之前我试用过很多同类软件,i3不是最灵活或者最强大的。我最后选定i3是因为其历史比较悠久,用的人多,比较稳定,文档也不错。我原则是集中优势兵力打歼灭战,不愿意在非核心的工具上花太多时间。
Linux我用的是Debian Stable版本,这也是我用i3原因之一。默认就有i3的安装包了。虽然版本老了点但是和新版的配置也是兼容的。我很讨厌切换到新环境后为了某些不需要的新特性重新配置工具。
具体配置见文末。技术细节不展开了。i3的文档写得很好,网上相关的文章可以说是多如牛毛。没必要去重复同样的内容。
我的配置的不同之处:
- 我公开的配置和实际配置不同。实际的配置是在
.xinitrc
中 调用一个bash脚本基于一个base设置动态生成i3配置。目的是根据不同机器优化i3。我厌恶在不同电脑上反复调整同一个软件。技术细节太复杂就不讲了。 - 和一般人想象的不一样,我讨厌记快捷键,不常用的功能也不值得去优化。所以大多数功能都要按两个到三个键,而且第一个键基本都是一样的。这样我只要记住第一键,按下它后会有提示。同样的思想也用在Emacs中。在
config
中搜索mode "resize"
可以看到例子 - 注意我用了两个terminal,一个python写的terminator,功能强大,支持真彩色,是我的主力terminal。另一个是轻量级unicode-rxvt(urxvt),内存消耗很少。用来运行各种辅助程序。urxvt在大量调用各种命令行程序的时候可以节省很多资源,还是蛮重要的。
- 我重设方向快捷键为hjkl,和Vi一样。事实上我所有编辑器和IDE(VSCode/Emacs/Vim/IntelliJ)也用的Vim快捷键。原因讲过了,我讨厌记快捷键,也记不住。很多人编程效率不高的原因就是他们不从实际的角度去考察问题。忽视眼前的实际的重要的问题,而基于某种教条理念浪费时间在虚幻的不重要的问题上。比如迷信高手一定要记最多的快捷键。又比如一厢情愿地认为记快捷键都是在浪费时间,软件不用优化。大公司的软件的默认配置就是最优的了,用鼠标点点点就可以了。
i3 config:
https://gist.github.com/redguardtoo/e4e243338e1043a3d8a5ae70ae0ab508gist.github.comi3 status.conf
https://gist.github.com/redguardtoo/55c855cabb5bdbc6ff823918a3cf24ffgist.github.com