treesheets

aardappelZlib活跃维护

把大纲、思维导图和表格揉在一起的自由数据整理工具,用层级结构组织信息,适合头脑风暴和知识管理。

Hierarchical spreadsheet: a free-form data organizer that replaces outliners, mind maps and spreadsheets.

v2.23.10发布于 2026-11-08 18:59 UTC3,198star +6 / 7 天226fork同步于 2026-11-10 11:41 UTC

怎么上手

由 README 提炼,执行前请确认
chmod +x TreeSheets-*.AppImage
./TreeSheets-*.AppImage
硬件要求按 README 说明

README 未说明具体硬件要求;提供 Windows、macOS、Linux 预编译二进制,Linux 包基于 Ubuntu 22.04 构建,需相近或更新版本的系统。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

层级电子表格,用嵌套网格统一替代大纲、思维导图和表格来组织复杂数据

把大纲、思维导图和表格揉在一起的自由数据整理工具,用层级结构组织信息,适合头脑风暴和知识管理。

核心能力

  • 用嵌套网格表达层级结构,比普通表格更适合复杂数据
  • 同时覆盖待办、日历、项目管理、头脑风暴等场景
  • 提供 Windows、macOS、Linux 预编译包和 AppImage
  • 内置 gettext 多语言界面翻译流程
  • 附带 Claude Code 技能,可脚本化操作运行中的文档

容易踩的坑

