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 we have the fine tool. It allows choosing the top pixel with left-click, the bottom pixel with right-click, and both pixels with middle-click.

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 the fine tool)
  • 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.1

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.1
File Size Uploaded
pixpop-0.1.1.tar.gz 294.4 kB Details

Built distribution (wheel)

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

Total release size: 383.6 kB

Release files / pixpop-0.1.1.tar.gz

Download URL pixpop-0.1.1.tar.gz
Size 294.4 kB
Tags Source
SHA-256 checksum
How to use checksums
94b4e1a87a32f0be66f75c4f7d0f52451f96f8ca6d87822acd7dc76ce95473e8
BLAKE2b-256 checksum
How to use checksums
e0feebe1ba917fff95fb44f1782f79807acab40b1e9320fb79e06047459ff7f5
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.1-py3-none-any.whl

Download URL pixpop-0.1.1-py3-none-any.whl
Size 89.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8558701d63c86732043014ec8aa3f69fcec97bb601435f735a1745cce4aa027c
BLAKE2b-256 checksum
How to use checksums
6df5aa1cdfd9471c91f914230018a6f10ec7728746f778bd1180b2757bf9c594
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

0.1.2

2 release files

This release

0.1.1 This release

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