Skip to content

Prayag2/drawy

Repository files navigation

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.

Community

Join our Discord server to engage with our community and help shape the future of Drawy!

Static Badge

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

Languages