Show HN: I built an offline, open‑source desktop Pixel Art Editor in Python
6 months ago (github.com)
It requires no registration, no installation, and no configuration. Just run it on any computer and start drawing freely.
6 months ago (github.com)
It requires no registration, no installation, and no configuration. Just run it on any computer and start drawing freely.
Related: I know that many people use AI image generators to make pixel art, and recently I've stumbled upon a great tool to make a proper pixelart based on AI generated input see https://github.com/jenissimo/unfake.js and live demo on https://jenissimo.itch.io/unfaker (disclaimer: I don't know the author, just thought I'd share as I find it amazing)
Which AI pixel art generator?
Any: flux or SD produce good results with a proper LoRA.
Very nice to see that this project is hand-crafted and not AI-generated like 99% of the submissions here
So, congrats on your release.
When I clicked I already thought about the comments that ask "is this vibe coded". So I kind of asked myself that question. As someone who manually codes as well as experiments with AI-assisted coding I ask myself what attitude we should develop towards AI-assisted coding in the long run. Right now on HN it almost seems like "AI shaming" at work. If you post a project that's a result of using AI you can expect a lot of critique around here. While I understand that to a certain extent I guess we also need to overcome that sentiment. After all we don't blame people using IDEs, code completion or other tools that have become the norm.
It would be similar to me posting “Show HN: I built a turbo encabulator in Rust” and I actually hired coders from Craigslist to bring my idea to life.
3 replies →
> After all we don't blame people using IDEs, code completion or other tools that have become the norm.
Because those don’t have the same issues. It’s not like IDEs, LSPs, and other tools were the target of warranted criticism and then we stopped. Rather, they never received this kind of backlash in the first place.
No IDE has ever caused millions of people absolutely unrelated to it to have to ration water.
https://archive.ph/20250731222011/https://m.economictimes.co...
To use an exaggerated analogy, it’s like saying “people are complaining about arsenic being added to food but we need to overcome that sentiment, after all we don’t blame people adding salt and pepper which have become the norm”.
4 replies →
If I can tell something is "vibe coded", that means it's bad. It doesn't matter what tools people use as long as the output is good. Vibe coding smells include:
1. Tons of pointless comments outlining trivial low-level behaviour,
2. No understanding of abstraction levels,
3. No real architecture at all,
4. Not DRY, no helper functions or inconsistent use of said functions across project,
5. Way too many lines of code.
None of these are shaming for use of any particular tool, they are just shaming the output.
1 reply →
>Right now on HN it almost seems like "AI shaming" at work.
HN leans "old school". It's the Angry Nerd trope; Comic Book Guy from the Simpsons.
The people doing "AI shaming" or claiming that "AI doesn't work" are going to have their lunch eaten.
1 reply →
Thanks! Although I had to use it for some things (like the logo, for example, and I’m not a "graphic guy"), in the end, since it’s a simple project by design, I didn’t mind, and the result isn’t bad at all.
It's really odd now that we look for more human code rather than AI Generated code, and I think this is going to be increasing in every form of data that's out there.
Genuinely why do you care?
Because we are a forum of craftspeople. The Show HN system is a good faith system for showing something that you built and can presumably engage with us about what you built.
We want to engage with the person who engineered the thing, not someone who is just going to pipe our feedback into an LLM and see what pops out.
Just like I'd consider it deceptive if it turned out that HN populated the comments with an LLM. I want to engage with humans using their own brain.
That said, I would also consider it acceptable if you mentioned that your Show HN was vibe-coded if it were. But consider the vibe shift (pun) that would happen. We'd be curious about your vibe-code workflow and the experience of vibe-coding it if it was impressive, not necessarily curious about the thing the LLM built because that part isn't necessarily interesting anymore.
Finally, it's inevitable that these lines will quickly blur over time as AI becomes increasingly centerpiece in our lives. But in this transitionary phase so far, it kinda feels like you've been actually playing on a bot server in Quake 3 when you catch yourself admiring something that you thought the OP made: it's not rewarding to realize you're just stomping bots that you thought were human.
This may not be entirely the right metaphor but I kinda see it as the difference between fast food, a top rated restaurant, and home made cooking —with fast food being AI.
Generic, does the job, not the highest quality, bleak, fast repetitious output
6 replies →
Please provide github topics (tags) for the project. It may boost your project discoverability. I often use it with github search to find interesting projects in "topic".
Done. Thanks!
> 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.
https://libresprite.github.io/
Latest Aseprite is still available with free (as in beer) source code to compile, even if it is a bit heavy on the dependencies these days, including requiring that you install a special fork of Skia iirc. I paid for it to get the pre-compiled binaries for Windows, but on Linux and OSX I always compiled it myself anyway. On FreeBSD, that is my desktop OS of choice now, I use the ancient open source version of Aseprite since that is what is most convenient to install (from the port). Maybe I should try Libresprite instead.
For my programmer art I also use old (Autodesk) Animator (in DOSBox) a lot. It is small and runs anywhere. Perfect for doodling on my phone, with some configuration to add various on-screen buttons in DOSBox. Small enough (less than 1 MB) that the entire application plus all configuration and saved working files can go into every source code repository where I want to edit some pixel art. https://github.com/AnimatorPro
Also have VGA Paint 386 installed in DOSBox everywhere. Have not used it much, but it seems good (probably more interesting for those that want something closer to a Deluxe Paint clone). https://www.bttr-software.de/products/vp386/
Then there is https://orama-interactive.itch.io/pixelorama that is open source and seems to improve at a good pace. I just never took the time to look very close.
Going to have a look at Tilf as well, to see if it is not too much work to get it to run in FreeBSD. Not being an expert in drawing anything, it helps to have many tools and switch between, as all tend to have something they do better (or easier) than the other ones.
> Going to have a look at Tilf as well, to see if it is not too much work to get it to run in FreeBSD
It should work without any issues, as long as there’s a Python interpreter you can definitely run it. If needed, let me know and I’ll try to work on it. I have plenty of other ideas to implement as well.
I'll throw my favourite into the ring, mtPaint: https://mtpaint.sourceforge.net/
Looks very nice, too bad no macOS :(
Great project!
I have one very silly question... Why is the elf logo not pixel art? :)
I’m not a graphic designer guy, I wouldn’t know where to start, but maybe in the future I could use Tilf to draw the logo! My highest artistic expression, for now, will probably be redrawing some Earthbound characters to experiment with SDL3.
Awesome program OP, I downloaded it on my Mac and it Just Works(TM).
One helpful feature would be to shift an entire row/column of pixels down X rows/columns. Perhaps if I get time I'll submit a PR for it.
Thank you, and thanks for the suggestion. I’m open to any changes or proposals that might help improve this project, so I’ll gladly accept them!
The Pencil appears to put down the foreground color, the Eraser appears to clear to the background color.
Working at the pixel level, it is extremely useful to be able to "toggle" a pixel without switching tools. MacPaint (for example) would use the foreground color if you click on a pixel whose color is not the foreground color. If you start your Pencil drawing (click) on a pixel that is the foreground color, the Pencil draws with the background color instead.
Also, a modifier (like the Option key), is a nice way to also specify the background color for the pencil (regardless of the initial pixel clicked on).
3 replies →
I like that it really is simply built and packaged, I'm sure it was fun to hack away at. There's something about gluing together a million packages which sucks the fun out of tinkering (for me, at least).
That’s also why the project was built from scratch. The only real dependency of the project is PySide6. The icons don’t come from any package. PyInstaller is used solely for bundling purposes. As outlined in the README.md, running Tilf requires nothing more than an installed version of Python (3).
Why, of all names possible, you thought TILF was the best one?
There’s no specific reason, I just liked the idea of a little elf/goblin having the freedom to draw whatever they wanted. At first, I wanted to call this project "Folletto" (in Italian, that means elf), but then I thought it would be better to keep an extremely simple name: a tiny elf who picks up his pencil and starts drawing. Tiny Elf.
Tile I’d Like to Fill.
It’s “Tilf” not TILF, and means Tiny Elf, per the docs.
Why? What’s the problem with it?
Milf, dilf, etc
3 replies →
Much "an app can be a home-cooked meal" energy here. Write a program to scratch an itch. Good to see that spirit still alive.
I share this sentiment. I like that OP is not afraid to say that the code quality might be not the best. In the end, for projects that are made for fun and out of curiosity, it doesn't matter that much (at least in the early stages).
If it becomes popular though, you can always just refactor and improve the important parts.
Thank you!
Congratulations!
What made you decide to go with PySlide6?
I already have some experience with Python/PySide6, and I was mainly interested in having a working prototype as soon as possible (I’m experimenting with SDL3 and animating squares isn’t exactly thrilling!). Plus, Qt widgets integrate very well with Python, it is so easy to create a section, especially when the documentation is well written, that helps a lot. Also, with PyInstaller, the build process for each platform is fairly straightforward (although for customized icons, there are a few extra steps to take).
There are some downsides of course (like the bundle size, for example), but that's not a problem, the core idea is: double-click on Tilf and start drawing right away.
why not just the default tk widgets, might be much less of external dependencies?
1 reply →
PySide6 is a solid choice for Python desktop apps - Qt's rendering capabilities make it ideal for pixel-perfect graphics manipulation while avoiding the performance issues that can plague Tkinter or the dependency complexities of wxPython.
Hehe no ai
I recently discovered and have been fairly happy with PixelLab - an AI pixel art generator. I feel like they have a ways to go in features and UX, but it shows promise.