Skip to content

配置 ​

文档编写中

部分内容可能尚不完整。

ThinkTerm 用一个 Lua 文件配置,方式与 WezTerm 相同。配置项名称、模块名和语法都没有改动 —— ThinkTerm 的配置文件开头依然是:

lua
local wezterm = require 'wezterm'

不同的只是文件从哪里读、数据往哪里写。

两处配置,不是一处 ​

Lua 文件是你手写的那一份,装着终端自身的配置项。

在它旁边,~/.config/thinkterm/settings.json 由设置窗口写出,存放那些在设置里有开关的选择 —— 主题、窗口透明度、快捷键、滚动方式与叠加滚动条、界面字号与侧边栏宽度、界面语言、渲染器、标签图标。它不是用来手工编辑的。两边重叠时,几乎总是以设置窗口里的选择为准;例外见下文。

你在使用过程中,这个文件也会被不断改写 —— 拖动或收起侧边栏、移动窗口 —— 但这些都不会重新加载 Lua 配置,所以不会因此重新加载字体,也不会关掉命令面板。如果有人从外部改了它,比如用编辑器或别的程序,ThinkTerm 会立刻读到,并像设置窗口那样把改动生效,而不是放着不用,等下一次保存时再用旧的那份把它覆盖掉。

设置窗口 ​

设置 可以从侧边栏底部的齿轮打开,macOS 上也可以按 ⌘,,其他平台按 Ctrl+Shift+,。它的各个页面,以及每页在哪里有说明:

页面里面有什么说明见
通用语言、渲染器、恢复主窗口位置与大小、加载的是哪个配置文件、后台会话 server、重启与退出本页、窗口、远程
外观主题、当前配色方案、应用图标、字体排版、窗口透明度,Windows 上还有毛玻璃方式(试验)窗口、窗口透明度
标签图标pane 标签上的程序图标窗口
侧栏与插件右侧面板、Agents 面板、已安装的插件窗口、插件、Agent 状态
终端默认 Shell、字体、滚动方式、滚动条、最低文字对比度、鼠标与剪贴板、分屏动画、远程分屏缩放、底部语录本页、窗口、复制与粘贴、远程
工作区远程文件连接空闲超时、下载文件夹、远程拖放目标、提示音文件与笔记、Agent 状态
Agent识别哪些编程 Agent,以及如何识别Agent 状态
网页浏览器访问,以及发出去的链接网页访问
已归档已归档的 ProjectSpace、Project 与 Thread
快捷键一个会显示每个键作用的键盘,可以为命令分配快捷键快捷键与命令
命令面板命令面板的快捷键、行数、字号和搜索快捷键与命令
导入一次性导入 WezTerm 配置、代码编辑器打开过的文件夹和 Herdr 会话本页
备份导出和导入 ThinkTerm 的状态本页
软件更新检查更新与安装更新
关于版本、构建、链接,以及文件放在哪里本页

开发者 页有一个开关,可以显示更多页面,那是给开发 ThinkTerm 本身用的,不是日常设置。列表上方的搜索框可以按页面里的设置项找到页面。

关于页与问题报告 ​

设置 › 关于 显示版本、构建、平台和许可证,并能打开源代码、发布说明、配置文件、数据目录、第三方声明和隐私政策。复制信息 把问题报告需要的细节放到剪贴板上:版本和构建、目标平台和操作系统、配置文件与数据目录的路径,以及(检查过更新之后)看到的最新版本。这些路径里含有你的主目录名,贴到公开的地方之前先看一眼。

设置与配置文件重叠的地方 ​

有几项选择两边都能做。在这些项上,设置窗口说了算,而且每项都有办法把选择交还给配置文件:

