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 没有图形化设置界面,配置在编译阶段完成:

  1. 获取源码:git clone https://git.suckless.org/st,或下载发布包(官网提供 st 0.9.3,48kb,2025-08-09)。
  2. 编辑 config.h:按文件内注释修改快捷键、字体、颜色等。默认值存放在 config.def.h。
  3. 重新编译安装,使配置生效。

预期结果是得到一份按你需求定制的 st 二进制。常见卡点是:直接改 config.h 后未重新编译,或升级源码时覆盖了自己的配置——后者需要自行保留改动。FAQ 维护在 st 的源码仓库中,遇到具体问题可先查那里。

适合谁,不适合谁

  • 适合:使用 X、希望终端代码量小、愿意用 config.h 管理配置、需要真彩色和字体回退的 Linux/BSD 用户。
  • 不适合:需要开箱即用的图形设置、需要模拟冷僻历史终端、或不愿自行编译的用户。

st 处于活跃开发中,源码可通过 git 浏览和获取,功能列表也可能随版本变化,选型时以对应版本的 goals 与 TODO 为准。