vnotex/vnote

C++docs.vnote.fun
macOSWindowsLinux

Alternative zu Notion、Evernote

A pleasant note-taking platform with native speed, majoring in Markdown, MindMap, Typst, and plain text.

vnotevimmarkdownnote-takingeditormathjaxmindmaptypst
Sterne-Wachstum
Sterne
13k
Forks
1.3k
Wochenwachstum
+11
Issues
174
5k10k
Feb. 2017Apr. 2020Juli 2023Okt. 2026
README

VNote

CI-Windows CI-Linux CI-MacOS

简体中文

Project on Gitee

A pleasant note-taking platform.

For more information, please visit VNote's Home Page.

VNote

Description

VNote is a Qt-based, free and open source note-taking application. It combines note management with an excellent editing experience across multiple document formats.

VNote runs on Linux, Windows, and macOS, and requires Qt 6.9+. Qt 5.15 and Windows 7 are no longer supported.

Supported formats

VNote is more than a Markdown editor — these formats are supported today:

  • Markdown (.md, .mkd, .rmd, .markdown): write, edit, and preview Markdown notes
  • Typst (.typst): write and edit typeset documents with the native Typst editor and live PDF preview
  • Plain text and source code (.txt, .log, .py, .cpp, .js, .json, .yaml, and more): edit text notes, logs, code, and configuration files
  • Mind maps (.mmm, .emind): create and edit mind maps with the native mind-map editor
  • PDF (.pdf): read PDF documents with the built-in viewer

Main

Downloads

Continuous builds on master branch could be found at the Continuous Build release.

Latest stable builds could be found at the latest release or Gitee release

Supports

Thank users who donated to VNote!

Development

Prerequisites

  • Git, CMake 3.21+, Ninja, Python 3, and a C++20-capable compiler (the syntax indexer uses C++20; VNote uses C++17)
  • Qt 6.9+ development packages, including Core5Compat, SVG, WebChannel, WebEngineWidgets, PDF, LinguistTools, and matching Qt Gui private headers
  • On Windows: Visual Studio's Desktop development with C++ workload and Windows SDK, with a 64-bit MSVC Qt kit (the development setup uses Qt 6.10.3 MSVC2022 64bit)
  • Rustup and the Rust version pinned in rust-toolchain.toml (currently 1.99.0); use the x86_64-pc-windows-msvc host for the Windows kit above
  • Optional: clang-format for the formatting hooks

Initialize the checkout

After cloning the repository, run the initialization script to set up your development environment:

Linux/macOS:

bash scripts/init.sh

Windows:

scripts\init.cmd

This script will:

  • Initialize and update all git submodules
  • Install pre-commit hooks for automatic code formatting with clang-format
  • Set up the vtextedit submodule pre-commit hook

Install the Typst build toolchain

VNote requires the native Typst backend. Install Rustup first, then install the pinned Rust toolchain. These commands assume Rustup's default installation location.

Windows (PowerShell, no PATH change required):

& "$env:USERPROFILE/.cargo/bin/rustup.exe" toolchain install 1.99.0 --profile minimal
Push-Location libs/vtextedit/tools/typst-backend
& "$env:USERPROFILE/.cargo/bin/cargo.exe" --version
& "$env:USERPROFILE/.cargo/bin/rustc.exe" --version
Pop-Location

Linux/macOS:

rustup toolchain install 1.99.0 --profile minimal
(cd libs/vtextedit/tools/typst-backend && cargo --version && rustc --version)

CMake builds the locked Rust dependencies into the vtextedit_typst shared library, linked by VTextEdit and bundled with VNote. No separate typst CLI or Tinymist installation is required. The first build needs network access to fetch dependencies.

Qt Creator

  1. Open the root CMakeLists.txt and select a kit matching your Qt and compiler architecture. On Windows, select Desktop Qt 6.10.3 MSVC2022 64bit if installed.
  2. Under Projects > Build Settings, use Ninja and separate fresh build directories, such as build-typst-debug and build-typst-release. Do not reuse a stale build cache from another toolchain.
  3. In Initial Configuration, add this Windows CMake parameter for both profiles:
    -DVTEXTEDIT_CARGO_EXECUTABLE:FILEPATH=%{Env:USERPROFILE}/.cargo/bin/cargo.exe
    
    For a custom Cargo installation, use its actual executable path. On Linux/macOS, ensure Cargo is on Qt Creator's build environment PATH, or set the same CMake variable to its executable path. Initial Configuration applies to a new build directory; an already configured directory needs its current CMake configuration updated too.
  4. Add -DVNOTE_BUILD_TESTS:BOOL=ON to the Debug profile if you want the VNote tests. Configure, then build the vnote and lrelease targets; select vnote to run/debug. The Typst shared library is a build dependency, not a separate run target.
  5. Open a .typst note in VNote and check that its preview renders. To smoke-test the Windows library directly from the repository root:
    python scripts/e2e/smoke_typst_package.py --library build-typst-release/src/vtextedit_typst.dll
    

Typst runs on bounded background threads inside VNote. Timeouts discard results but cannot forcibly stop native calls; shutdown waits for active calls to return. The shared library is required at startup, and native compiler faults can affect VNote.

For a second VNote process, --no-single-instance skips locking/IPC but does not isolate user data. Follow the isolated GUI smoke recipe when testing with a disposable profile and notes.

For more development guidelines, see AGENTS.md.

License

VNote is licensed under GNU LGPLv3.

Bundled third-party material and the notices its licenses require — the Lucide (ISC/MIT) and IconPark (Apache-2.0) icon sets — are recorded in THIRD-PARTY-NOTICES.md.