Your handy, infinite, brainstorming tool!
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.
Join our Discord server to engage with our community and help shape the future of Drawy!
- Install
cmakeandg++ - 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
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 |
Contributions are welcome. Please read the contributing guide before opening pull requests.
This project uses the GNU General Public License V3.
If you liked this project, then please consider supporting me!
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:
- 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.
- 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
- 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!