设置窗口里挡在谁前面怎样重新跟随配置文件
设置 › 终端 › 默认 Shelldefault_prog,作用于本机新开的终端选 跟随 thinkterm.lua(default_prog);配置文件没设置时它显示为 系统默认
设置 › 终端 › 字号,8 到 48font_size,立即作用于已打开的终端重置这一行
通过 设置 › 外观 › 当前配色方案 或命令面板的 更换主题 选定的方案color_scheme更换主题 里的 使用配置默认值
设置 › 终端 › 最低文字对比度text_min_contrast_ratio关
设置 › 命令面板 › 字体大小command_palette_font_size重置这一行
在 设置 › 快捷键 里设置的快捷键keys 里的同一个键,以及它的内置默认值对该快捷键点 恢复默认,或点 全部恢复默认
设置 › 外观 › 窗口透明度window_background_opacity,在 macOS 上还有 macos_window_background_blur恢复默认

默认 Shell 列出这台机器上找到的 shell,下一次打开终端时生效。只有本机的终端跟随它,包括放在本机会话 server 里的那些;远程服务端运行的是它自己配置里写的。选定之后又被卸载的 shell 会退回系统默认,而不是让你一个终端都打不开。

在 Windows 上,这个列表还会提供 Git Bash(以登录 shell 启动),前提是在 Program Files、%LOCALAPPDATA%\Programs\Git 下或 Scoop 安装里找到了 Git for Windows。存在 wsl.exe 时,它最多列出三个 WSL 发行版,默认的排在最前,每个显示为 <name> (WSL);Docker Desktop 自带的 docker-desktop 发行版不在其中。

字体本身不在其中:设置 › 终端 › 字体 只是显示配置文件里指定的字体,要改得改文件里的 font。

有一项是反过来的。配置文件里的 enable_scroll_bar = true 会把 ThinkTerm 的叠加滚动条换成 WezTerm 自己的,不管 设置 › 终端 › 滚动条 怎么设。

在 设置 › 快捷键 里设置的快捷键保存在 settings.json 里,压过 keys 里的同一个键和内置默认值;配置文件本身从不被改写。运行配置文件里某个 Lua 函数的快捷键,只能在文件里改。见 快捷键与命令。

窗口透明度 是一个从 30% 到 100% 的滑块,每档 5%,带 Beta 标记,没动过它时显示 默认。拖动它会为所有窗口设置 window_background_opacity;在 macOS 上,窗口透明时还会加上半径为 20 的背景模糊,除非配置文件自己设置了 macos_window_background_blur。侧边栏和标签栏比终端略实一些。它在 Linux 上是灰的,不过配置文件里的 window_background_opacity 照常有效;设置里注明它在 Windows 上还不够稳定,那里的 win32_system_backdrop 仍由配置文件决定。见 窗口。

没有选定方案时,浅色界面还会自带一个浅色终端配色 —— 见 窗口。

在设置里选的配色方案和窗口透明度,无论有没有配置文件都会生效。

配置文件的读取顺序 ​

ThinkTerm 会加载它找到的第一个文件,顺序如下:

  1. 命令行上的 --config-file PATH
  2. $THINKTERM_CONFIG_FILE
  3. $WEZTERM_CONFIG_FILE
  4. 可执行文件同目录下的 thinkterm.lua —— 仅 Windows
  5. 可执行文件同目录下的 wezterm.lua —— 仅 Windows
  6. ~/.config/thinkterm/thinkterm.lua
  7. ~/.config/thinkterm/wezterm.lua
  8. ~/.thinkterm.lua

还有两个命令行标志和第一条一同起作用。--skip-config(-n)完全跳过这轮搜索,直接用内置默认值运行;--config name=value 可以重复给出,在已加载的配置之上覆盖单个配置项。三者都是全局标志,要写在子命令前面。

$THINKTERM_CONFIG_DIR 和 $WEZTERM_CONFIG_DIR 不参与这个搜索。它们是 ThinkTerm 在配置加载完成之后写出的 —— 指向配置文件所在的目录,供你启动的程序读取。自己设置它们并不能选中某份配置。

那两条仅限 Windows 的规则是有意为之:配置文件放在可执行文件旁边时优先级最高,这样 ThinkTerm 可以装在 U 盘里带走,在一台没有自己配置、或者装着别人配置的机器上运行。

