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.
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
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.
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.
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.
ImportError: cannot import name 'PyAccess' from 'PIL'— you are running an old checkout of this GUI. Currentapp.pyshims that hint-only alias, which Pillow 12 removed; pull latest and keepPillow>=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 anyrequirements.txtchange. - Linux:
setup_venv.shfails to create the venv — install it withsudo 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.