Skip to content
项目

ox0pine/mojian has 76 GitHub stars and 2 forks. Star changes are not measured yet. Last checked 2026-11-13 23:46 UTC. Last push 2026-11-12.

这些数字如何统计

可以做什么

  • Ordinary files and folders. A project is a folder on disk. Nothing is imported, indexed, or synced, and edits stay in memory until you save.
  • Tabs as workspaces. Each tab contains a split tree of editors, image and PDF viewers, and terminals.
  • Persistent terminals. Shells run in a detached session server and reattach when Mojian opens again.
  • Built-in Git diffs. Inspect staged, unstaged, and untracked work without leaving the window.

实测星标增长

24小时
正在收集历史
7天
正在收集历史
15天
正在收集历史
1个月
正在收集历史

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

关于

A quiet text editor for plain files: native tabs, split panes, terminals, Git and SSH projects. Built with MyGo for macOS, Linux and Windows.

开发工具

README.zh-CN.md

原文

墨间 · Mojian

字落于纸,工具退于幕后。

Listed on Awesome MyGo 最新版本 下载次数 MIT 许可证

墨间是一款直接打开普通文件夹的原生纯文本编辑器。编辑文件、预览图片与 PDF、运行常驻终端,并在平铺工作区中查看 Git diff。没有数据库、账号、WebView 或 cgo。支持 macOS 13+、Linux 与 Windows 10 1809+。

下载最新版本 · English · 从源码构建

墨间:同一标签页中的编辑器、选择文件的窗格和两个终端

功能

  • 普通文件与文件夹。 项目就是磁盘上的文件夹。没有导入、索引或同步,编辑内容留在内存,保存时才写入。
  • 标签页即工作区。 每个标签页包含一棵拆分树,装着编辑器、图片与 PDF 查看器和终端。
  • 终端常驻。 shell 运行在独立的会话服务器中,重新打开墨间时接回。
  • 内置 Git diff。 不离开窗口即可查看已暂存、未暂存和未跟踪的改动。
  • 通过 SSH 的远程项目。 在 macOS 与 Linux 上,文件、Git 和终端直接在配置的主机上运行。
  • 单个 Go 二进制的原生界面。 MyGo 在 macOS 上用 Metal、在 Linux 上用 GTK 3、在 Windows 上用 Direct3D 11 绘制界面。没有 Electron,也没有 JavaScript 构建。

安装

从 Releases 下载最新构建。

macOS

架构 下载
Apple Silicon mojian-<版本>-arm64.dmg
Intel mojian-<版本>-amd64.dmg

打开磁盘映像,把墨间拖进「应用程序」。发布构建采用 ad-hoc 签名、未经公证。如果 macOS 拦截首次启动,请在 Finder 中右键墨间并选择 打开。

Linux

墨间需要 GTK 3 和桌面会话。

安装 Debian 或 RPM 包:

sudo apt install ./mojian_<版本>_<架构>.deb        # Debian、Ubuntu
sudo dnf install ./mojian-<版本>-<rpm 架构>.rpm  # Fedora、RHEL

<架构> 为 amd64 或 arm64;<rpm 架构> 为 x86_64 或 aarch64。

如果想安装到用户目录、不需要 root:把 install.sh 和 mojian-<版本>-linux-<架构>.tar.gz 放在同一目录,然后运行:

sh install.sh

Windows

墨间需要 Windows 10 1809 或更高版本。

架构 下载
x64 mojian-setup-<版本>-amd64.exe
ARM64 mojian-setup-<版本>-arm64.exe

安装器为当前用户安装,不需要管理员权限。目前构建未签名,SmartScreen 可能提示。启用更新时,可以一行安装:

irm https://github.com/ox0pine/mojian/releases/latest/download/install.ps1 | iex

Windows 目前是仅本地客户端:本地文件、Git、图片、Poppler PDF 和本地终端可用;SSH 与远程项目暂不可用。

项目与文件

macOS 用 Cmd+O,Linux 与 Windows 用 Ctrl+O 打开文件夹。项目徽标切换最近项目;在 macOS 与 Linux 上,服务器徽标在本地与已配置的 SSH 主机之间切换。每个项目保留自己的标签页、窗格和最近文件。

也可以在终端里直接指定项目文件夹或文件:

mojian .                        # 当前文件夹
mojian ~/git/abc                # 项目文件夹
mojian ~/git/abc/README.md      # 文件,其所在文件夹成为项目

文件会在该项目已保存布局的当前窗格中打开。应用包内的可执行文件位于 Mojian.app/Contents/MacOS/Mojian;把它链接为 mojian 即可使用上面的命令,mojian --help 查看用法。

从终端启动后命令会立即返回:结束终端或按 Ctrl+C 不再影响已打开的窗口。由 Finder 等无终端方式启动时保持原样;脱离终端后的窗口错误写入数据目录下的 app.log。在 Windows 上,应用包内的 Mojian.exe 可以直接运行,也可以把所在目录加入 PATH 后使用 Mojian 命令。