其中的 wezterm.lua 文件名也不是遗留物:它让一份现成的 WezTerm 配置可以直接放进 ThinkTerm 的目录,不必改名。

ThinkTerm 会从 WezTerm 安装里取用什么 ​

你的 WezTerm 配置文件不会被加载。上面所有位置都不指向 ~/.config/wezterm/wezterm.lua,ThinkTerm 也从不写入它。

但这个隔离并不彻底,有两条通路值得知道。

WEZTERM_CONFIG_FILE 会被遵循。 它排在上面的搜索顺序里,所以如果你的环境里导出了这个变量(如果你当初就是这样配置 WezTerm 的,很可能就是如此),ThinkTerm 会加载它指向的文件。WezTerm 还会在它打开的每个终端里设置这个变量,所以从 WezTerm 里的 shell 启动的 ThinkTerm,加载的是 WezTerm 的配置。设置 THINKTERM_CONFIG_FILE,或者取消那个 WezTerm 的变量,就能让两套安装互不干扰。

WezTerm 的配置目录仍会被搜索 Lua 模块和配色方案。 ~/.config/wezterm/ 和 ~/.wezterm/ 位于 Lua 的 package.path 上,~/.config/wezterm/colors/ 也会被搜索配色方案。所以在 ThinkTerm 配置里写 require 'mymodule',会找到你为 WezTerm 写的模块。被隔离的是配置文件本身,不是整个目录。

导入 ​

设置 › 导入 导入这台电脑上另一个程序已有的东西:WezTerm 配置里的设置、你的代码编辑器打开过的文件夹,以及 Herdr 的会话。每次导入都只做一次 —— 之后与来源不再有任何联系。

这一页分三步:选择来源、预览内容 和 导入结果。第一步把各个来源列成卡片,继续 读取你选的那个。返回 回到卡片,最后一步的 继续导入 从卡片重新开始。WezTerm 始终在列表里。代码编辑器 只在装有受支持的编辑器时出现,Herdr 带有 Beta 标记,且仅在 macOS 和 Linux 上提供。

ThinkTerm 第一次打开时,欢迎页会在找到这些东西时把它们列出来,每一项都有一个按钮,直接在该来源的 预览内容 一步打开这一页 —— 见 安装。

从 WezTerm 导入 ​

WezTerm 卡片把现有 WezTerm 配置里你选中的设置复制进 ThinkTerm 的配置。之后两个文件相互独立,WezTerm 文件后来的改动只有再导入一次才会进到 ThinkTerm。

它按下面的顺序找 WezTerm 配置,用第一个存在的:

  1. ~/.wezterm.lua
  2. $XDG_CONFIG_HOME/wezterm/wezterm.lua;没设置 XDG_CONFIG_HOME 时是 ~/.config/wezterm/wezterm.lua
  3. $XDG_CONFIG_DIRS 里每个目录下的 wezterm/wezterm.lua —— 仅 macOS 和 Linux

WEZTERM_CONFIG_FILE 在这里不起作用,尽管它在上面 ThinkTerm 自己的配置搜索里起作用。

继续 会加载那个文件 —— 它是 Lua,所以会像在 WezTerm 里一样被执行 —— 预览内容 一步先显示 WezTerm 配置和 ThinkTerm 自己的配置分别在哪里找到,再列出文件里可导入的设置。只有文件自己设置了的项才会出现:留着 WezTerm 默认值的项不会,所以导入永远不会把 WezTerm 的默认值写到 ThinkTerm 的默认值上面。第一次时,找到的每一项都是选中的,计数旁边有 全选 和 清除。可导入的设置共十五个:

color_scheme、window_background_opacity、macos_window_background_blur、inactive_pane_hsb、font、font_size、line_height、cell_width、default_prog、default_cwd、front_end、window_decorations、disable_default_key_bindings、keys、key_tables