macOS 应用未用 Apple Developer ID 签名,首次打开会被拦截,需在隐私与安全里点仍要打开或用 xattr 去隔离属性;Linux 的 Debian 包和 AppImage 基于 Ubuntu 22.04 构建,过旧的发行版可能缺依赖;从源码构建时若未单独安装 wxWidgets,需加 -DTREESHEETS_BUNDLE_WXWIDGETS=ON 才会静态编译 wxWidgets。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.23.10
  1. v2.23.10最新正式版2026-11-08 · 2026-11-08 18:59 UTC

    Changes since v2.23.9:

    • Draw the tick of a todo checkbox accurately in SVG exports (fa2d943)
  2. v2.23.92026-11-08 · 2026-11-08 17:30 UTC
    查看更新说明

    Changes since v2.23.8:

    • Open the link dialog with Ctrl+K (60fc110)
  3. v2.23.82026-11-08 · 2026-11-08 11:54 UTC
    查看更新说明

    Changes since v2.23.7:

    • Keep an open todo checkbox empty with light text (c70eb2f)
  4. v2.23.72026-11-07 · 2026-11-07 17:37 UTC
    查看更新说明

    Changes since v2.23.6:

    • Draw the tick of a todo checkbox accurately in PDF exports (b1b334e)
  5. v2.23.62026-11-07 · 2026-11-07 16:44 UTC
    查看更新说明

    Changes since v2.23.5:

    • Keep the distance between a todo checkbox and its text in PDF exports (9c70bb2)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Welcome to the TreeSheets productivity tool!

    TreeSheets is a "hierarchical spreadsheet" that is a great replacement for spreadsheets, mind mappers, outliners, PIMs, text editors and small databases.

    Suitable for any kind of data organization, such as todo lists, calendars, project management, brainstorming, organizing ideas, planning, requirements gathering, presentation of information, etc.

    It's like a spreadsheet, immediately familiar, but much more suitable for complex data because it's hierarchical. It's like a mind mapper, but more organized and compact. It's like an outliner, but in more than one dimension. It's like a text editor, but with structure.

    Community

    If you like, you are kindly invited to join the Discord channel and the Google group for discussion. The community maintains a wiki on this GitHub page.

    Installation

    Pre-built binaries for Windows, macOS and Linux are available at the Release section.

    On macOS, drag TreeSheets from the disk image into your Applications folder. The app is not signed with an Apple Developer ID, so macOS blocks it when you first open it. On macOS 15 and later, try to open it once, then go to System Settings > Privacy & Security and click "Open Anyway". On older versions, right-click the app, choose Open, and confirm. Alternatively, run xattr -dr com.apple.quarantine /Applications/TreeSheets.app in Terminal. You only need to do this once.

    For Linux, there are packages for Debian-based distributions and AppImages (x86_64 and aarch64) that run on most other distributions. To use an AppImage, download it, make it executable (chmod +x TreeSheets-*.AppImage) and start it.

    Both are built on Ubuntu 22.04, so they need a distribution of about the same age or newer. The Debian packages could also be installed on other Debian-based distributions, depending on whether the required dependency packages are available.

    If you use Flatpak, you can install TreeSheets from Flathub.

    Source Code

    This repository contains all the files needed to build TreeSheets for various platforms.

    License

    TreeSheets has been licensed under the ZLIB license (see ZLIB_LICENSE.txt).

    Workflow status

    Structure

    src contains all source code. The code is dense, terse, and with few comments, typical for a codebase that was never intended to be used by more than one person (me). On the positive side, you'll find the code very small and simple, with all functionality easy to find and only in one place (no copy pasting or over-engineering). Enjoy.

    TS is the folder that contains all user-facing files, typically the build process results in an executable to be put in the root of this folder, and distributing to users is then a matter of giving them this folder.

    .claude/skills/treesheets-agent is a skill that lets Claude Code inspect and script the document open in a running TreeSheets, see TS/docs/AGENT_SOCKET.md. Outside this repository, you can install it as a plugin:

    /plugin marketplace add aardappel/treesheets
    /plugin install treesheets@treesheets
    

    Claude Code doesn't auto-update plugins from third-party marketplaces by default. To get new versions of the skill automatically, enable it under /plugin → Marketplaces → treesheets → Enable auto-update.

    Ideas for future features and known bugs are tracked in the issues.

    Building

    This project uses CMake to enable compilation on various platforms and CPack on top of it to package the produced binaries. The build, installation and packaging instructions are within CMakeLists.txt. If you're comfortable with a C++ compiler and CMake, these steps will get you a working build of TreeSheets:

    1. Clone this repository
    git clone https://github.com/aardappel/treesheets
    
    1. Change the working directory to the working tree
    cd treesheets
    
    1. Configure the build system
    cmake -S . -B _build -DCMAKE_BUILD_TYPE=Release
    

    On Windows ARM this needs the Visual Studio C++ compiler. With a Visual Studio generator, open _build/TreeSheets.sln after configuring and select Debug or Release in the IDE. Accept project reloads when CMake regenerates the solution.

    1. Build and package for binary distribution
    cmake --build _build --target package -j
    
    PlatformResult
    WindowsA ZIP archive for portable usage and an installer
    macOSA disk image for Drag and Drop installation
    LinuxA binary Debian package

    Alternatively, to only build without packaging:

    cmake --build _build -j
    

    On Windows, append --config Release.

    1. Install (optional)
    cmake --install _build
    
    • macOS: append --prefix <directory> to specify another installation root for the bundle.
    • Linux: usually requires root privileges, e.g. run this command with sudo.

    If you do not have wxWidgets installed separately (e.g. as shared library on your distribution or operating system) or want to build it within the TreeSheets CMake project as a static library anyway, add -DTREESHEETS_BUNDLE_WXWIDGETS=ON to the build configuration. This builds wxWidgets from source with wxBUILD_SHARED and wxBUILD_INSTALL set to off, even if an installed wxWidgets is found, so that the wxWidgets libraries are statically linked into TreeSheets and no additional wxWidgets files get installed.

    CMake downloads dependencies as needed and reuses them on subsequent builds. Leave FETCHCONTENT_FULLY_DISCONNECTED at its default OFF. Setting it to ON skips downloads and updates, so adding or changing a dependency can break an existing build. If CMake reports that a dependency's source directory is missing while this option is enabled, reset the saved setting (on Windows or any other platform):

    cmake -S . -B _build -DFETCHCONTENT_FULLY_DISCONNECTED=OFF
    

    This persists in _build/CMakeCache.txt; you do not need to repeat it for each build. Use ON only when intentionally reusing already populated dependencies whose versions have not changed.

    Translating

    The user interface is translated with gettext. The translations live in TS/translations/<language>/ts.po, and the template they are derived from is TS/translations/ts.pot. You need the gettext tools (xgettext, msgmerge, msgfmt, and msginit for new languages), which are usually already present on Linux and macOS, or see here for Windows. After configuring the build as described above (step 3), the workflow is driven by three CMake targets:

    StepCommandWhat it does
    1cmake --build _build --target update-potExtracts the translatable strings from the source code into ts.pot
    2cmake --build _build --target update-poMerges the new strings from ts.pot into all ts.po files
    3Translate the new (empty or fuzzy) entries in your language's ts.po, e.g. with Poedit or a text editor
    4cmake --build _build --target update-moCompiles all ts.po files into the binary ts.mo files the program loads

    Step 1 is normally done by the developer after changing strings in the source code. To add a new language, run this inside TS/translations (replace lang with a code like it, or pt_BR), then continue with step 3:

    msginit --input ts.pot --locale=lang --output=lang/ts.po
    

    More details can be found in TS/translations/readme_translations.txt.

    Contributing

    I welcome contributions, especially in the form of neatly prepared pull requests. The main thing to keep in mind when contributing is to keep as close as you can to both the format and the spirit of the existing code, even if it goes against the grain of how you program normally. That means not only using the same formatting and naming conventions (which should be easy), but the same non-redundant style of code (no under-engineering, e.g. copy pasting, and no over engineering, e.g. needless abstractions).

    Also be economic in terms of features: treesheets tries to accomplish a lot with few features, additional user interface elements (even menu items) have a cost, and features that are only useful for very few people should probably not be in the master branch. Needless to say, performance is important too. When in doubt, ask me :)

    Try to keep your pull requests small (don't bundle unrelated changes) and make sure you've done extensive testing before you submit, preferrably on multiple platforms.