一款安静、克制的 Obsidian 主题:灰阶界面、七彩文件夹、紧凑的中文排版,以及源码与阅读双栏逐行对齐。
当前版本 2.7.0,最低需要 Obsidian 1.6.0,支持浅色与深色模式。
- 从 Releases 下载
theme.css和manifest.json。 - 在笔记库中新建文件夹
.obsidian/themes/Codex UI For Obsidian/,把两个文件放进去。 - 打开「设置 → 外观 → 主题」,选择 Codex UI For Obsidian。
浅色、深色跟随 Obsidian 的基础颜色设置切换。想调整主题选项,再安装并启用 Style Settings 插件,选项位于「设置 → Style Settings → Codex UI For Obsidian」。
主题可以单独使用。配合 Better Obsidian 1.1.0 能补上纯 CSS 做不到的部分:
- 自动打开源码 / 阅读双栏,并按实际行平滑同步滚动;
- 编辑模式代码块的语言标签和复制按钮,两种视图共用同一套 Prism 语法高亮;
- 文件列表的悬停删除按钮,以及悬浮功能区对文件列表是否可见的识别。
- 正文使用微软雅黑,界面使用 Microsoft YaHei UI,代码使用系统等宽字体,不附带额外字体文件。
- 正文 16px,行宽 728px,行高 1.5;H1 / H2 / H3 为 28 / 24 / 20px,H4–H6 与正文同为 16px。
- 隐藏文件名标题,文档直接从自己的标题开始。
- 表格、引用、分割线、图片、数学公式和 Mermaid 图表统一了间距与配色;打印时自动换成白底深字,代码块不会跨页拆开。
- 保留 Obsidian 原生的方框复选框、任务交互、内部链接和 Callout。
阅读、源码和实时预览共用同一套间距,在双栏中可以逐行对照:
- 源码里的一个空行,对应阅读视图里的一个段落间距;标题上方的留白也按是否已有空行补足。
- 列表的项目符号、正文、任务复选框和缩进线,在两栏中处于同一水平位置,有序、无序混合嵌套也一样。
- 标题行高与阅读视图一致,长文档里不会逐个标题累积出上下偏差。
- 七彩文件夹:顶层文件夹按「红、橙、黄、绿、青、蓝、紫」的顺序循环配色,子文件夹和文件沿用所在顶层文件夹的颜色。
- 四套配色:奶油(默认)、莫兰迪、鲜明,以及可以分别设置深浅色的自定义配色。前三套按 OKLCH 生成,明度和彩度一致;浅色模式下图标对比度不低于 3:1。也可以切换为中性灰色。
- 只给图标和缩进线上色:文件夹行本身保持中性;文件图标比文件夹图标更柔和,排在文件名之后;折叠箭头为中性灰。
- 缩进线按需出现:平时只显示当前文件所在文件夹的竖线;鼠标移入文件列表时,其余竖线淡淡出现;悬停的文件夹竖线会加强。当前文件使用半透明底色,竖线可以连续穿过。
- 文件类型图标:普通文档、SVG、图片、音频和视频各有对应图标。
- macOS 风格标题栏:左侧三色圆点,后面是语言标签,右侧是复制按钮;阅读、实时预览和源码模式都有。
- 语言标签识别约 40 种常见语言及其别名,比如
js/javascript、sh/bash。 - 五套高亮配色:奶油(默认)、GitHub、One、Catppuccin、单色,深浅色各有一套。
- 长代码行自动换行;源码模式下,行内代码的反引号不带底色。
- 灰阶界面,标签页、标题栏和侧栏去掉了多余的分隔线,弹窗、菜单和输入框使用统一的圆角。
- 笔记顶部的路径标题居中显示。
- 悬浮功能区:文件列表展开时,左侧功能区收起,把鼠标移到窗口左边缘即可呼出;顶部的侧栏开关保持固定。
- 设置界面的行距更紧凑,Style Settings 中的自定义颜色按两列排列。
| 分组 | 选项 | 说明 |
|---|---|---|
| 文件列表 | 七彩配色 | 奶油、莫兰迪、鲜明、自定义 |
| 中性文件夹配色 | 所有文件夹改用中性灰 | |
| 显示文件夹缩进线 | 开关缩进线 | |
| 显示文件与文件夹图标 | 开关图标 | |
| 自定义七彩颜色 | 七种颜色,各有浅色和深色两个取值 | |
| 代码高亮 | 配色预设 | 奶油、GitHub、One、Catppuccin、单色 |
| 左侧功能区 | 悬浮功能区 | 开关悬浮功能区,也可在命令面板中切换 |
| 触发宽度 | 左边缘呼出区域的宽度,8–20px | |
| 正文与标题间距 | 正文行高 | 1.3–1.8 |
| 段落间距 | 6–24px | |
| 一、二级标题上方 | 12–36px | |
| 三至六级标题上方 | 10–30px | |
| 设置界面间距 | 普通设置行留白 | 6–20px |
| 快捷键、列表行留白 | 4–14px |
- 文件夹颜色取决于顶层文件夹的排列位置,调整排序或新增顶层文件夹会让后面的颜色依次顺延。
- 列表对齐按默认正文字体计算,换用其他字体后,两栏中的列表可能有一两像素的水平差。
- 源码中列表项之间的空行,在阅读视图中不会留出间距。纯 CSS 无法让阅读视图逐处还原源码空行,复杂内容仍由 Obsidian 渲染。
需要 Node.js 18 或更高版本,无需安装依赖。
node build.cjs这条命令把 src/ 下的源码合并成项目根目录的 theme.css,不会改动本机笔记库。请修改 src/ 中的源码,不要直接编辑 theme.css。
| 文件 | 内容 |
|---|---|
src/settings.css |
Style Settings 选项定义 |
src/tokens.css |
字体、字号、间距、深浅色变量、文件夹色板与代码配色 |
src/workspace.css |
标签页、标题栏、侧栏、弹窗与设置界面 |
src/ribbon.css |
悬浮功能区 |
src/folders.css |
七彩文件夹、文件图标与缩进线 |
src/style-settings.css |
Style Settings 面板布局与色块预览 |
src/markdown.css |
正文排版、列表、表格与双栏对齐 |
src/code-cards.css |
代码块标题栏与复制按钮 |
代码块的语言标签由 build.cjs 中的语言列表生成,新增语言时在那里添加。
先关闭 Style Settings 插件,再指定它的配置文件运行:
node migrate-settings.cjs "/path/to/vault/.obsidian/plugins/obsidian-style-settings/data.json"脚本会保留已有配置,把旧的深浅色变量转换为独立变量,并转换缩进线开关。需要修改时,原文件会在同一目录下备份;已有的新变量优先,重复运行也不会重复修改。完成后重新启用 Style Settings。
界面与正文参考 OpenAI / ChatGPT 的设计语言;排版间距参考 Minimal 与 Things;七彩文件夹参考 AnuPpuccin 与 Minimal;代码块标题栏的视觉参考 lspzc 在 Obsidian 中文论坛的分享。具体数值与实现均为本主题自行调整。
这是独立的社区主题,与 OpenAI 没有隶属关系。