Skip to content

Repository files navigation

caxt

A layered paint application built with Python, Tkinter, and Pillow — split across multiple modules instead of one giant script.

Project layout

caxt/
├── main.py          entry point — run this
├── app.py           main window, menu, file I/O, event wiring
├── canvas.py         layer stack + compositing engine
├── tools.py          pencil, brush, spray, eraser, shapes, bucket, eyedropper, text
├── toolbar.py        left-hand tool/color/size panel
├── layers_panel.py   right-hand layers list panel
├── history.py        undo/redo stack
├── requirements.txt
└── logo.png          <- put your logo here (see below)

Setup

pip install -r requirements.txt
python main.py

Features

  • Layers — add, delete, duplicate, rename, reorder, merge down, flatten, opacity, blend modes (normal/multiply/screen/overlay)
  • Tools — pencil, brush (round/square), airbrush/spray, eraser, line, rectangle, ellipse, flood fill (adjustable tolerance), eyedropper, text, selection, move, emoji/sticker stamp
  • Paste & clipboard — Ctrl+V pastes an image straight from the OS clipboard (or an in-app copy/cut of a selection) as a new layer
  • Selection — rubber-band select, copy/cut/paste, crop to selection, trim transparent edges
  • Filters — blur, sharpen, smooth, contour, detail, edge enhance, emboss, find edges, grayscale, invert, sepia, posterize, solarize, vignette, noise — each previewable at adjustable strength, on the current layer or all layers
  • Adjustments — live brightness/contrast/saturation/sharpness sliders
  • Stickers — categorized emoji picker, stamped at any size
  • Text — font family, size, and color dialog
  • Watermark — positioned or tiled semi-transparent text stamp
  • Color — palette + full picker, recent-colors strip, named persisted palettes
  • Undo/redo — Ctrl+Z / Ctrl+Y, plus a History panel to jump to any step
  • Command palette — Ctrl+P to search and run any action
  • File I/O — New (with size presets), Open, Save, Save As, Export (rescale/JPEG quality/PDF), Insert Image as Layer, recent files list
  • Projects — save/open full layered .caxtproj files (zip of PNGs + metadata)
  • Canvas — resize, rotate, flip, zoom 25–600% + fit-to-window, grid overlay, pixel rulers, mirror/symmetry drawing
  • Other — light/dark theme, preferences, autosave, action log
  • Shortcuts — Ctrl+N/O/S/Shift+S, Z/Y undo-redo, C/X/V copy-cut-paste, D duplicate layer, A select all, Shift+A clear selection, Delete, P command palette, +/- zoom

Notes

  • Undo/redo works by snapshotting the full layer stack, so it's correct for every tool, at the cost of memory — bounded to the last 40 actions.
  • App settings (preferences, recent files, palettes, autosave) are stored under ~/.caxt/.
  • Clipboard image paste uses Pillow's ImageGrab on Windows/macOS; on Linux it falls back to xclip if installed.

About

Caxt is a modular, lightweight desktop paint and image editing application built with Python, Tkinter, and Pillow. It offers functionality similar to classic editors like Paint.NET, structured across multiple Python modules rather than a single script

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages