Skip to content

Repository files navigation

Pixelsort GUI

PySide6 (Qt6) desktop GUI for the pixelsort by Satyarth.

The engine source is NOT distributed with this repo. It is installed from original distribution with Pypl.

Setup

Windows:

setup_venv.bat     :: creates .venv, installs PySide6 + Pillow + pixelsort + pyinstaller
run_gui.bat        :: launches the GUI (runs setup first if needed)

Or manually:

py -3 -m venv .venv
.venv\Scripts\activate.bat
pip install -r requirements.txt
python app.py

Linux / macOS (needs Python 3.10+; first make the scripts executable once with chmod +x *.sh):

./setup_venv.sh    :: creates .venv, installs PySide6 + Pillow + pixelsort + pyinstaller
./run_gui.sh       :: launches the GUI (runs setup first if needed)

Or manually:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py

ASDF preset

More familiar with Kim Asendorf's ASDFPixelSort? Click ASDF preset: threshold + lightness + stock thresholds with two-pass enabled. pass 1 at angle 90 (vertical streaks), pass 2 at angle 0 (horizontal), the recipe from the satyarth README for replicating the Processing sketch.

Build a standalone executable

Requires the .venv from setup. One-dir builds (faster, more reliable); add --onefile to the pyinstaller line in the script for a single-file binary.

OS Script Output
Windows build_exe.bat dist\PixelsortGUI\PixelsortGUI.exe
Linux ./build_linux.sh dist/PixelsortGUI/PixelsortGUI
macOS ./build_macos.sh dist/PixelsortGUI.app (open dist/PixelsortGUI.app)

build_macos.sh ad-hoc signs the bundle so it launches locally; that is not a substitute for notarization when distributing to others.

Parameters

Mirrors the CLI flags: interval function -i (random/threshold/edges/waves/file/file-edges/none), sorting function -s (lightness/hue/saturation/intensity/minimum), angle -a, lower/upper thresholds -t/-u, char length -c, randomness -r, interval file -f, mask -m. Controls irrelevant to the chosen interval mode are auto-disabled. Defaults come from the engine's pixelsort.constants.DEFAULTS.

Troubleshooting

  • ImportError: cannot import name 'PyAccess' from 'PIL' — you are running an old checkout of this GUI. Current app.py shims that hint-only alias, which Pillow 12 removed; pull latest and keep Pillow>=10.
  • App starts but Sort fails — the bundle embeds the PyPI engine at build time; rebuild with the matching script (build_exe.bat / build_linux.sh / build_macos.sh) after any requirements.txt change.
  • Linux: setup_venv.sh fails to create the venv — install it with sudo apt install python3-venv (Debian/Ubuntu). If the GUI or frozen binary fails to start with missing Qt/shared-library errors, install the system GL stack, e.g. sudo apt install libgl1 libegl1 libxkbcommon0.
  • macOS: first launch of an unsigned/ad-hoc build may be blocked — right-click the app > Open, or run xattr -d com.apple.quarantine dist/PixelsortGUI.app.

Releases

Packages

Contributors

Languages