A pleasant note-taking platform.
For more information, please visit VNote's Home Page.
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.
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
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
- GitHub Issues;
- Email:
tamlokx at gmail.com;
Thank users who donated to VNote!
- 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-msvchost for the Windows kit above - Optional: clang-format for the formatting hooks
After cloning the repository, run the initialization script to set up your development environment:
Linux/macOS:
bash scripts/init.shWindows:
scripts\init.cmdThis 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
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-LocationLinux/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.
- Open the root
CMakeLists.txtand select a kit matching your Qt and compiler architecture. On Windows, select Desktop Qt 6.10.3 MSVC2022 64bit if installed. - Under Projects > Build Settings, use Ninja and separate fresh build directories,
such as
build-typst-debugandbuild-typst-release. Do not reuse a stale build cache from another toolchain. - In Initial Configuration, add this Windows CMake parameter for both profiles:
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.
-DVTEXTEDIT_CARGO_EXECUTABLE:FILEPATH=%{Env:USERPROFILE}/.cargo/bin/cargo.exe - Add
-DVNOTE_BUILD_TESTS:BOOL=ONto 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. - Open a
.typstnote 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.
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.

