st 终端模拟器支持哪些功能?
更新时间
st 是面向 X 的轻量终端模拟器,功能覆盖日常终端使用的主要需求:大部分 VT10X 转义序列、UTF-8 宽字符、256 色与真彩色、抗锯齿字体与回退字体、XIM 输入、剪贴板、鼠标与键盘快捷键、窗口缩放、串口、utmp 以及制表线绘制。它不追求模拟 xterm 中那些陈旧冷僻的终端类型,配置通过源码中的 config.h 完成,适合愿意自行编译、接受“小代码库 + 自己改配置”这一取舍的用户。
已实现的功能
根据官网 Status 一节,st 当前已实现:
| 功能 | 说明 |
|---|---|
| VT10X 转义序列 | 支持大部分 VT10X 转义序列,覆盖常见终端控制需求 |
| UTF-8 宽字符 | 支持宽字符显示 |
| 256 色与真彩色 | 满足配色方案和主题显示 |
| 抗锯齿字体 | 通过 fontconfig 实现 |
| 回退字体 | 主字体缺字时使用回退字体 |
| XIM | 支持 X 输入法 |
| 剪贴板 | 支持剪贴板处理 |
| 鼠标与键盘快捷键 | 通过 config.h 配置 |
| 窗口缩放 | 支持调整窗口尺寸 |
| 串口 | 支持串口线路 |
| utmp | 通过 utmp(1) 记录登录会话 |
| 制表线绘制 | 支持 line drawing 字符 |
官网同时说明,更完整的目标见 goals 页面,尚未实现或待修复的内容见 TODO。
设计取向:功能够用,而非大而全
st 的 Motivation 一节直接引用了 xterm(1) README 的自嘲:xterm 是发行版里“最丑的程序”,带着大量历史包袱,超过 65K 行代码,还模拟了许多你永远用不到的冷僻、过时终端;而流行的替代品 rxvt 也有 32K 行代码。st 认为终端模拟本身不需要这么复杂。
这解释了 st 的功能边界:它实现日常使用所需的终端能力,但不以兼容所有历史终端类型为目标。如果你需要模拟 tek4014 之类特殊终端,st 不是合适选择;如果只是日常 shell、编辑器、分页器和 TUI 程序,已实现的功能列表基本够用。
配置方式与前提
st 没有图形化设置界面,配置在编译阶段完成:
- 获取源码:
git clone https://git.suckless.org/st,或下载发布包(官网提供 st 0.9.3,48kb,2025-08-09)。 - 编辑
config.h:按文件内注释修改快捷键、字体、颜色等。默认值存放在config.def.h。 - 重新编译安装,使配置生效。
预期结果是得到一份按你需求定制的 st 二进制。常见卡点是:直接改 config.h 后未重新编译,或升级源码时覆盖了自己的配置——后者需要自行保留改动。FAQ 维护在 st 的源码仓库中,遇到具体问题可先查那里。
适合谁,不适合谁
- 适合:使用 X、希望终端代码量小、愿意用
config.h管理配置、需要真彩色和字体回退的 Linux/BSD 用户。 - 不适合:需要开箱即用的图形设置、需要模拟冷僻历史终端、或不愿自行编译的用户。
st 处于活跃开发中,源码可通过 git 浏览和获取,功能列表也可能随版本变化,选型时以对应版本的 goals 与 TODO 为准。