From 23d7d6c4e8b8d3cb8fefc86ae2f34a676193b346 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 9 Aug 2026 16:03:57 -0700 Subject: [PATCH 1/3] Add ttfx: terminal text effects as a single static binary Rust port of terminaltexteffects that renders byte-identical frames to the Python original, as one dependency-free binary. - ~1 ms startup vs ~107 ms for the Python import alone - median 9.6x faster rendering; heavy effects hold 120fps fullscreen where Python drops to ~71fps - CLI-compatible with tte: same option names, defaults, and exit codes Built and verified locally with makepkg (x86_64): cargo test passes in check(), package installs the binary plus shell completions. Co-Authored-By: Claude Fable 5 --- pkgbuilds/ttfx/.omarchy/package.json | 3 ++ pkgbuilds/ttfx/PKGBUILD | 53 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 pkgbuilds/ttfx/.omarchy/package.json create mode 100644 pkgbuilds/ttfx/PKGBUILD diff --git a/pkgbuilds/ttfx/.omarchy/package.json b/pkgbuilds/ttfx/.omarchy/package.json new file mode 100644 index 0000000..2a9719d --- /dev/null +++ b/pkgbuilds/ttfx/.omarchy/package.json @@ -0,0 +1,3 @@ +{ + "source": "local" +} diff --git a/pkgbuilds/ttfx/PKGBUILD b/pkgbuilds/ttfx/PKGBUILD new file mode 100644 index 0000000..6d9ef81 --- /dev/null +++ b/pkgbuilds/ttfx/PKGBUILD @@ -0,0 +1,53 @@ +# Maintainer: David Heinemeier Hansson + +pkgname=ttfx +pkgver=0.1.0 +pkgrel=1 +pkgdesc="Terminal text effects as a single static binary — Rust port of terminaltexteffects" +arch=('x86_64' 'aarch64') +url="https://github.com/omacom-io/termfx" +license=('MIT') +depends=('gcc-libs' 'glibc') +makedepends=('cargo') +options=('!debug') + +# The repo is omacom-io/termfx; the binary it ships is `ttfx`. +_srcname=termfx +source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") +sha256sums=('d5aa53227fd79b4bc4031c521c042daf64d592dd55ddc772cdaaaca62e30464a') + +prepare() { + cd "$_srcname-$pkgver" + + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" +} + +build() { + cd "$_srcname-$pkgver" + + export CARGO_TARGET_DIR=target + cargo build --frozen --release +} + +check() { + cd "$_srcname-$pkgver" + + # Engine goldens and state-machine traces only. The frame-parity suites are + # deliberately skipped here: they need python3 plus a network clone of the + # pinned upstream reference, which doesn't belong in a package build. + export CARGO_TARGET_DIR=target + cargo test --frozen --release +} + +package() { + cd "$_srcname-$pkgver" + + install -Dm755 "target/release/ttfx" "$pkgdir/usr/bin/ttfx" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" + + "target/release/ttfx" --print-completion bash | + install -Dm644 /dev/stdin "$pkgdir/usr/share/bash-completion/completions/ttfx" + "target/release/ttfx" --print-completion zsh | + install -Dm644 /dev/stdin "$pkgdir/usr/share/zsh/site-functions/_ttfx" +} From 32cf2939a745a92522cc7fd991c651ca076f139e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 9 Aug 2026 16:12:17 -0700 Subject: [PATCH 2/3] ttfx: point at renamed repo, bump to v0.1.1 The repo is now omacom-io/ttfx, matching the binary and package name, so the source URL and archive checksum change with it (the tarball's top-level directory is the repo name). v0.1.1 adds NOTICE and a standard-form MIT LICENSE, both now installed. Rebuilt and verified with makepkg on x86_64. Co-Authored-By: Claude Fable 5 --- pkgbuilds/ttfx/PKGBUILD | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/pkgbuilds/ttfx/PKGBUILD b/pkgbuilds/ttfx/PKGBUILD index 6d9ef81..8bbcf2c 100644 --- a/pkgbuilds/ttfx/PKGBUILD +++ b/pkgbuilds/ttfx/PKGBUILD @@ -1,36 +1,34 @@ # Maintainer: David Heinemeier Hansson pkgname=ttfx -pkgver=0.1.0 +pkgver=0.1.1 pkgrel=1 pkgdesc="Terminal text effects as a single static binary — Rust port of terminaltexteffects" arch=('x86_64' 'aarch64') -url="https://github.com/omacom-io/termfx" +url="https://github.com/omacom-io/ttfx" license=('MIT') depends=('gcc-libs' 'glibc') makedepends=('cargo') options=('!debug') -# The repo is omacom-io/termfx; the binary it ships is `ttfx`. -_srcname=termfx source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") -sha256sums=('d5aa53227fd79b4bc4031c521c042daf64d592dd55ddc772cdaaaca62e30464a') +sha256sums=('1b6c991427054a56ebf26c9fc5bc88f53e69382d0f6cb6788fcdb6304b763c07') prepare() { - cd "$_srcname-$pkgver" + cd "$pkgname-$pkgver" cargo fetch --locked --target "$CARCH-unknown-linux-gnu" } build() { - cd "$_srcname-$pkgver" + cd "$pkgname-$pkgver" export CARGO_TARGET_DIR=target cargo build --frozen --release } check() { - cd "$_srcname-$pkgver" + cd "$pkgname-$pkgver" # Engine goldens and state-machine traces only. The frame-parity suites are # deliberately skipped here: they need python3 plus a network clone of the @@ -40,10 +38,11 @@ check() { } package() { - cd "$_srcname-$pkgver" + cd "$pkgname-$pkgver" install -Dm755 "target/release/ttfx" "$pkgdir/usr/bin/ttfx" install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + install -Dm644 NOTICE "$pkgdir/usr/share/licenses/$pkgname/NOTICE" install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" "target/release/ttfx" --print-completion bash | From 554a670410822479db71c624d6016f8d9f239a7e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 9 Aug 2026 16:15:24 -0700 Subject: [PATCH 3/3] ttfx: bump to v0.1.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.1.1 was withdrawn upstream — it was tagged without the Cargo.toml bump, so its binary reported 0.1.0. v0.1.2 corrects the version string. Rebuilt with makepkg on x86_64; packaged binary reports ttfx 0.1.2. Co-Authored-By: Claude Fable 5 --- pkgbuilds/ttfx/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgbuilds/ttfx/PKGBUILD b/pkgbuilds/ttfx/PKGBUILD index 8bbcf2c..ebb5590 100644 --- a/pkgbuilds/ttfx/PKGBUILD +++ b/pkgbuilds/ttfx/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: David Heinemeier Hansson pkgname=ttfx -pkgver=0.1.1 +pkgver=0.1.2 pkgrel=1 pkgdesc="Terminal text effects as a single static binary — Rust port of terminaltexteffects" arch=('x86_64' 'aarch64') @@ -12,7 +12,7 @@ makedepends=('cargo') options=('!debug') source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") -sha256sums=('1b6c991427054a56ebf26c9fc5bc88f53e69382d0f6cb6788fcdb6304b763c07') +sha256sums=('1c07268892e79c9e85bc09218ac5c5c81095a0df2d926eb4d5b257f18f7cf037') prepare() { cd "$pkgname-$pkgver"