Pel is a lightweight, cross-platform pixel art editor written in Go using the Fyne UI toolkit. Create beautiful pixel art with an intuitive interface, powerful color management, and real-time canvas manipulation.
- 🖼️ Flexible Canvas - Create custom-sized pixel art canvases (up to 1024x1024)
- 🎨 Advanced Color Picker - HSV/RGBA color selection with visual preview
- 🎯 Color Palette Management - Save and manage up to 64 color swatches
- 🔍 Zoom & Pan - Smooth canvas navigation with mouse wheel zoom
- 💾 File Operations - Open, save, and export PNG images
- 🖱️ Multiple Brush Tools - Pencil, eraser, fill, and more (coming soon)
- 🌈 Automatic Color Extraction - Import colors from existing images
- ⚡ Performance - Built with Go for speed and efficiency
- Go 1.25 or later
- Platform-specific dependencies for Fyne:
- macOS: Xcode command line tools
- Linux:
libgl1-mesa-dev xorg-dev(Debian/Ubuntu) or equivalent - Windows: No additional dependencies
go install github.com/carlomunguia/pel/pel@latestgit clone https://github.com/carlomunguia/pel.git
cd pel
go build -v ./pel# If installed via go install
pel
# Or run from source
go run ./pel-
Create a new canvas:
File → New- Enter your desired width and height (e.g., 32x32)
- Click "Create"
-
Pick a color: Use the color picker on the right
- Drag the hue slider to select a color
- Click in the color square to choose your shade
- The color appears in the preview box
-
Add to palette: Click an empty swatch at the bottom to save your color
-
Start drawing: Click on the canvas to paint pixels!
-
Save your work:
File → SaveorFile → Save As
| Action | Method |
|---|---|
| Zoom In/Out | Mouse scroll wheel |
| Pan Canvas | Middle-click + drag |
| Draw Pixel | Left-click on canvas |
- Move the vertical slider to select hue
- Click in the color square for saturation/value
- Selected color appears in preview
- Click canvas to draw with selected color
- Select a color with the picker
- Click an empty swatch slot to save
- Click saved swatches to quickly switch colors
- Up to 64 swatches available
File → Opento load an image- Pel automatically extracts unique colors
- Colors populate available swatch slots
| Operation | Menu Path | Shortcut |
|---|---|---|
| New Canvas | File → New |
- |
| Open Image | File → Open |
- |
| Save | File → Save |
- |
| Save As | File → Save As |
- |
| Export | File → Export |
Coming soon |
| Quit | File → Quit |
- |
Pel follows a clean, modular architecture:
pel/
├── pel/ # Main application entry point
├── apptype/ # Core types and interfaces
├── pelcanvas/ # Canvas widget and rendering
│ └── brush/ # Brush tools implementation
├── swatch/ # Color swatch widgets
├── ui/ # User interface components
│ ├── layout.go # Main layout
│ ├── menus.go # File menu handlers
│ ├── picker.go # Color picker setup
│ └── swatches.go # Swatch panel
└── util/ # Utility functions
# Clone the repository
git clone https://github.com/carlomunguia/pel.git
cd pel
# Download dependencies
go mod download
# Build
go build -v ./pel
# Run tests
go test ./...- Go: 1.25+
- Fyne: v2.7.0+
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Fyne - A beautiful cross-platform GUI toolkit
- Color picker by lusingander/colorpicker
Carlo Munguia - @carlomunguia
Project Link: https://github.com/carlomunguia/pel
Made with ❤️ and Go