要在 zsh 或 bash 中直接运行 mojian,可在 设置 › 高级 › Shell command 中把别名写入 ~/.zshrc 或 bash 的启动文件;同一行可以更新或移除。

「打开文件夹」选择器会列出通过符号链接指向的文件夹,Cancel 左侧的 Hidden folders 开关会显示以点开头的隐藏文件夹。

首次启动且未选择项目时,墨间会打开 ~/Documents/Mojian;文件夹为空时留下一张欢迎笔记。

文件树展示磁盘上真实存在的目录:

  • 用 Cmd+B / Ctrl+B 显示或隐藏。
  • 用文件树的搜索框过滤可见目录。
  • 用 打开文件(Cmd+P / Ctrl+P)搜索项目中的所有文件。
  • 直接在文件树中新建文件与文件夹。
  • 右键可打开、重命名、创建副本、复制、剪切、复制路径、在文件管理器中显示,或移到废纸篓。

.git、node_modules、dist、build 等生成目录默认隐藏。

标签页、窗格与终端

按 Cmd+T / Ctrl+Shift+T 打开标签页,与 Ghostty 一致。用 Cmd+D / Shift+Cmd+D(Linux 上是 Ctrl+Shift+O / Ctrl+Shift+E)向右或向下拆分当前窗格;向左、向上默认没有快捷键,可在 设置 › 快捷键 中绑定。新窗格会带一个内联文件搜索。

拖动窗格标题到另一个窗格的边缘即可移动它。用 Option+Cmd / Ctrl+Alt 加方向键在窗格之间移动焦点,用 Shift+Cmd+Enter / Ctrl+Shift+Enter 放大当前窗格,用 Cmd+W 关闭窗格,用 Option+Cmd+W / Ctrl+Alt+W 关闭标签页。

双击标签页重命名,双击窗格标题放大,或右键标签页查看更多操作。

按 Ctrl 加反引号键(macOS 上是 ⌃ 加反引号)在项目根目录切换终端。终端也是窗格,可以像其他窗格一样拆分、移动、放大和关闭。在 macOS、Linux 和 Windows 上,退出墨间后 shell 仍然存活,重新打开会接回。

在 macOS 或 Linux 上,按 Shift+Cmd+S / Ctrl+Shift+S 打开到 设置 › 主机 中某个主机的 SSH 终端。

写作与预览

代码保留行号,散文自动换行。语法高亮覆盖 Python、JavaScript、TypeScript、Go、Rust、C 与 C++、Swift、Kotlin、Ruby、JSON、YAML、TOML、SQL、HTML、CSS、Markdown 等语言。

Markdown 窗格可在标题栏切换源码与预览。设置 › 编辑器 可以让新打开的 .md 文件默认渲染。图片(包括 SVG)在窗格内的查看器中打开;PDF 可以逐页查看全部页面:装了 Poppler 的 pdftoppm 时用它渲染,macOS 上则用 PDFKit。

按 Cmd+S / Ctrl+S 原子写入所有未保存的笔记;关闭窗口时也会写入未保存的修改。

Git、命令与设置

Git

按 Ctrl+Shift+G(macOS 上是 ⌃⇧G)将工作区与 HEAD 比较。左侧显示状态,右侧是带两列行号的 diff,包含已暂存、未暂存和未跟踪的改动。

命令面板

按 Shift+Cmd+P / Ctrl+Shift+P 用模糊匹配搜索命令、文件和标签页。

设置

按 Cmd+, / Ctrl+, 打开独立的设置窗口:通用、外观、编辑器、终端、Shell、通知、快捷键、主机、Git、高级、更新。

搜索可以按名称或关键词找到设置项,Cmd+F 聚焦搜索框。墨间默认跟随系统外观;视图 › 外观 可以覆盖它,外观页的主题网格还可以从十种配色里选一种(Petal、Mist、Meadow、Dusk、Tide、Apricot、Aurora、Dune、Paper、Plain),统一决定窗口、编辑器与终端的颜色。

远程项目

  1. 在 设置 › 主机 中添加主机。
  2. 在该行选择 配置服务器。墨间会把 mojian-server 与 libghostty-vt 上传到 ~/.local/share/mojian,并检查服务器能否响应。
  3. 从服务器徽标选择该主机并打开文件夹。

配置不需要 root 权限、监听端口或系统服务。

文件树列出主机上的文件。打开文件时才读取内容,保存和文件操作直接写回。Git 也在主机上运行。项目打开后保持加载,切回时恢复标签页和终端,不需要重新读取。

远端服务器及其终端在墨间或 SSH 连接断开后仍然存活。每个终端都会记住所属的服务器。运行 mojian-server -stop 可以显式结束服务器。

更新

打开 设置 › 更新 检查 GitHub 上最新的签名版本:

  • 检查更新 报告是否有更新版本。
  • 安装更新 下载并校验签名。
  • 重启更新 应用已暂存的更新并重新启动墨间。

自动更新要求安装位置可写,例如 macOS 应用包、Linux 用户目录安装或 Windows 安装器。安装在 /opt 的 .deb 或 .rpm 由包管理器负责更新。

快捷键