这个列表限定的是导入器替你复制的范围,不是 ThinkTerm 支持的范围。其他任何 WezTerm 配置项,手写进 ThinkTerm 的配置文件里同样有效。

重新读取 会再读一遍文件。没有找到 WezTerm 配置时,它和 导入所选项 都是灰的;一项都没勾选时,导入所选项 也是灰的。导入所选项 把选中的值写成一个普通的 Lua 表,存到 ~/.config/thinkterm/imported_from_wezterm.lua。这个文件归导入器管:每次导入都会整个替换它,所以在里面做的改动下次就没了。要改请改你自己的配置。

接下来怎样,取决于 ~/.config/thinkterm/ 里是否已经有 ThinkTerm 配置:

  • 还没有:导入会同时创建 ~/.config/thinkterm/thinkterm.lua,它加载导入的文件并返回结果。不需要再做什么。
  • 已经有 —— thinkterm.lua 或 wezterm.lua —— 你的文件不会被改动,导入的值在你的文件加载它们之前不起作用。在返回配置的那一行之前加上这段,其中 config 是你的文件返回的那个表:
lua
local imported = require 'imported_from_wezterm'
for key, value in pairs(imported) do
  config[key] = value
end

写在这个循环之后的赋值会覆盖导入的值。

放在其他位置的配置不会被察觉。如果你的配置是 ~/.thinkterm.lua,导入创建的 thinkterm.lua 在搜索顺序里排在它前面,会被加载而取代它。

从代码编辑器导入 ​

代码编辑器 卡片提供 VS Code 及其衍生编辑器打开过的文件夹:VS Code、VS Code Insiders、Code - OSS、VSCodium 及其 Insiders 版本、Cursor、Windsurf、Antigravity、Kiro、Positron、Trae 和 Void。每个编辑器只在它自己的用户数据文件夹里查找。只有文件夹路径会被导入,文件夹里的内容一概不读取。多根工作区(编辑器记录的是一个 .code-workspace 文件,而不是文件夹)会被跳过。

预览内容 一步按最近使用的先后列出这些文件夹,每个编辑器有一个按钮,用来缩小范围。最近 30 天用过的文件夹一开始是勾选的。已经是所选 Space 里某个 Project 的,显示为 已在侧栏,一开始不勾选。添加到 选择放进哪个本地 Space —— 如果打开设置的那个 Space 是本地的,就是它 —— 每个勾选的文件夹成为一个带一个 Thread 的 Project。列表下方有一行,统计通过 SSH、WSL 或容器打开、暂时不能添加的文件夹。

从 Herdr 导入 ​

Herdr 卡片把一个 Herdr 会话导入为一个新的 Space,名为 Herdr — <会话>。每个 Herdr workspace 成为一个带一个 Thread 的 Project,里面是该 workspace 的标签和 pane。它带有 Beta 标记,仅在 macOS 和 Linux 上提供。ThinkTerm 在 Herdr 的配置文件夹 ~/.config/herdr 或 $XDG_CONFIG_HOME/herdr 里找会话:默认会话,以及 sessions/ 下的每一个。

继续 会读取会话。只有一个时,直接打开它的预览;有多个时,每个都有一个 预览 按钮,已经导入过的会话带一个 已导入 标记。预览页的标题是 导入预览,写明新 Space 的名字,统计 Project、一级标签和终端的数量,并列出每个 Project 的终端。重新预览 会再读一遍会话。如果预览之后会话的结构、运行状态或保存的布局变了,导入会中止,并要求先重新预览。导入已经导入过的会话会给出警告,因为那会另建一个 Space。

Herdr 自己的文件保持不变,所以再次启动 Herdr 时,它可能恢复旧布局并继续它保存的内容。

两种模式用哪一种,取决于会话是否正在运行:

运行中的会话保存的布局
按钮迁移运行中的会话导入布局
做什么把会话的终端迁入 ThinkTerm;现有进程继续运行在保存的目录里打开新的 shell
不会带过来的完整的回滚历史和图片。全屏程序可能需要重绘保存的启动命令和 Agent 恢复命令不会执行
需要Herdr 支持 live_handoff,且协议版本兼容保存的目录必须存在,布局格式须受当前 ThinkTerm 支持

