From 653b8c36c393a561d1e70f2e12469162cb190238 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Aug 2026 22:55:52 -0700 Subject: [PATCH] Add openai-codex-desktop Official ChatGPT/Codex desktop app, now shipping native Linux debs from OpenAI. Fast ring, so it lands in stable alongside edge. Co-Authored-By: Claude Opus 5 (1M context) --- .../.omarchy/package.json | 5 ++ pkgbuilds/openai-codex-desktop/LICENSE | 12 +++ .../openai-codex-desktop/LICENSES/0BSD.txt | 1 + pkgbuilds/openai-codex-desktop/PKGBUILD | 90 +++++++++++++++++++ pkgbuilds/openai-codex-desktop/REUSE.toml | 25 ++++++ .../openai-codex-desktop/chatgpt-launcher.sh | 37 ++++++++ 6 files changed, 170 insertions(+) create mode 100644 pkgbuilds/openai-codex-desktop/.omarchy/package.json create mode 100644 pkgbuilds/openai-codex-desktop/LICENSE create mode 120000 pkgbuilds/openai-codex-desktop/LICENSES/0BSD.txt create mode 100644 pkgbuilds/openai-codex-desktop/PKGBUILD create mode 100644 pkgbuilds/openai-codex-desktop/REUSE.toml create mode 100644 pkgbuilds/openai-codex-desktop/chatgpt-launcher.sh diff --git a/pkgbuilds/openai-codex-desktop/.omarchy/package.json b/pkgbuilds/openai-codex-desktop/.omarchy/package.json new file mode 100644 index 0000000..8d7f14b --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/.omarchy/package.json @@ -0,0 +1,5 @@ +{ + "source": "aur", + "release_ring": "fast", + "upstream_commit": "05f12e3c51ce07efb996698d4fae94327f45f03b" +} diff --git a/pkgbuilds/openai-codex-desktop/LICENSE b/pkgbuilds/openai-codex-desktop/LICENSE new file mode 100644 index 0000000..b87c5e4 --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/LICENSE @@ -0,0 +1,12 @@ +Copyright Arch Linux Contributors + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/pkgbuilds/openai-codex-desktop/LICENSES/0BSD.txt b/pkgbuilds/openai-codex-desktop/LICENSES/0BSD.txt new file mode 120000 index 0000000..ea5b606 --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/LICENSES/0BSD.txt @@ -0,0 +1 @@ +../LICENSE \ No newline at end of file diff --git a/pkgbuilds/openai-codex-desktop/PKGBUILD b/pkgbuilds/openai-codex-desktop/PKGBUILD new file mode 100644 index 0000000..3ae38a0 --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/PKGBUILD @@ -0,0 +1,90 @@ +# Maintainer: Parsiad Azimzadeh +# Maintainer: mothran +# Official downloads: https://chatgpt.com/codex/ + +pkgname=openai-codex-desktop +pkgver=26.803.81509 +pkgrel=8 +pkgdesc="Official ChatGPT desktop app with Codex" +arch=('x86_64' 'aarch64') +url="https://chatgpt.com/codex/" +license=('custom') + +depends=( + 'alsa-lib' + 'at-spi2-core' + 'bash' + 'cairo' + 'dbus' + 'expat' + 'gcc-libs' + 'gdk-pixbuf2' + 'glib2' + 'glibc' + 'gtk3' + 'libcups' + 'libdrm' + 'libglvnd' + 'libnotify' + 'libusb' + 'libx11' + 'libxcb' + 'libxcomposite' + 'libxdamage' + 'libxext' + 'libxfixes' + 'libxkbcommon' + 'libxrandr' + 'mesa' + 'nspr' + 'nss' + 'openssl' + 'pango' + 'systemd-libs' + 'xdg-utils' + 'xz' +) + +optdepends=( + 'apparmor: load the bundled user-namespace profile on AppArmor systems' + 'git: version control integration' +) + +makedepends=('libarchive') +provides=('chatgpt') +conflicts=('chatgpt') +options=('!debug' '!strip') + +_deb_x86_64="chatgpt_${pkgver}_amd64.deb" +_deb_aarch64="chatgpt_${pkgver}_arm64.deb" +source=('chatgpt-launcher.sh') +source_x86_64=( + "${_deb_x86_64}::https://persistent.oaistatic.com/codex-app-prod/linux/deb/latest/chatgpt_amd64.deb" +) +source_aarch64=( + "${_deb_aarch64}::https://persistent.oaistatic.com/codex-app-prod/linux/deb/latest/chatgpt_arm64.deb" +) +noextract=("${_deb_x86_64}" "${_deb_aarch64}") +sha256sums=('4e3ca9302600bed268f8fd3ba2c9ac2f1ceb99da139ed71c50db0289b118d06f') +sha256sums_x86_64=('a9bf91a368f9f7c4eea38082a9fb8fb46b8d005b719a6d7715d2e5a1982c38eb') +sha256sums_aarch64=('f38fcc194eca9ab0327dc10c92340681eae77c5d75164df700384ce2adaccbc1') + +package() { + cd "${srcdir}" + + local deb_var="_deb_${CARCH}" + local deb="${!deb_var}" + + bsdtar -xOf "${deb}" data.tar.xz | + bsdtar --no-same-owner -xf - -C "${pkgdir}" + + rm "${pkgdir}/usr/bin/chatgpt" + install -Dm755 chatgpt-launcher.sh "${pkgdir}/usr/bin/chatgpt" + ln -s chatgpt "${pkgdir}/usr/bin/codex-desktop" + + install -Dm644 "${pkgdir}/usr/share/doc/chatgpt/copyright" \ + "${pkgdir}/usr/share/licenses/${pkgname}/copyright" + + # Debian package-policy files are not used on Arch Linux. + rm -rf "${pkgdir}/usr/share/doc" "${pkgdir}/usr/share/lintian" +} diff --git a/pkgbuilds/openai-codex-desktop/REUSE.toml b/pkgbuilds/openai-codex-desktop/REUSE.toml new file mode 100644 index 0000000..49e3625 --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/REUSE.toml @@ -0,0 +1,25 @@ +version = 1 + +[[annotations]] +path = [ + "PKGBUILD", + "README.md", + "keys/**", + ".SRCINFO", + ".gitignore", + ".nvchecker.toml", + "*.install", + "*.sysusers", + "*sysusers.conf", + "*.tmpfiles", + "*tmpfiles.conf", + "*.logrotate", + "*.pam", + "*.service", + "*.socket", + "*.timer", + "*.desktop", + "*.hook", +] +SPDX-FileCopyrightText = "Arch Linux contributors" +SPDX-License-Identifier = "0BSD" diff --git a/pkgbuilds/openai-codex-desktop/chatgpt-launcher.sh b/pkgbuilds/openai-codex-desktop/chatgpt-launcher.sh new file mode 100644 index 0000000..0f8bc6b --- /dev/null +++ b/pkgbuilds/openai-codex-desktop/chatgpt-launcher.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2026 Arch Linux Contributors +# SPDX-License-Identifier: 0BSD +set -euo pipefail + +user_flags=() +ozone_flags=() + +config_home="${XDG_CONFIG_HOME:-}" +if [[ -z "${config_home}" && -n "${HOME:-}" ]]; then + config_home="${HOME}/.config" +fi + +if [[ -n "${config_home}" && -f "${config_home}/codex-flags.conf" ]]; then + while IFS= read -r flag_line || [[ -n "${flag_line}" ]]; do + flag_line="${flag_line%%#*}" + read -r -a flag_parts <<<"${flag_line}" + user_flags+=("${flag_parts[@]}") + done <"${config_home}/codex-flags.conf" +fi + +# Use native Wayland rendering in Wayland sessions. Chromium's automatic Ozone +# selection can fall back to XWayland, which produces a blurry UI on scaled +# displays. An explicit platform argument from the user always takes precedence. +if [[ "${XDG_SESSION_TYPE:-}" == wayland || -n "${WAYLAND_DISPLAY:-}" ]]; then + ozone_flags=(--ozone-platform=wayland) +fi + +# A platform selected in the flags file or on the command line overrides the +# native Wayland default. +for flag in "${user_flags[@]}" "$@"; do + case "${flag}" in + --ozone-platform=*|--ozone-platform-hint=*) ozone_flags=() ;; + esac +done + +exec /usr/lib/chatgpt/ChatGPT "${ozone_flags[@]}" "${user_flags[@]}" "$@"