This reverts commit 84b886b43b.
teratOS software installer
Installs on any Debian/Ubuntu (or derivative) the software that comes
preinstalled by default in teratOS, the medialab's operating system,
but that cannot be found in the official repositories nor the system's
package managers (apt, Flatpak, Snap...). These are mostly glitching
and datamoshing tools: small projects, often maintained
by a single person, distributed only as source code from their
repository, requiring compilation or a virtual environment to be set up
each time.
This repository automates all of that: it clones each project, installs
its dependencies, compiles whatever needs compiling, and leaves a launcher
in the applications menu and in ~/.local/bin, without needing teratOS
itself.
Other languages: Català · Castellano · Français
What's included
| App | What it does | Technology |
|---|---|---|
| Acid Cam v2 Qt | Real-time glitch art / VJ, 2200+ filters | C++ / Qt6 |
| Compressure | Video compression artifacts | Python / PyQt6 |
| PVS (Python Video Synthesizer) | Real-time VJing: LFOs, audio-reactive, MIDI, OSC, virtual camera | Python / PyQt6 + OpenGL |
| Datamosher Pro | Automatic, algorithm-based datamoshing | Python / customtkinter |
| FF Dissolve Glitch | Motion-interpolation glitch with FFmpeg | Python / customtkinter |
| MapMap | Real-time video mapping onto surfaces | C++ / Qt5 |
| Videobeaux | Command-line video toolkit (~50 effects) | Python (CLI) |
Usage
Install everything:
git clone https://git.terata.org/terata/teratos-software-installer.git
cd teratos-software-installer
./instalar-todo.sh
Install just one app:
./scripts/mapmap.sh
All scripts are idempotent: you can run them again safely, each step checks whether it's already done before repeating it.
By default everything installs to ~/teratOS-software/ (cloned source +
shared Python virtual environment). This can be changed with an
environment variable:
TERATOS_INSTALL_DIR=/opt/teratos-software ./instalar-todo.sh
Shared virtual environment
All the Python apps use a single virtual environment
($TERATOS_INSTALL_DIR/venv) instead of one per app, to avoid reinstalling
the same heavy libraries (PyQt6, numpy...) over and over. The trade-off:
if two apps pin incompatible versions of the same library, pip installs
whichever one was requested last and may downgrade what was already
there — a deliberate trade-off between disk space and full isolation.
Prerequisites
- Debian/Ubuntu or derivative (tested on Ubuntu 26.04 with KDE Plasma 6.6.6)
sudo(each script installs its own system dependencies viaaptthe first time)- Internet connection (clones each project from its own upstream repository)
Structure
teratos-software-installer/
├── instalar-todo.sh # installs every app, one after another
└── scripts/
├── 00-common.sh # shared variables and functions (not meant to run alone)
├── acidcam-qt.sh
├── compressure.sh
├── pvs.sh
├── datamosher-pro.sh
├── ff-dissolve-glitch.sh
├── mapmap.sh
└── videobeaux.sh
Technical notes
- Old code + modern libraries: these projects were written a while
ago against older versions of Python/Qt/liblo; something that used to
work can break on a current system. Where needed, the source code was
patched locally, never in the upstream repository (for example:
modern
liblochanged the type of a parameter in its OSC callback, and current Qt5 no longer transitively pulls inQPainterPaththrough other Qt headers). Every patch is documented as asedinside its corresponding script, so a from-scratch install reproduces it on its own. - MapMap: its repository's default
devbranch points to an unfinished Qt6 migration; this script pins the latest stable release (0.6.2), which is pure Qt5. - PVS: needs the
v4l2loopbackkernel module for its virtual camera — the script installs it and makes it persistent across reboots. - Python venvs are not relocatable: if you move
$TERATOS_INSTALL_DIRto another path after installing, the simplest fix is to deletevenv/and re-runinstalar-todo.sh— the venv's executables have the absolute path they were created at baked into them.
Uninstalling an app
There's no automatic uninstall script (each app is too different). Manually:
rm ~/.local/bin/<app-name>
rm ~/.local/share/applications/<app-name>.desktop
rm -rf "$TERATOS_INSTALL_DIR/<app-folder>"
If it's a Python app installed in the shared venv (pip install -e .),
you'll also need $TERATOS_INSTALL_DIR/venv/bin/pip uninstall <package-name>.
Adding more apps
Each app is an independent script in scripts/ that does source 00-common.sh, clones its repository into $TERATOS_INSTALL_DIR,
installs its dependencies (into the shared venv if it's Python), and
leaves a launcher in ~/.local/bin/ and a .desktop file in
~/.local/share/applications/. Then, add the script's name to the APPS
list in instalar-todo.sh.