条件不满足时,导入会被拒绝,并显示原因。两种模式都要求会话属于你的账号、会话目录可以访问。运行中的会话还要求 Herdr 和 ThinkTerm 共用临时目录、socket 和 ThinkTerm 程序,Linux 上 /tmp 不能以 noexec 挂载。

有远程服务器上的 Space 时,从哪台机器导入 会列出 本机 和这些主机;未连接的主机在选中时会先连接。从远程主机导入读取的是那台服务器上的 Herdr,进程仍留在那台服务器上。会话必须属于远程连接所用的账号。

导入过程中连接中断时,页面会提供 检查导入结果,它会重新连接并取回那次请求的结果。请用它,不要另行发起第二次导入。导入完成后,打开 Space 会打开新建的 Space。

数据存放位置 ​

macOS

  • 配置文件 —— ~/.config/thinkterm/
  • 工作区数据 —— ~/Library/Application Support/ThinkTerm/
  • 终端状态 —— ~/Library/Application Support/thinkterm/
  • 缓存 —— ~/Library/Caches/thinkterm/
  • 运行时 —— ~/.local/share/thinkterm/

Linux

  • 配置文件 —— ~/.config/thinkterm/
  • 工作区数据 —— ~/.local/share/ThinkTerm/
  • 终端状态 —— ~/.local/share/thinkterm/
  • 缓存 —— ~/.cache/thinkterm/
  • 运行时 —— $XDG_RUNTIME_DIR/thinkterm/

Windows

  • 配置文件 —— %USERPROFILE%\.config\thinkterm\
  • 工作区数据 —— %APPDATA%\ThinkTerm\
  • 凭据 —— %LOCALAPPDATA%\ThinkTerm\ssh\
  • 终端状态 —— %APPDATA%\thinkterm\
  • 缓存 —— %LOCALAPPDATA%\thinkterm\
  • 运行时 —— ~/.local/share/thinkterm/

上面有四点容易踩坑。

配置路径不遵循各平台惯例。 所有操作系统上都使用 ~/.config/thinkterm/,Windows 也不例外 —— 不是 %APPDATA%。因此配置与数据在每个平台上都是分开存放的,Linux 也一样 —— 那里配置在 ~/.config 下,数据在 ~/.local/share 下。

有两个仅大小写不同的数据目录。 工作区数据 —— Space、Project 与 Thread 结构,片段,以及在 Unix 上还包括 SSH 主机簿和它的加密密钥 —— 写在 ThinkTerm/。终端与多路复用状态写在 thinkterm/。macOS 和 Windows 的文件系统默认对大小写不敏感,两者通常会合并成同一个目录 —— 但在大小写敏感的 APFS 卷上不会。在 Linux 上它们始终是独立的两个目录。无论落在哪里,两者都属于 ThinkTerm。

Windows 上,凭据被刻意挪出漫游配置文件。 SSH 主机簿和它的加密密钥不和其余工作区数据一起放在 %APPDATA%,而是放在 %LOCALAPPDATA% 下,这样域账户注销时不会把它们复制到配置文件服务器上。旧安装里的那两个文件会在 ThinkTerm 第一次需要时成对迁移过去。网页监听器的证书和私钥出于同样的理由也放在那里。

运行时目录同样不随平台惯例。 多路复用 socket、pid 文件和 TLS 材料在 Linux 上位于 $XDG_RUNTIME_DIR/thinkterm/,在 macOS 和 Windows 上回落到 ~/.local/share/thinkterm/ —— 这两个平台上本来并没有别的东西放在那里。thinkterm cli 找不到服务端时,这一条值得想起来。

笔记库不存放在上述任何一处。它是你自己选定的目录,里面是普通的 Markdown 文件;ThinkTerm 只记录这个绑定关系。

