Skip to content

Prayag2/drawy

Repository files navigation

Note

Join our Discord server via the button below for the newest updates, announcements, and community discussions.

Static Badge

Drawy

Your handy, infinite, brainstorming tool!

GitHub Stars GitHub Forks GitHub Release

Drawy is a work-in-progress infinite whiteboard tool written in Qt/C++, which aims to be a native-desktop alternative to the amazing web-based Excalidraw.

Installation

Static Badge Static Badge

Compiling from Source

  • Install cmake and g++
  • Install Qt 6.9 or above from here or using aqtinstall
  • Clone this repository: git clone https://github.com/prayag2/drawy && cd drawy
  • Setup cmake: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
  • Compile: cmake --build build --config Release
  • Run: ./build/drawy

Keyboard Shortcuts

Future releases will allow you to change the keyboard shortcuts. For now they are hardcoded. Here's a list of all available keyboard shortcuts:

Key Combination Description
Ctrl + Z Undo
Ctrl + Y, Ctrl + Shift + Z Redo
Ctrl + + Zoom In
Ctrl + - Zoom Out
Ctrl + G Group selection
Ctrl + Shift + G Ungroup selection
P, B Freeform Tool
E Eraser Tool
S Selection Tool
R Rectangle Tool
O Ellipse Tool
L Line Tool
A Arrow Tool
M Move Tool
T Text Tool
Ctrl+A Select All
Delete Delete selection
Ctrl+S Save
Ctrl+O Open File

Contributing

Contributions are welcome. Please read the contributing guide before opening pull requests.

License

This project uses the GNU General Public License V3.

Support Me ♥

If you liked this project, then please consider supporting me!

Donate using Liberapay Buy Me A Coffee Done using PayPal

TODOs

Started: 2025-01-02 04:40PM
Development is divided into phases.
The project will eventually be open sourced. However, I will work on the first few phases myself, to maximize learning.
The following is a list of features I'll be planning to add to it:

Phase 1 (Basic Features)

  • A simple fixed size canvas to draw on using a black coloured stroke.
  • Different shapes like rectangle, ellipse, arrow, line and stroke.
  • An eraser to erase the strokes (deleting the strokes).
  • Testing.

Phase 2

  • Refactor to try to adhere to SOLID principles and utilize useful design patterns
  • A custom Qt layout for toolbar and properties bar
  • Make canvas infinite and add ability to move the viewport
  • Use an LRU cache based uniform grid to optimize moving the canvas around (now 100% faster!!)
  • A properties bar to change the following properties:
    • Colour of strokes
    • Stroke width

Phase 3

  • Buttons to zoom in/out
  • Pressure senstivity for drawing tablets
  • Selection tool to select items and do these actions:
    • Move items
    • Delete items
    • Transform items (resize) (Low priority)
    • Rotate items (Low priority)
  • Undo/redo support
  • Basic keybinding support
  • Saving the drawings
  • Text support
  • Exporting drawings to PNGs
  • Image support
  • Text formatting like bold, underline, italics, etc.
  • Better freeform smoothing algorithms
  • Allow snapping
  • Ability to store preferences
  • A "settings" page
  • Better widgets
  • Online collaboration

Feature requests are welcome!

About

Your handy, infinite, brainstorming tool!

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages