Skip to main content

Pixpop

pixpop logo

A TUI paint application built with the Textual framework.

Pixpop was originally built to export pixel art as ANSI escape sequences, but evolved into a simple multi-layer, multi-canvas pixel drawing app.

I mainly use it now to create fun images to spice up my terminal MOTD via jestsay.

Documentation

Features

  • Multiple canvases
  • Fixed-size canvases with scrollbars (independent of terminal size)
  • Multiple layers
  • Full mouse and keyboard support (drawing is mouse-only)
  • Configuration file for application defaults
  • Save and export as .ans, .png, and .pix session files
  • Open and load .ans, .png, and .pix session files
  • Undo-redo stack
  • Help screen and tooltips

Caveats

This application is designed to draw in the terminal, which comes with limitations. We are able to draw pixels (half-characters), but there is no way to know if the mouse is positioned on the top or bottom pixel. To work around this, set the pen to brush size 1 (a single pixel) and hold Alt to offset the cursor down by one pixel — painting the bottom half of the cell under the pointer. The Alt offset also applies to the cell, eraser, and shape tools.

Screenshots

Pixpop main window Pixpop help dialog

Pixpop session format (.pix)

Pixpop supports saving and loading full sessions as .pix files. These are gzipped JSON files that capture:

  • Tabs (canvas names and order)
  • Canvas size per tab
  • Layers, visibility, and pixel data
  • Undo/redo stacks per tab
  • Shared tool state and palette selection

The .pix format is intended for restoring a working session rather than exporting artwork. For artwork exports, use PNG or ASCII.

Installation

Terminal requirements

Pixpop needs two environment variables for full color support:

  • TERM must be a 256-color variant (e.g. xterm-256color)
  • COLORTERM=truecolor to enable 24-bit true color

Most modern terminals (kitty, alacritty, foot, ghostty, wezterm, GNOME Terminal, Konsole) set these correctly out of the box. If colors look off, check with:

echo $TERM       # should end in -256color
echo $COLORTERM  # should be truecolor

With uv (recommended):

uv tool install pixpop

With pipx:

pipx install pixpop

From source:

git clone https://github.com/umbsublime/pixpop.git
cd pixpop
uv sync
uv run pixpop

Usage

pixpop
  • Draw with the mouse (see Caveats for single-pixel drawing)
  • Press ? for the help screen and full keybindings
  • Ctrl+S to save, Ctrl+E to export, Ctrl+O to load (.ans, .png, .pix)
  • Try to cat your .ans file in the terminal

See the documentation for details.

Powered by

Metadata

Release files for pixpop 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pixpop 0.1.2
File Size Uploaded
pixpop-0.1.2.tar.gz 296.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pixpop 0.1.2
File Interpreter ABI Platform
pixpop-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 386.3 kB

Release files / pixpop-0.1.2.tar.gz

Download URL pixpop-0.1.2.tar.gz
Size 296.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b33ced14ec37a6df7b0e8c3f7bce9b21e5ce32eaaa851c782e64729a88d0a127
BLAKE2b-256 checksum
How to use checksums
9fde75c779ac85420819e251f0a26ea3a5d97f7eed53301cf5956d55e0aa096b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pixpop-0.1.2-py3-none-any.whl

Download URL pixpop-0.1.2-py3-none-any.whl
Size 89.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a1252a1c6ba3521eeaccaf02163eb4990a3ba4fffb5a9cbcbda857f889478dd8
BLAKE2b-256 checksum
How to use checksums
851665d539f672def8ed823602c61b20768e4af05de054b1cffdfc5b3a167679
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page