从 WezTerm 带过来的数据 ​

当 WezTerm 的数据目录存在时 —— macOS 上是 ~/Library/Application Support/wezterm/,Linux 上是 ~/.local/share/wezterm/,Windows 上是 %APPDATA%\wezterm\ —— ThinkTerm 在启动时会从中复制四样东西到自己的终端状态目录:

项目是什么
pluginswezterm.plugin.require 取回的 Lua 插件
recent-commands.json命令面板的最近命令
recent-emoji.json字符选择器的最近选择
repl-history调试浮层的 Lua 历史

每一样都只在 ThinkTerm 自己还没有时才复制,所以实际上只发生一次,也从不覆盖任何东西。WezTerm 那边的文件原样留着,那个目录里的其他东西也不会被读取。

备份与恢复 ​

设置 › 备份 把 ThinkTerm 自己的状态导出到你选定的文件夹,也能从这样的文件夹里恢复。你不导出,就不会有任何备份。

导出会新建一个文件夹,名字是 ThinkTerm Backup 加上日期和时间。里面是普通的 JSON 文件,旁边的 thinkterm-backup.json 列出了它们:

文件内容
workspace_threads.jsonSpace、Project 与 Thread
ssh_hosts.jsonThinkTerm 自己的 SSH 主机簿
snippets.json片段
recent-commands.json最近使用的命令

Space 是从 ThinkTerm 内存里的状态写出的,所以即便上一次保存还没落盘,导出的也是屏幕上看到的样子。在 macOS 和 Linux 上,每个文件都以 0600 权限写出。

secret.key 被有意排除在外。已保存的密码仍以这台机器的密钥加密、随主机簿一起导出,所以到了另一台机器上需要重新输入。Lua 配置、settings.json 和笔记库也不在其中;它们是普通文件,照常复制即可。

导入不能在窗口运行时替换这些文件 —— 窗口把它们读在内存里,之后还会写回去。所以导入会先检查备份里的每个文件,然后等待:它由下一次启动、且发现没有其他 ThinkTerm 窗口在运行的那个进程应用,赶在任何东西读取状态之前;页面上的 退出 ThinkTerm 就是为此准备的。每个被替换的文件都会以 <name>.before-import-<time>.json 的名字保留在原文件旁边。只要有一个文件放不到位,已经替换掉的那些会还原,所以失败的导入什么都不会改变;失败会显示在备份页上,不会自动重试。

有一样东西是合并而不是替换的。本机会话 server 里仍然保留着的 Space,会在 ThinkTerm 下次连接它时被加回来,两边都有的以 server 上的名字为准。导入带回的是备份里有的东西,不会删掉 server 留着的东西。

界面语言 ​

设置 › 通用 › 语言 会立即切换 ThinkTerm 自身界面的语言,无需重启。跟随系统 从系统设置取值,并显示实际解析到的语言。

界面提供英语、简体中文、日语、法语和德语。这只影响 ThinkTerm 自己的界面——终端内容以及所有由 WezTerm 渲染的部分都不受影响。

渲染器 ​

设置 › 通用 › 渲染器 在 OpenGL 和 WebGpu 之间选择,作用于终端窗口和设置窗口。和语言不同,它要到 ThinkTerm 下次启动时才生效。没有选过时,它跟随配置文件里的 front_end;这个选项不设置时,Windows 上是 OpenGL,其他平台是 WebGpu,所以默认如此;那里写 OpenGL 或 Software 都用 OpenGL。

其中一个失败并不致命。当前使用的渲染器启动不了 —— 找不到可用的 WebGpu 适配器,或者 OpenGL 太旧、跑不了 ThinkTerm 的着色器 —— 窗口会改用另一个打开,设置窗口也一样,这样一台只有其中一个能用的机器,不会连那个能把它切换回来的开关都打不开。只有两个都失败时,窗口才打不开。front_end = 'Software' 从不回退。

macOS 上的文件夹访问 ​

