A lighter, faster, more comfortable desktop editor.
English | 简体中文
winc is built with Rust and its own rendering engine: it starts in 0.1 seconds and uses just 52 MB of memory with 100,000 lines open. Multiple cursors, find and replace, and side-by-side diffs are all there, and every keystroke and scroll responds instantly.
| Measure | Result |
|---|---|
| Cold start to first frame | 119 ms (median of 20 runs) |
| Resident memory with 100,000 lines open | 52 MB |
| A 1 GB file, editable and highlighted | 220 ms |
Measured on macOS; results vary with hardware and system load.
| Area | Capabilities |
|---|---|
| Editing | Multiple cursors, find and replace, native input methods, smooth scrolling in gigabyte-sized files, and an experimental Vim mode |
| Syntax | Highlighting for common programming, markup, data, and configuration languages, plus lightweight go-to-definition and usages without a language server |
| Formatting | Whole-file formatting with external tools such as rustfmt, Prettier, Black, Ruff, and gofmt |
| Preview | Markdown with math and Mermaid diagrams, images, SVG, PDF (macOS and Windows), Word documents (docx), and spreadsheets (xlsx, csv), with the source one click away |
| Git | Side-by-side diffs with word-level highlights, staging by hunk, commit and push, a commit graph, and blame |
| Project | A file tree, quick open, and project search that follows .gitignore |
| Terminal | An integrated terminal at the bottom of the window |
| Remote | Experimental SSH remote: open a folder on a Linux host and edit, search, format, use Git, and open terminals there. On Windows, open folders inside WSL distributions |
| Interface | Sixteen built-in themes, light and dark, and a complete interface in English and Simplified Chinese |
| Modules | Git, the terminal, and SSH remote can each be turned off. First-time setup on the start page offers the appearance, theme, language, and modules |
| Updates | Signed in-app updates on all three platforms, with the release notes shown in the app after each update |
Touchscreens support tapping buttons and placing the caret, double-tapping to select a word, swiping to scroll, and dragging scrollbars and panel dividers. Hold for 500 ms to open the context menu. Swipes stay in the region where they started and stop on release. Additional fingers cancel the current gesture; lift all fingers before starting another. On Windows, drag the title bar to move the window, double-tap it to maximize or restore, and drag the window edges to resize. Window dragging and edge snapping use the same native Windows behavior as mouse input.
Image and SVG previews zoom like the PDF preview: hold Ctrl (⌘ on macOS) and scroll, pinch, or
press Ctrl/⌘ with +, - or 0; the point under the pointer stays in place. Scroll or drag a
zoomed image to pan, and double-click to fit it again. This also works in the SVG split preview.
| Platform | Requirements | Package |
|---|---|---|
| macOS | macOS 11 or later, Apple silicon or Intel | Disk image |
| Linux | x86_64, X11 or Wayland | AppImage, deb, Arch repository |
| Windows | Windows 10 1809 or later, x86_64 | NSIS, MSI, portable ZIP |
The portable ZIP keeps settings and state in the data folder beside winc.exe; delete that
folder to keep them in the user profile instead.
winc is developed and tested mainly on macOS. Download it from winc.si; all versions are on GitHub Releases.
winc . # open the current folder
winc file.rs:12:5 # open a file at a line and column
winc --wait file # wait until the tab closes, for example as the Git editor
cargo build 2>&1 | winc - # read standard inputThe Windows installers and the Linux deb and Arch packages add winc to PATH; the Windows portable ZIP leaves PATH unchanged. On macOS, choose Winc → Install winc Command… from the menu bar or run Shell Command: Install winc Command from the command palette; with the Linux AppImage, use the command palette.
On macOS the app is started by the system, so it does not inherit the environment variables of your shell. Use winc --new-instance to keep them.
winc builds with Rust 1.99.1; rust-toolchain.toml selects the toolchain automatically.
cargo run --release # build and run
cargo run --release -- <path> # open a file or folderFor versioning, signing configuration and release workflows, see Releasing winc.
cargo xtask test # test the crates changed since HEAD
cargo xtask test --all # test the whole workspace
cargo clippy --workspace --all-targets -- -D warnings
RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps
cargo xtask bench # measure startup, memory, and scrolling against budgetsThe interface is written in Rust. Windows come from winit, and rendering is done by winc's own CPU rasterizer. On macOS, frames are written directly to an IOSurface.
The workspace is split into crates by responsibility:
| Crate | Responsibility |
|---|---|
winc-core |
Text, editing, undo, and diffing, independent of the interface |
winc-syntax |
Lexers for syntax highlighting |
winc-editor |
Editor logic: documents, file tree, search, Git, and formatting |
winc-vim |
Vim mode without the interface: key notation, the command table, parsing, and evaluation |
winc-backend |
File system access for local paths and for paths on remote hosts |
winc-server |
The server process that runs on a remote host and serves file operations over SSH |
winc-watch |
Watches folders on the machine that holds them (WSL distributions, remote hosts) |
winc-render |
Rendering: glyphs, rasterization, and presentation |
winc-preview |
Previews for images, SVG, Markdown, PDF, Word documents, and spreadsheets |
winc-typeset |
Layout for the Markdown preview |
winc-pty |
Terminal emulation and the pseudo-terminal helper process |
winc-config |
Configuration and state files |
winc-i18n |
Interface strings (Fluent bundles) |
winc-version |
The product version, read from the VERSION file |
winc-app |
The application: windows, events, and views |
winc |
The executable's entry point, which only calls into winc-app |
xtask |
Development automation: tests, benchmarks, and packaging |
Contributions are welcome. Please read CONTRIBUTING.md before you open a
pull request, and open it against the dev branch. All contributors sign the Contributor License
Agreement and follow the Code of Conduct. To report a
vulnerability, see SECURITY.md.
- Website: winc.si
- Email: support@deeix.com
- Telegram: t.me/deeix_chat
- X: @DEEIX_AI
winc is licensed under the Apache License, Version 2.0. See NOTICE.