GitHub – danterolle/tilf


Tilf (Tiny Elf) is a simple yet powerful pixel art editor built with PySide6.
It’s designed for creating sprites, icons, and small 2D assets with essential tools, live preview, undo/redo, and export options.

Tilf

There are several Pixel Art Editors that do the same things and even much more,
but many require an account registration or the insertion of an e-mail or have a certain business model.

I’m not interested in all that, my goal is to be able to create sprites freely, with (almost) zero dependencies,
zero setup time, zero installations:

Tilf starts and I begin to draw what I want.

It runs on Windows, MacOS and GNU/Linux.

Download the latest release from the releases page.

Windows 11 -> Download
Tilf on Windows
MacOS 15.6 -> Download
Tilf on MacOS
GNU/Linux (ParrotOS 6.4) -> Download
Tilf on GNU/Linux

I’m aware that the code quality isn’t great.
I didn’t prioritize it when writing this.
This project was something I put together during my spare time, and a lot of it could be written much better.
There’s definitely room for improvement, so I’m more than happy to accept PRs from anyone willing to contribute.

Why doesn’t this tool have many commits?

Because I mainly used it for learning and personal purposes.
Publish it as an Open Source project might be interesting for others as well.

  • Drawing tools:
    • Pencil
    • Eraser
    • Fill (bucket)
    • Eyedropper
    • Rectangle (stroke)
    • Ellipse (stroke)
  • Canvas:
    • New image with custom dimensions
    • Zoom 1–50x (mouse wheel or slider)
    • Editable background color (alpha supported)
    • Optional grid with customizable color
    • Clear canvas
  • Workflow:
    • Undo/Redo with history up to 50 states
    • Drag & drop images to open
    • Real-time preview in a side dock (you can move it wherever you want)
  • Import/Export:
    • Open PNG, JPEG/JPG, BMP
    • Export to PNG (with or without transparency), JPEG/JPG, BMP
  • Handy details:
    • Hold Shift while drawing rectangles/ellipses to constrain to squares/circles
    • Grid is shown when zoom (cell size) is at least 4
  • Python 3, virtualenv
  • OS: Windows, MacOS or GNULinux
  • Dependencies:

I did not use uv or poetry for this project;
I don’t think it is necessary to introduce a tool of that kind for a project that is, all things considered, simple.

Build on MacOS and GNU/Linux

  1. Clone the repository:
git clone https://github.com/danterolle/tilf.git && cd tilf
  1. This project has a Makefile
    that automates all the necessary build and cleanup operations for Tilf (for MacOS and GNU/Linux only), so we just need to run:
  1. The executable will be in the dist folder.

Enjoy!

  1. Clone the repository by using Git Bash:
git clone https://github.com/danterolle/tilf.git
  1. Create a virtual environment:
  1. Activate the virtual environment:
  1. Install the dependencies:
pip install pyside6 pyinstaller pillow

Note:

  1. And finally, run the application:
  1. Clone the repository by using Git Bash:
git clone https://github.com/danterolle/tilf.git
  1. Install the dependencies:
pip install pyside6 pyinstaller pillow
  1. Run PyInstaller:
pyinstaller --name tilf --onefile --windowed --icon assets/icon.icns --add-data assets:assets --add-data style.qss:. main.py
  1. The executable will be in the dist folder.

Keyboard Shortcuts for file operations

  • File:
    • New: Ctrl+N
    • Open: Ctrl+O
    • Save: Ctrl+S
  • Edit:
    • Undo: Ctrl+Z
    • Redo: Ctrl+Y
  • Tools:
    • Pencil: B
    • Eraser: E
    • Bucket: G
    • Eyedropper: I
    • Rectangle: R
    • Ellipse: C
  • Shapes:
    • Constrain to square/circle: hold Shift
  • Export formats:
    • PNG: optionally keep transparency.
    • JPEG/JPG, BMP: no transparency.

On close, if there are unsaved changes, a recovery .png is automatically saved into a tilf_autosaves
folder next to the startup script, with a timestamped filename.

Troubleshooting – Work In Progress

ModuleNotFoundError: No module named ‘PySide6’

Ensure your virtualenv is active and run: pip install pyside6

  • Open issues for bugs or feature requests.
  • For PRs, please keep the code style consistent and explain changes clearly.
  • Feature ideas are welcome (e.g. advanced fills, selections, layers). Thank you!

GPL v3.0, see the LICENSE file for details.



Source link