Project 绑定到一个文件夹,而这个文件夹能不能读由 macOS 决定。访问被拒绝时,Project 页面会说明情况,并指向 系统设置 › 隐私与安全性 › 文件和文件夹 › ThinkTerm。

有两点是 ThinkTerm 特有的。

Project 右键菜单提供 授权文件夹访问…。 它调用的是被拦截页面里同一个选择器,随后会打开该 Project 的第一个 Thread,让这次授权被真正验证过,而不是假定成功。

会话 server 是以自己的名义申请的。 当本地终端跑在后台会话 server 里时,那个守护进程带有独立的 macOS 隐私身份,因此它需要的权限未必就是你已经授给 GUI 的那一份。如果拒绝来自 server,页面会说明这一点,并提供直接打开系统设置对应位置的入口。

被拒绝的文件夹现在会报错,而不是静默回退。早先的构建会不声不响地退回主目录,结果拒绝根本传不到界面上,也就永远无法授权。

环境变量 THINKTERM_NO_PRIVACY_DISCLAIM 会跳过让守护进程取得这个独立身份的那一步。

配置项参考 ​

绝大多数配置项都原样来自 WezTerm,因此参考文档在上游:

三点提醒。

ThinkTerm 于 2026 年 3 月 31 日从 WezTerm 分叉,此后上游新增的配置项这里可能尚未提供。

有些配置项名称和含义没变,但默认值变了;它们列在下文。

另外 ThinkTerm 有自己新增的配置项,上游文档里查不到:

配置项控制什么
agent_status_detection是否运行会话状态检测
web_servers多路复用服务端启动时打开的网页监听器。见 网页访问
ui_colorsThinkTerm 自身界面的颜色;colors 仍然是终端调色板。见 界面颜色
remote_mux_auto_claim_on_open主动连接远程主机时是否立刻接管它的终端
note_spellcheck_enabledMarkdown 编辑器中的拼写检查
note_remote_images_enabled笔记中是否加载远程 URL 图片
note_reading_max_width笔记正文栏最宽能到多少,单位是逻辑像素(macOS 上即点)。默认 820;笔记区更宽时正文栏居中
right_sidebar_search_respects_gitignore文件搜索是否跳过被忽略的文件。文件树里仍然会显示它们
unfocused_fps可见但未聚焦的窗口因终端输出而重绘的频率。默认 10;0 表示不限制
kitty_image_memory_budget_mib每个 pane 最多保留多少图片数据,单位 MiB。默认 128;0 表示不限。见 窗口
live_overview_preview_refresh_msLive Overview 卡片重新读取终端内容的间隔。默认 300

text_min_contrast_ratio 是上游的配置项,但 设置 › 终端 › 最低文字对比度 压在它上面:在那里选了比例就以它为准,选 关 则交回配置文件里的值。

插件不在 Lua 文件里配置。见 插件。

与 WezTerm 不同的默认值 ​

这些配置项的含义和上游一样,但配置文件不设置时,起点不同:

配置项WezTermThinkTerm
front_endOpenGLWebGpu,Windows 上是 OpenGL
initial_cols80120
initial_rows2432
max_fps60120
default_cwd未设置你的主目录
native_macos_fullscreen_modefalsetrue
color_scheme(macOS)未设置Apple System Colors,前提是 colors 也没设置
adjust_window_size_when_changing_font_size(macOS)未设置false

default_cwd 在终端没有别的依据时才起作用 —— 它自己没有目录,打开它的那个终端也没报告目录。这时它从你的主目录开始,而不是从 ThinkTerm 本身被启动时所在的目录开始。adjust_window_size_when_changing_font_size 为关时,改字号会保持窗口大小不变,改变的是里面能放下多少行和列。

还有两项在不设置时由终端调色板推出来。非活动 pane 的压暗 inactive_pane_hsb 在浅色配色下比深色配色下更轻,而不再是固定的一个值;pane 分割线的颜色也是从终端背景混合出来的。一旦显式写死,它们的行为就和上游文档描述的完全一致。

