Repository navigation
Releases: ismail-bahloul/TouchDesigner-Linux
Release list
v1.8.3
Fixes
- Versioned shortcuts are no longer labelled "unknown". When the version could not be read out of
TouchDesigner.exe(missing or timed-outstrings, a partially written file), detection fell back to the literal"unknown", so an entry named "TouchDesigner unknown" could appear in the application menu. The version is now also read from the install path (.../TouchDesigner <version>/), which always carries it. - No more silent shortcut collisions. Two installs that resolved to the same label produced the same
.desktopfilename, so one shortcut silently overwrote the other (which is why a single "unknown" entry could remain for two installs). Versioned shortcut file names and labels are now made unique.
v1.8.2
Fixes
- Download integrity.
download_file()now writes to<dest>.partand renames onto the final path only when complete, and a truncated urllib transfer (fewer bytes thanContent-Length) is reported as a failure. An interrupted or truncated download can no longer leave a partial file that callers treat as "already downloaded". - Real checksum verification. The Soda, DXVK and winetricks SHA-256 constants were read from the environment with an empty default, and
verify_checksum()returnsTruefor an empty hash, so nothing was ever verified. They are now pinned to the actual release-asset hashes; winetricks is pinned to a tag and its checksum is now checked too. - Container mode no longer drops
--no-patch. The launcher parsed andshifted its flags before the distrobox re-exec, so the re-entered container never saw them. The original arguments are now preserved for the re-exec. - Removed the
--fastoption, which was accepted and documented but never read.
Changed
- TouchDesigner pinned to 2025.33230 (
_td_verin the AUR PKGBUILD, regenerated.SRCINFO, and added toFALLBACK_VERSIONS).
v1.8.1
Fixes
- Lucida Console mono font in the Wine prefix. TouchDesigner uses "Lucida Console" as its default mono font (parameter value fields, OP name fields, DAT tables, Textport). It ships with Windows but is not part of
corefonts, so prefixes built by this tool could not resolve it: TD loggedError Loading Default Mono Font ... Substituted with Verdanaand rendered mono text blank. Install and--updatenow install a monolucon.ttfwhose family is "Lucida Console" (generated from DejaVu Sans Mono, shipped inAssets/) intodrive_c/windows/Fontsand register it. This fixes the error and the blank mono text, independently of thewine_ui_fixes.toxpass. The AUR package ships it too (injected into the pre-made prefix at build time, plus an idempotent launcher step for existing user prefixes).
TouchDesigner-Linux v1.8
What's new
- Container mode (Distrobox / Podman) -
td-install --container <action>runs the whole install inside an isolated container: no sudo, no 32-bit repository setup, works on immutable distros and SteamOS. First run creates atouchdesigner-linuxcontainer (Ubuntu 24.04, NVIDIA auto-detected), and the launcher, desktop shortcuts and.toeassociations re-enter the container from the host.TD_CONTAINER_NAME/TD_CONTAINER_IMAGEoverride the defaults. Verified with Ubuntu 24.04 and Fedora 40 containers. touchdesignerterminal command - works from any terminal with-h,-v,--list,--no-patchand--verboseflags.- CodeMeter runtime install and remove -
td-install --codemeter install <path>installs the Wibu runtime without msiexec (native extraction, Inno and WiX/MSI bundles), and--codemeter removecleans it up. Strictly opt-in: the runtime is never installed automatically. - DXVK now actually installs - the "already installed" check confused Wine's builtin wined3d DLLs with DXVK, so many installs silently ran on wined3d. Detection is fixed, DLL overrides are always registered, and DXVK is bumped to 2.7.1. This makes the Syphon/Spout Out TOP work (shared-texture path).
Bug fixes
- One-liner (
curl | bash) works in minimal environments withoutgit(tarball fallback) and never serves a stale cached installer - First container run auto-accepts the image pull instead of failing non-interactively
--container install(bare action word) parses correctly- Launcher
--exe <path>parsing fixed (a stray]broke it at runtime) - Banner shows the short version (
v1.8) instead of the full1.8.0
Documentation & CI
- New container mode guide, CodeMeter guide updates (status, opt-in guarantee, uninstall), compatibility matrix updated (Syphon/Spout, DXVK)
- Roadmap updated with the pending CodeMeter Wine 10/11 test
Known issues / deferred
- CodeMeter network client under Wine is still blocked: runtime 7.60d loads (the
cpsrt.dllcrash only affects 8.41a/9.10) but the service stalls under Wine 9.0. Next step is a newer Wine build. See docs/codemeter.md - DXVK 3.x crashes on the Spout node under Wine 9.0, so the project stays on 2.7.1
- distrobox
--nvidiainit is slow on big systems (scans the whole host tree at each container start);TD_CONTAINER_NO_NVIDIA=1skips it
Technical
- TouchDesigner 2025.33070
- Soda Wine 9.0-1
- DXVK 2.7.1
TouchDesigner-Linux v1.7
What's new
CodeMeter licensing tooling (td-install --codemeter):
status/setup/start: detect the CodeMeter runtime in the Wine prefix and manage itadd-server/remove-server/servers: manage the client's Server Search List via Wibu's officialcmu32 --add-server/cmu.exetools, with a registry fallback- The launcher auto-starts
CodeMeter.exewhen the runtime is installed - Server side validated: a native Linux daemon or the official docker-codemeter image shares licenses over the LAN (UDP/TCP 22350)
- Client side under Wine is currently blocked: the CodeMeter service will not start under the project's Wine runner (Wibu's protected
cpsrt.dllfails to load). See docs/codemeter.md for test results and unblocking ideas. Software license keys (ins*.dat) are unaffected and work as before.
Also new from the unannounced v1.6.2 tag:
- Version-aware font-fix re-patch +
.tocdedup (already-patched projects get updated fixes without corruption) - NVIDIA driver guard: safe GPU auto-detect via
nvidia-smi -L, no more forced offload (fixes black screens) - AUR launcher auto-patches
.toefiles - License-loss warning on full uninstall
safe_rmhardened against accidental system deletion
Bug fixes
- Launcher failures are logged and surfaced with a desktop notification (no more silent icon clicks)
- SteamOS read-only root auto-disabled before pacman steps
- openSUSE zypper repos refreshed before install
- Headless wineboot in SSH/CI (fixes winetricks/vcrun when there is no display)
- Interactive menu banner now shows the real version (was hardcoded to v1.4)
- AUR: licenses are now preserved across
paru -Syu/yay -Syuupdates (the launcher's ProgramData refresh no longer touchesDerivative/, and the license is backed up around wineboot; this addresses a report of a v1.6 to v1.6.2 update changing the System Code and consuming a second activation)
Documentation & CI
- New CodeMeter guide, compatibility and how-it-works updates, runner test findings
- Weekly smoke test runs under xvfb and verifies the TouchDesigner install
- GitHub issue templates
Known issues / deferred
- CodeMeter network client under Wine is blocked (see above); direct USB dongle passthrough is not supported
Technical
- TouchDesigner 2025.33070
- Soda Wine 9.0-1
- DXVK 2.4
TouchDesigner-Linux v1.6
What's new
- Dynamic font-fix detection --
wine_ui_fixes.toxno longer relies on a hardcoded table of ~23 specific paths that silently breaks whenever Derivative changes internal UI paths in a new TD version. It now scans/ui(TD's own interface) and the regular project tree dynamically, converting any Text TOP that isn't already rendering with the working display method - Fixes third-party palette components too -- the scan also covers the regular project tree, not just TD's own interface, so components dragged in from the Palette (e.g. kantanMapper) that render with missing letters (
j/y/p/g-- anything with a descender) get fixed automatically, not just TD's own dialogs - Working "Fix Now" button -- the previous version's manual-trigger button was wired through a parameter expression that silently did nothing when clicked. Rewired as a proper Parameter Execute DAT, so it actually runs the fix on demand instead of requiring a full project restart
- Verified on both Soda and GE-Proton, groundwork for a future GE-Proton default -- what counts as "broken" isn't identical between runners (Soda and GE-Proton disagree on which elements default to a working state), so the fix was checked against both instead of assuming one covers the other. This also doubles as prep work for eventually switching the default runner to GE-Proton, which renders more correctly overall but still has an open crash under the full launcher (GPU hybrid switching) that needs isolating first
Bug fixes
- Infinite install loop in non-interactive mode --
td-install -n(andinstall.shpiped throughcurl | bash) never exited after a successful install: the loop's "pause and return to menu" step is skipped in non-interactive mode, but so was its onlybreak, so it silently re-ran the entire install forever. Found by actually running the installer end-to-end from a fresh clone instead of only testing the existing dev setup by hand
Known issues / deferred
- TD-as-Code (
tdascode/) held back for v1.7 -- an experimental module for programmatic.toeediting (--expand/--collapse/--info) was built to develop and verify the font fix above, but it has two confirmed correctness bugs in its write path: a wrong assumption about the.textfile's binary header size (truncates/corrupts DAT script content) and incorrect.tocregeneration when adding nodes. Read-only inspection works fine; writing does not yet. Not shipped this release -- code is preserved on thedevbranch for v1.7
Technical
- TouchDesigner 2025.33070
- Soda Wine 9.0-1
- DXVK 2.4
TouchDesigner-Linux v1.5
What's new
- pip wrapper --
td-install --pip install <package>wrapswine64 python.exe -m pip installwith proper Wine environment setup (torch KMP_AFFINITY fix included) - Native external editor -- Ctrl+E opens Text DATs in the user's default Linux editor via xdg-open instead of the Windows editor
- Auto-detect LogPixels DPI -- reads Xft.dpi from the display server on first launch and applies the correct LogPixels value (96/120/144/192). Override with
TD_DPI=96 touchdesigner. No more hardcoded 120 DPI - License preservation -- backs up
ProgramData/Derivative/before wineboot and restores it after. Also preserved during install/reinstall whencommonappdata/is copied over ProgramData. No more lost licenses - AUR PKGBUILD -- complete Arch Linux package with proper desktop entries, file associations, MIME types, icons, and post-install hooks
- AUR launcher -- Python launcher replacing the bash heredoc wrapper, with full .toe patching support and drive symlink handling
- System install path --
td-installnow findstd_libfrom/usr/share/touchdesigner-linux/when installed as a system package (AUR)
Improvements
- wineboot runs only on first launch (tracked by
.td_initializedflag) dosdevicessymlinks (c:, z:) are properly created instead of crashing on fresh prefix- .toe patching handles timeouts without leaving corrupted state
- Backup directory auto-cleanup for backups older than 30 days
- Interactive menu uses raw terminal mode for reliable arrow key navigation
- Non-interactive mode auto-detects headless/SSH sessions
- Diagnose command checks AUR install paths for installed TouchDesigner versions
Bug fixes
- License files no longer overwritten by
commonappdataduring install/reinstall - Missing
import readded in update module - Winetricks log file read-after-delete race condition fixed
- Empty version list no longer crashes the installer
--helpflag works before Wine environment initialization- Uninstall back button correctly returns to main menu instead of looping
- Bash launcher syntax errors fixed (heredoc expansion, subshell piping)
Documentation
- How it works -- explains each fix and why it's applied
- Wine runners comparison -- tested runners (Soda, GE-Proton, Wine Staging, Proton-CachyOS), source analysis, compatibility
- Troubleshooting -- common issues and fixes
- Compatibility status -- what works and what doesn't
Technical
- TouchDesigner 2025.33070
- Soda Wine 9.0-1
- DXVK 2.4
TouchDesigner-Linux v1.4
What's new
- Complete Python rewrite — replaced the 3340-line bash script with a modular Python codebase (td_lib/)
- Multi-version support — install multiple TouchDesigner versions side-by-side (e.g. 2025 + 2023)
- Interactive version picker — ↑/↓ arrow keys to select TouchDesigner version
- Progress bars — clean download progress for Soda runner and TouchDesigner installers
- Winetricks heartbeat — live progress display during Windows dependency installation
- IDS Peak SDK patching — automatic detection and patching across all installed versions
- .toe file patching — auto-patches NewProject.toe templates with wine_ui_fixes on install, update, and launch
- Versioned shortcuts — separate desktop/application menu entries for each installed version
- --diagnose — new health check command for troubleshooting
- Comprehensive test suite — 171 static tests, multi-distro CI (Ubuntu, Fedora, Arch, openSUSE)
- v1.3 curl one-liner preserved —
curl -sSL ... | bashstill works
Breaking changes
- Old bash
install.shreplaced by Pythontd-install. Theinstall.shwrapper still works as the entry point. - Install directories now versioned (
TouchDesigner 2025.32820/instead ofTouchDesigner/)
TouchDesigner-Linux v1.3
This release reworks the TouchDesigner installation pipeline. No more 40-minute Wine GUI installer — the .exe is now extracted natively using 7z and innoextract, cutting installation time to ~2 minutes. It also unlocks full headless/SSH deployment and fixes long-standing winetricks compatibility issues.
New Features
- Silent Native Extraction: The TouchDesigner installer is now extracted entirely on Linux using
7z+innoextract. No Wine, no GUI, no X11 dependency. The embedded Inno Setup archive is decompressed natively in ~90 seconds instead of the previous ~30 minutes through the Wine GUI. - Full Headless Support: Installation works over SSH, CI pipelines, or any environment without a graphical session. The new
--headless/-Hflag lets you deploy TouchDesigner remotely with a single command. - Automatic Dependency Resolution:
innoextractand7zare now installed automatically by the script across all supported package managers (pacman, apt, dnf, zypper). No manual setup required.
Stability & Bug Fixes
- Winetricks Mono Crash Fixed: Removed the
WINEDLLOVERRIDES=mscoree=override that was silently breakingvcrun2019installation.corefonts,d3dx11_43, andvcrun2019now install reliably without manual intervention. - Disk Space Guard: Temporary extraction directories are now placed under
$TD_BASE_DIR/tmp/instead of/tmp/to avoid filling up tmpfs partitions during large decompressions. - Automatic Temp Cleanup: Leftover extraction artifacts from previous runs are automatically purged at the start of each installation.
Reliability & Polish
- Desktop Integration Now Automatic: Shortcuts, MIME associations, and
.toe/.toxfile type registration happen automatically without prompting — no more "Y/n" pauses during installation. - Progress Heartbeats: Added visible progress indicators for the
7zandinnoextractextraction steps, so you know the installer is actively working. - Verbose Error Logging: Winetricks failures now dump the full log instead of relying on fragile grep filters, making debugging dramatically easier.
- Version Bump:
v1.3
Notes
- The silent method requires
innoextractand7z(installed automatically). If a system lacks both, the script will exit with a clear error message. - Existing TouchDesigner installations are unaffected — the new extraction method is a drop-in replacement for the old Wine GUI installer.
- First launch still takes 1–2 minutes as the Wine prefix initializes. This is normal.
# Standard install
curl -sSL https://raw.githubusercontent.com/iswad-lab/TouchDesigner-Linux/main/install.sh | bash# Headless install (SSH, no display)
curl -sSL https://raw.githubusercontent.com/iswad-lab/TouchDesigner-Linux/main/install.sh | bash -s -- -HCheers,
Iswad
TouchDesigner-Linux v1.2.0
This is a major and long-awaited release that brings full automation, enhanced desktop environment integration, and critical stability fixes for modern Linux compositors.
This release introduces native, automatic .toe project patching (eliminating the need to drag the UI fix manually), custom-designed high-fidelity SVG icons for all core file types, a dedicated component update system, and deep pipeline fixes for Wayland (KDE Plasma 6).
New Features
- Universal Auto-Patching Pipeline: When you double-click a
.toefile or open one via CLI, the launcher automatically checks ifwine_ui_fixesis missing and injects it on the fly usingtoeexpand/toecollapse. - Scalable Icons (SVG): Complete overhaul of file associations. The project now bundles 3 distinct custom SVG icons to give a native Windows-like feel to your desktop environment:
- Application Desktop Launcher
.toeProject Files.toxComponent Files
- Option 3 – Dedicated Update Mode: Added a robust maintenance option in the
install.shmenu. It instantly regenerates your launcher, pulls the latestwinetricks, refreshes DXVK core links, and updateswine_ui_fixes.toxwithout requiring a heavy 300+ MiB download of TouchDesigner or the Wine runner. - Smart Bulletproof Backups: Before any automated patch, the original file is copied to a centralized directory (
$TD_BASE_DIR/backups/).- Anti-collision: Backup filenames are uniquely generated based on their absolute Linux paths (slashes replaced by underscores). Two projects named
project.toein different directories will never overwrite each other. - Auto-cleanup: An embedded automated garbage collector purges backups untouched for more than 30 days to keep your storage clean.
- Anti-collision: Backup filenames are uniquely generated based on their absolute Linux paths (slashes replaced by underscores). Two projects named
Wayland & Graphics Fixes
- Compositor Crash Guard: Injected
export WAYLAND_DISPLAY=""andexport __GL_YIELD="USLEEP"directly into the launcher pipeline. This completely mitigates intermittentGLXBadDrawable/X_GLXMakeCurrenttiming issues on hybrid GPU layouts under Wayland. - Hardware Profile Persistence: The Update engine now securely parses and preserves your custom
USE_NVIDIA_DGPUvariable configuration across script regenerations.
Reliability & Polish
- Zero-Zombie Execution: The launcher script now boots Wine using
execinstead of an asynchronous background job (&). The shell cleanly exits, and closing TouchDesigner immediately kills its PID, saving ~100 MiB of ghost RAM. - Atomic Uninstall: The uninstaller has been rewritten to clean out the new centralized backup cache and purge all XDG MIME-type icons.
- Documentation & Framework: Updated the
README.mdto map out the new update and backup lifecycles. Removing the manual install guide since you don't need it anymore :)
Your feedback is highly valued for this release! 🙏
Enjoy the new improved workflow.
Cheers,
Iswad
curl -sSL https://raw.githubusercontent.com/iswad-lab/TouchDesigner-Linux/main/install.sh | bash