Skip to main content

Local-first drawing tool

Project description

draw

Local-first, sketch-style drawing tool. Excalidraw-inspired, built on Rust with a vanilla JS frontend.

Single binary. No cloud. Your drawings live in ~/.config/draw/drawings/.

Features

  • 9 tools: Select, Rectangle, Ellipse, Diamond, Line, Arrow, Pen (freedraw), Text, Eraser
  • Sketch-style fills: hachure (diagonal lines), cross-hatch, solid, none
  • Full interactions: drag, resize, multi-select, rubber band, pan (scroll/space+drag), zoom (ctrl+scroll)
  • Undo/redo: all operations, including batched multi-element changes
  • Copy/paste/duplicate with proper ID remapping
  • Z-ordering: bring to front/back/forward/backward
  • Styles: stroke color/width/dash, fill color/pattern/density, opacity, font
  • Export: SVG and PNG
  • Document management: auto-save, dirty indicator, rename, list
  • Desktop app: native window via webview (same UI, no browser needed)
  • Python bindings: import dkdc_draw
  • Keyboard-driven: full shortcut set, ? for help overlay

Install

From source (Rust)

cargo install dkdc-draw --features webapp

From source (Python)

uv tool install dkdc-draw

Development

bin/setup    # install dependencies
bin/install  # build and install CLI

Usage

draw --webapp       # launch web UI
draw --app          # launch desktop app
draw new [name]     # create new drawing
draw open <file>    # open .draw.json file
draw list           # list saved drawings
draw export-svg <file> [-o output.svg]
draw export-png <file> [-o output.png] [--scale 2.0]

Python

import dkdc_draw

doc = dkdc_draw.new_document("sketch")
dkdc_draw.save_document(doc, "sketch.draw.json")
svg = dkdc_draw.export_svg(doc)

Keyboard shortcuts

Key Action
V Select
R Rectangle
O Ellipse
D Diamond
L Line
A Arrow
P Pen (freedraw)
T Text
E Eraser
G Toggle grid snap
? Help overlay
Ctrl+Z Undo
Ctrl+Shift+Z Redo
Ctrl+S Save
Ctrl+A Select all
Ctrl+D Duplicate
Delete Delete selected
] / [ Bring to front / Send to back

Architecture

crates/
  draw-core/     Document model, serialization, SVG/PNG export, tiny-skia renderer
  draw-cli/      CLI binary (clap)
  draw-webapp/   Axum web server (port 1213) + embedded vanilla JS frontend
  draw-app/      Desktop app (wry webview)
  draw-wasm/     WASM bindings for the renderer
  draw-py/       PyO3 Python bindings

Development

bin/build    # build all (Rust + Python)
bin/check    # run all checks (format, lint, test)
bin/format   # format all code
bin/test     # run all tests

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dkdc_draw-0.2.1.tar.gz (332.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_x86_64.whl (81.0 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.39+ x86-64

dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_aarch64.whl (80.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.39+ ARM64

dkdc_draw-0.2.1-cp311-abi3-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

dkdc_draw-0.2.1-cp311-abi3-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file dkdc_draw-0.2.1.tar.gz.

File metadata

  • Download URL: dkdc_draw-0.2.1.tar.gz
  • Upload date:
  • Size: 332.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dkdc_draw-0.2.1.tar.gz
Algorithm Hash digest
SHA256 52276aacbfaa856d9b3af3cd68aa2388a75dffa79ef20426d5426e5caa3053a8
MD5 694e8f41791d5d0cb4f6de20cf22eb7b
BLAKE2b-256 d9b5eb53b2d425205865e99c1e252aa91b33a36f78fdd7f4f6dcccedeb98f1f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dkdc_draw-0.2.1.tar.gz:

Publisher: release-python.yml on dkdc-io/draw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 26985717ab343b0d92b7b4cc8b31a53feae5bbc097da92259e53ebc03cae2e02
MD5 fef36d245b3e0d92ba578ff7c392c6b0
BLAKE2b-256 9479031b089983ac984d1537ed9e79dd543496a406e763137f96799a9ebc11c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_x86_64.whl:

Publisher: release-python.yml on dkdc-io/draw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 f2712b05d922c801d8290cec26e10c77ef8b7c6ab15cb5c6cf6c410fd407d18d
MD5 3dd6c51db70ee6bff6ddbdd14d4cfda2
BLAKE2b-256 c599b3919dc7cf6dbe6e0131a3717c31dcc34e7b3699f0d5eea9633a2812682a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dkdc_draw-0.2.1-cp311-abi3-manylinux_2_39_aarch64.whl:

Publisher: release-python.yml on dkdc-io/draw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dkdc_draw-0.2.1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dkdc_draw-0.2.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c86bd8250c68fd38006d8a4d9a1ac83330f089ccf5158ba32402f8558cb2e388
MD5 051d628d206f85d0b858703e49ab7dfa
BLAKE2b-256 aea719c6ebc8867c63cd4125bba21414bc6aeee3ca8d3ce61d83e282a595d7e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dkdc_draw-0.2.1-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release-python.yml on dkdc-io/draw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dkdc_draw-0.2.1-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dkdc_draw-0.2.1-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c4d9039c12f793ab5739752025df7bd633268408afdf1489fea445d37210576
MD5 84871c801d3201507164807a833eeae8
BLAKE2b-256 33bf36914376252fe7dd34c91f3500c0abc3295456ff26115b332ea5bbbfd8eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for dkdc_draw-0.2.1-cp311-abi3-macosx_10_12_x86_64.whl:

Publisher: release-python.yml on dkdc-io/draw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page