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 via apt the 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 liblo changed the type of a parameter in its OSC callback, and current Qt5 no longer transitively pulls in QPainterPath through other Qt headers). Every patch is documented as a sed inside its corresponding script, so a from-scratch install reproduces it on its own.
  • MapMap: its repository's default dev branch points to an unfinished Qt6 migration; this script pins the latest stable release (0.6.2), which is pure Qt5.
  • PVS: needs the v4l2loopback kernel 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_DIR to another path after installing, the simplest fix is to delete venv/ and re-run instalar-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.

S
Description
Instal·la en qualsevol Debian/Ubuntu (o derivada) el programari que ja ve preinstal·lat de sèrie a teratOS, però que no es troba als repositoris oficials ni als gestors de paquets del sistema (apt, Flatpak, Snap...)
Readme 82 KiB
Languages
Shell 100%