应用内会按平台显示对应按键。下表是默认绑定;设置 › 快捷键 可以重新绑定、恢复默认或解除绑定。标签页与窗格的默认键位跟随 Ghostty:⌘ 用于文件、标签页与工具,⌘⌥ 用于在窗格间移动,⌃ 用于旁边的面板。

操作 macOS Linux
打开项目 ⌘O Ctrl+O
打开文件 ⌘P Ctrl+P
新建文件 ⌘N Ctrl+N
新建文件夹 ⇧⌘N Ctrl+Shift+N
重命名选中项 F2 F2
移到废纸篓 ⌘⌫ Ctrl+Backspace
保存 ⌘S Ctrl+S
新建标签页 ⌘T Ctrl+Shift+T
关闭窗格 / 标签页 ⌘W / ⌥⌘W Ctrl+Shift+W / Ctrl+Alt+W
下一个 / 上一个标签页 ⇧⌘] / ⇧⌘[ Ctrl+Tab / Ctrl+Shift+Tab
显示标签页 1-9 ⌘1…⌘9 Alt+1…Alt+9
向右 / 向下拆分 ⌘D / ⇧⌘D Ctrl+Shift+O / Ctrl+Shift+E
向左 / 向上拆分 在设置中绑定 在设置中绑定
聚焦相邻窗格 ⌥⌘ + 方向键 Ctrl+Alt + 方向键
移动当前窗格 拖动,或在设置中绑定 拖动,或在设置中绑定
放大窗格 ⇧⌘↩ Ctrl+Shift+Enter
显示 / 隐藏文件树 ⌘B Ctrl+B
打开 / 关闭终端 ⌃ + 反引号 Ctrl + 反引号
SSH 终端 ⇧⌘S Ctrl+Shift+S
Git 工作区 ⌃⇧G Ctrl+Shift+G
命令面板 ⇧⌘P Ctrl+Shift+P
设置 ⌘, Ctrl+,

有两个 Ghostty 键位留给编辑器:⌘[ / ⌘] 减少 / 增加缩进,⌘Enter 在下方插入一行。

在 Windows 上,Cmd 键位对应 Ctrl;设置 › 快捷键 会显示实际按键。终端快捷键在 macOS、Linux 和 Windows 上可用;SSH 快捷键仅在 macOS 和 Linux 上可用。

从源码构建

墨间需要 Go 1.27.3 或更高版本。MyGo 作为 Go tool 固定在 go.mod 中,所以第一次运行 go tool mygo 会下载对应版本。

git clone https://github.com/ox0pine/mojian.git
cd mojian

go tool mygo dev        # 开发模式,修改后自动重载
go test ./...           # 单元与集成测试
go tool mygo vet .      # go vet 与 MyGo 的 UI 生命周期检查

go tool mygo dev -web 会在浏览器中打开界面,文件只保存在内存里。

无头 UI 测试工具

cmd/harness 通过 mygo-mcp 把真实的窗口与设置视图提供给 MCP 客户端,agent 无需桌面窗口即可检查、点击、输入并截图界面:

go run ./cmd/harness                 # http://127.0.0.1:8080/mcp
go run ./cmd/harness -addr 127.0.0.1:8090

每次运行都会在临时目录中生成一个一次性项目;这些夹具绝不会打开原生窗口、启动终端,也不会触碰你的项目与设置。该端点没有身份验证,请保持在回环地址上。

发布构建

go tool mygo build -platform darwin/arm64,darwin/amd64
go tool mygo build -platform linux/amd64,linux/arm64
go tool mygo build -platform windows/amd64,windows/arm64

产物位于 build/<系统>-<架构>/。macOS 生成 .app 与 .dmg;Linux 生成 .tar.gz、.deb 与 .rpm;Windows 生成应用与 mojian-setup-<版本>-<架构>.exe。

修改会话协议或 cmd/mojian-server 后,重新生成嵌入的远程二进制:

go generate ./internal/remotebin

发布版本

推送 vX.Y.Z tag 会运行 .github/workflows/release.yml:先测试代码树,再构建全部平台,创建草稿 Release,上传安装包和 SHA256SUMS,所有上传成功后才正式发布。完整流程见 RELEASING.md。

每次发布包含:

  • macOS:mojian-<版本>-arm64.dmg 和 mojian-<版本>-amd64.dmg
  • Linux:mojian-<版本>-linux-{amd64,arm64}.tar.gz、对应的 .deb 与 .rpm 包和 install.sh
  • Windows:mojian-setup-<版本>-{amd64,arm64}.exe、install.ps1 和 mojian-<版本>-windows-{amd64,arm64}.tar.gz
  • 签名更新包(*-darwin-*.tar.gz、*-linux-*.tar.gz、*-windows-*.tar.gz)与 update-<target>.json 清单
  • SHA256SUMS

设计

墨 #1F1B16,纸 #FBF7EF,朱砂 #D24A2B。几乎一切都是纸上的墨,只有光标保留朱砂,那是页面唯一提高的声音。

致谢

许可证

MIT,详见 LICENSE。

探索相关项目