Files
omarchy-pkgs/pkgbuilds/t3code-patched-bin/PKGBUILD
T
Ryan Hughes dd8fd2fed7 t3code-patched-bin 0.0.35-3: bake T3 Connect public config
The r2 artifact was built without the public Connect configuration official
artifacts carry (relay URL, Clerk publishable key, CLI OAuth client id), so
Connect prompted for login with no way to log in. Same code, rebuilt with
the configuration recovered from the published npm t3 package.
2026-08-28 01:27:55 -04:00

124 lines
4.4 KiB
Bash

# Maintainer: Ryan Hughes <ryan@heyoodle.com>
# T3 Code built from the environment-theme branch of ryanrhughes/t3code, until
# upstream ships it: the desktop follows the machine's published themes
# (Omarchy retints it live) and `t3 theme set` works. Packaging matches
# t3code-bin exactly, so this installs in its place and the AppImage is
# unpacked the same way. Rebase: rebase the branch on the upstream release,
# `pnpm dist:desktop:linux` with the release's version, retag, update pkgver,
# _patchtag, and checksums, and reset pkgrel.
pkgname=t3code-patched-bin
pkgver=0.0.35
pkgrel=3
pkgdesc="Open-source control plane for coding agents, with Omarchy environment-theme patches"
arch=('x86_64')
url="https://t3.codes"
license=('MIT')
depends=(
'alsa-lib'
'at-spi2-core'
'cairo'
'dbus'
'expat'
'gcc-libs'
'glib2'
'glibc'
'gtk3'
'hicolor-icon-theme'
'libcups'
'libnotify'
'libx11'
'libxcb'
'libxcomposite'
'libxdamage'
'libxext'
'libxfixes'
'libxkbcommon'
'libxrandr'
'mesa'
'nspr'
'nss'
'pango'
'systemd-libs'
'xdg-utils'
)
optdepends=(
'claude-code: drive Claude Code from the app'
'cursor-cli: drive Cursor from the app'
'github-copilot-cli: drive Copilot from the app'
'openai-codex: drive Codex from the app'
)
provides=("t3code=${pkgver}")
conflicts=('t3code' 't3code-bin')
options=('!debug' '!strip')
_patchtag="v${pkgver}-omarchy.3"
_appimage="T3-Code-${pkgver}-x86_64.AppImage"
source=('t3code-launcher.sh' 't3-launcher.sh' 'LICENSE')
source_x86_64=("${_appimage}::https://github.com/ryanrhughes/t3code/releases/download/${_patchtag}/${_appimage}")
noextract=("${_appimage}")
sha256sums=('cb905ff341372ef2ef6e402cf485959f8bd1df8f0efebee4cda1afdd5e6abc0a'
'c5b3f2a9f0b14b12cfd973b79319f0f018b7ae49a1d43d8ca346100c3f7de28f'
'935d8f2af0c703f9c39517ee57cc4930b19d02d533be930b63f0e82f93614b43')
sha256sums_x86_64=('ca03100f4df87d49915235816c993caa9f3e0196394dc67c91fc27bbb6b2cf2f')
prepare() {
chmod +x "${srcdir}/${_appimage}"
rm -rf "${srcdir}/squashfs-root"
"${srcdir}/${_appimage}" --appimage-extract >/dev/null
}
package() {
cd "${srcdir}/squashfs-root"
# The AppImage's usr/ tree is compatibility libraries for distributions that
# lack them, and Arch is not one; its icons are the only part worth keeping.
# A release that starts shipping something else there stops the build rather
# than having it deleted quietly on the way past.
local unexpected
unexpected=$(find usr \( -type f -o -type l \) | grep -vE \
'^usr/share/icons/hicolor/[0-9]+x[0-9]+/apps/t3code\.png$|^usr/lib/lib(Xss\.so\.1|Xtst\.so\.6|appindicator\.so\.1|gconf-2\.so\.4|indicator\.so\.7|notify\.so\.4)$' || true)
if [[ -n "${unexpected}" ]]; then
echo "Unexpected files in the AppImage's usr/ tree:" >&2
echo "${unexpected}" >&2
return 1
fi
local icon size
for icon in usr/share/icons/hicolor/*/apps/t3code.png; do
size="${icon#usr/share/icons/hicolor/}"
install -Dm644 "${icon}" "${pkgdir}/usr/share/icons/hicolor/${size%%/*}/apps/t3code.png"
done
# Upstream's own entry rather than a hand-written one: it carries the
# t3code:// scheme handlers that make the app's deep links resolve.
# The name drops the "(Alpha)" upstream's electron-builder still appends; the
# app itself now calls that string legacy and keeps its data under t3code.
sed -e 's|^Exec=.*|Exec=t3code %U|' -e 's|^Name=.*|Name=T3 Code|' \
-e '/^X-AppImage-Version=/d' t3code.desktop \
> "${srcdir}/t3code.desktop.arch"
install -Dm644 "${srcdir}/t3code.desktop.arch" \
"${pkgdir}/usr/share/applications/t3code.desktop"
rm -rf AppRun .DirIcon usr t3code.desktop t3code.png
install -d "${pkgdir}/usr/lib/t3code"
cp -a . "${pkgdir}/usr/lib/t3code/"
chmod -R a+rX "${pkgdir}/usr/lib/t3code"
# Arch ships Chromium's and Electron's own sandbox helper setuid, which is
# what keeps the sandbox up on a kernel that denies unprivileged user
# namespaces -- linux-hardened, mainly -- instead of aborting the app.
chmod 4755 "${pkgdir}/usr/lib/t3code/chrome-sandbox"
install -Dm755 "${srcdir}/t3code-launcher.sh" "${pkgdir}/usr/bin/t3code"
# The server CLI, run through the bundled Electron as Node. Same entrypoint
# npm's `t3` package runs, so `t3 serve`, `t3 pair`, and the rest work
# without a separate install.
install -Dm755 "${srcdir}/t3-launcher.sh" "${pkgdir}/usr/bin/t3"
install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}