配色方案也可以在设置窗口里决定,而不是在文件里;见 设置与配置文件重叠的地方。

界面颜色 ​

ui_colors 覆盖 ThinkTerm 画在终端周围的颜色 —— 侧边栏、标签栏、pane 上方的标签条、设置窗口、菜单。每一项都是可选的,没设置的项保持主题本来会用的颜色,所以一个写了两种颜色的表只改两种颜色:

lua
config.ui_colors = {
  sidebar_bg = '#282828',
  accent = '#d79921',
}

颜色的写法和配置文件里其他地方一样。可用的项:

分组项
底面window_bg(最底下的背景)、sidebar_bg、workspace_sidebar_bg(凹下去一层的侧栏底色;设置窗口里的页面列表)、header_bg(标签上方的条)、card_bg(window_bg 上的卡片)、group_bg(卡片里成组的行)、separator
控件control_bg、control_hover_bg、control_pressed_bg、control_border、track_off(开关关闭的那一半)
侧边栏sidebar_button_bg、sidebar_button_hover_bg、sidebar_row_hover_bg、sidebar_row_pressed_bg、sidebar_row_active_bg、sidebar_row_active_border
选中与强调色selected_bg、selected_text、accent、accent_hover、on_accent(强调色上的文字和图标)、danger(破坏性操作和错误)
文字text、secondary_text、muted_text
其他scrollbar_thumb(叠加滚动条)、spelling_error(拼写错误下面的那条线)

在 跟随终端配色 下,底面和文字会挪到终端背景上,但 accent、accent_hover、on_accent、selected_bg、danger 和 spelling_error 保持设计时的值:配色方案自带的蓝色在它自己的背景上常常难以看清。想让它们也一致,就在这里设置。

环境变量 ​

ThinkTerm 启动的每个终端里都设置了这些:

变量值
THINKTERM1
THINKTERM_VERSIONThinkTerm 的版本
TERM_PROGRAM、TERM_PROGRAM_VERSIONWezTerm 和版本号。保留它们是为了让认得 WezTerm 的工具继续工作;要区分 ThinkTerm,请检查 THINKTERM
WEZTERM_PANE这个 pane 的 id,thinkterm cli 把它当作默认 pane
WEZTERM_UNIX_SOCKET多路复用 socket,ThinkTerm 有的时候才设置
THINKTERM_MUX_SERVER_IDpane 跑在哪个多路复用服务端里。thinkterm tui 用它拒绝连接到自己正运行于其中的那个服务端
THINKTERM_CONFIG_FILE、WEZTERM_CONFIG_FILE加载的配置文件,有加载时才设置
THINKTERM_CONFIG_DIR、WEZTERM_CONFIG_DIR配置文件所在的目录

ThinkTerm 会读取这些:

变量作用
THINKTERM_CONFIG_FILE、WEZTERM_CONFIG_FILE要加载的配置文件。见 读取顺序
THINKTERM_DISABLE_SOUND设为任何值,都会让提示音静音,不管设置里怎么选
THINKTERM_UPDATE_TOKEN更新检查时发送的 GitHub token,用来解除匿名请求的频率限制。环境里的 GITHUB_TOKEN 永远不会被发送。见 更新
THINKTERM_NO_PRIVACY_DISCLAIM跳过给会话 server 独立 macOS 隐私身份的那一步。见 macOS 上的文件夹访问
THINKTERM_TUI_CONFIGthinkterm tui 读取设置的位置。见 TUI
WEZTERM_LOG日志过滤,与 WezTerm 相同

相关 ​

  • 窗口 —— 外观页和终端页在屏幕上改变了什么
  • 快捷键与命令 —— 命令面板和它的设置页
  • 远程 —— 主机簿,以及把本地终端放进会话 server
  • 插件 —— 插件带来什么、在哪里开关
  • 更新 —— check_for_updates 以及更新流程的其余部分
  • 隐私与安全 —— ThinkTerm 什么时候通过网络发送什么