suckless.org

suckless.org有两个小程序:dwm和surf。我很喜欢。

现在的软件有一个不好的趋势,那就是越做越大。这可能和计算机资源越来越充裕有关系。随随便便就有一个上百GB的硬盘,那么占用5GB甚至更多的空间安装一个Gnome桌面环境也未尝不可。

软件之间互相依赖。我只需要A软件的功能,但是A需要B的功能X,所以我还得安装B。然而B却自带了其他与之不相关的功能Y, Z, …功能Y, Z又依赖其他的软件C, D, …这样下去就没完没了了。

下面是我的系统上webkit-gtk2软件包的依赖关系图。建议不要放大了看,头晕。幸运的是现代的软件包管理器都能够自动处理相依性问题,否则的话这就是一个噩梦。

surf依赖于webkit-gtk2,除此以外没有太多乱七八糟的依赖。它就是一个简单的浏览器,一个窗口显示一个页面,仅此而已。连地址栏也没有。

图中就是两个浏览器窗口。没有地址栏,通过快捷键Ctrl-G调出地址栏输入框,输入要访问的URL即可。这个输入框是suckless.org的另一个作品:dmenu。在页面内搜索文字也是用demnu完成的,快捷键是Ctrl-/

中文用户会发现当前版本(4.6)的dmenu并不能支持中文输入法,这给搜索网页中的中文词语带来了很大的麻烦。为此,我制作了一个补丁。使用这个补丁,就可以在locale设置为UTF-8的情况下在dmenu中输入汉字,就像图中那样。

此外还有光标显示不正确的问题,我觉得这个问题不那么严重,毕竟很少需要编辑。没有什么特别好的解决办法,可选的解决方案有:

  1. 在dmenu的config.h中把默认字体设置为中文字体,例如Droid Sans Fallback。副作用是,英文字体也一块儿被改了。
  2. 我写了一个凑合能用的补丁
  3. 假装没看见光标。

dwm是一个窗口管理器。上图中似乎没有任何窗口管理器。呃,其实是因为dwm的状态栏被dmenu的输入框挡住了。dwm非常简洁,只有一个状态栏,没有乱七八糟的窗口装饰,移动窗口和调整窗口大小可以用Alt键配合鼠标左右键来完成。当然,大部分时候不需要移动窗口或者调整窗口大小,因为dwm可以工作在__平铺模式__:

在平铺模式中,窗口管理器自动调整窗口的位置和大小。有一个主要的工作窗口,显示在左侧,其他的窗口则堆叠在右侧。而之前一张图中,各个窗口可以随意摆放,这是__浮动模式__。

在这张图里可以看见dwm的状态栏。dwm默认提供9个工作区,可以通过Alt+[0-9]切换。这些热键也可以自定义。不过,它们是直接定义在源文件里的。修改config.h,编译一份属于自己的dwm就可以了。

如果你的屏幕DPI较高,你可能会发现dwm的状态栏以及dmenu中显示的中文字体明显偏小(图中不存在这个问题)。这也是一个bug,我不知道正确的改正方法是什么,可选的的解决方案有:

  1. 在dwm和dmenu的config.h中,在fonts[]数组后面添加一项中文字体,字号可以和前面的英文字体(默认为monospace)一致。可以很好地解决问题,特别是,你还可以自由地选择中文字体。
  2. 修改drw.c,把含有FcDefaultSubstitite(fcpattern);的行删除。这个函数调用会把字体的DPI设置为默认的75,不论你实际的DPI设置为多少。我不知道正确的改正方法是什么,我也不知道删除这一行会有什么副作用。
  3. 买一个放大镜。

分享