Add claude-desktop, Anthropic's Linux desktop beta
Anthropic ships the Claude desktop app for Linux only through its own Debian repository, so the package repacks the deb the way openai-codex-desktop does: extract data.tar.xz, replace the bare /usr/bin symlink with a launcher that asks Chromium for Wayland directly, and keep the vendor copyright as the license. Updates come through the declarative "debian" upstream provider: the apt Packages index names the newest version, and the per-architecture pool debs are hashed when one appears. Verified by pinning 1.44121.2 and watching bin/sync-upstream rewrite it back to 1.46388.2 byte-identically.
This commit is contained in:
3 files changed
+127
No files matched your search
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"source": "local",
|
||||||
|
"release_ring": "fast",
|
||||||
|
"upstream": {
|
||||||
|
"debian": "https://downloads.claude.ai/claude-desktop/apt/stable/dists/stable/main/binary-amd64/Packages",
|
||||||
|
"package": "claude-desktop",
|
||||||
|
"sources": {
|
||||||
|
"x86_64": ["https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop/claude-desktop_{pkgver}_amd64.deb"],
|
||||||
|
"aarch64": ["https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop/claude-desktop_{pkgver}_arm64.deb"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# Maintainer: Spencer Bull <spencerbull2554@gmail.com>
|
||||||
|
|
||||||
|
# Omarchy tracks Anthropic's own Debian repository, the only channel the
|
||||||
|
# Linux beta ships through. The declarative "debian" upstream provider in
|
||||||
|
# .omarchy/package.json rewrites the version and checksums below from that
|
||||||
|
# repository's package index.
|
||||||
|
|
||||||
|
pkgname=claude-desktop
|
||||||
|
pkgver=1.46388.2
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Official Claude desktop app with Claude Code"
|
||||||
|
arch=('x86_64' 'aarch64')
|
||||||
|
url="https://claude.ai"
|
||||||
|
license=('custom')
|
||||||
|
|
||||||
|
depends=(
|
||||||
|
'alsa-lib'
|
||||||
|
'at-spi2-core'
|
||||||
|
'bash'
|
||||||
|
'gcc-libs'
|
||||||
|
'glibc'
|
||||||
|
'gtk3'
|
||||||
|
'libdrm'
|
||||||
|
'libnotify'
|
||||||
|
'libsecret'
|
||||||
|
'libxcb'
|
||||||
|
'libxtst'
|
||||||
|
'mesa'
|
||||||
|
'nss'
|
||||||
|
'util-linux-libs'
|
||||||
|
'xdg-desktop-portal'
|
||||||
|
'xdg-utils'
|
||||||
|
)
|
||||||
|
|
||||||
|
optdepends=(
|
||||||
|
'gnome-keyring: store credentials in a system keyring'
|
||||||
|
'edk2-ovmf: UEFI firmware for the Cowork virtual machine'
|
||||||
|
'virtiofsd: file sharing with the Cowork virtual machine'
|
||||||
|
)
|
||||||
|
optdepends_x86_64=('qemu-system-x86: run Cowork tasks in a local virtual machine')
|
||||||
|
optdepends_aarch64=('qemu-system-aarch64: run Cowork tasks in a local virtual machine')
|
||||||
|
|
||||||
|
makedepends=('libarchive')
|
||||||
|
options=('!debug' '!strip')
|
||||||
|
|
||||||
|
# Omarchy: same treatment as openai-codex-desktop. The build image compresses
|
||||||
|
# with zstd at its default level, which leaves this 560 MB Electron tree at
|
||||||
|
# 210 MB. Maximum zstd takes it to 160 MB for ~3 extra minutes of build time
|
||||||
|
# -- worth it for a package every user re-downloads on each of Anthropic's
|
||||||
|
# frequent releases.
|
||||||
|
COMPRESSZST=(zstd -c -z -q --ultra -22 --threads=0 -)
|
||||||
|
|
||||||
|
_deb_x86_64="claude-desktop_${pkgver}_amd64.deb"
|
||||||
|
_deb_aarch64="claude-desktop_${pkgver}_arm64.deb"
|
||||||
|
source=('claude-desktop-launcher.sh')
|
||||||
|
_pool="https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop"
|
||||||
|
source_x86_64=("${_deb_x86_64}::${_pool}/${_deb_x86_64}")
|
||||||
|
source_aarch64=("${_deb_aarch64}::${_pool}/${_deb_aarch64}")
|
||||||
|
noextract=("${_deb_x86_64}" "${_deb_aarch64}")
|
||||||
|
sha256sums=('edfdbc63b65891ef7c481b07086c7e630fc102c042b6ed65331a52fcaf72b14a')
|
||||||
|
sha256sums_x86_64=('98bf54e85e4916068c4281459b0f0431d8ff68034773f3ee98311d7206566ab1')
|
||||||
|
sha256sums_aarch64=('b944a2154528815bb476bfb1e7091f8a3e329b3c67f6c11de8d41668a603bd9e')
|
||||||
|
|
||||||
|
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}"
|
||||||
|
|
||||||
|
# Upstream's /usr/bin/claude-desktop is a bare symlink to the Electron
|
||||||
|
# binary; replace it with a launcher that picks the right Ozone platform.
|
||||||
|
rm "${pkgdir}/usr/bin/claude-desktop"
|
||||||
|
install -Dm755 claude-desktop-launcher.sh "${pkgdir}/usr/bin/claude-desktop"
|
||||||
|
|
||||||
|
install -Dm644 "${pkgdir}/usr/share/doc/claude-desktop/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"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
user_flags=()
|
||||||
|
config_home="${XDG_CONFIG_HOME:-}"
|
||||||
|
[[ -n "$config_home" || -z "${HOME:-}" ]] || config_home="$HOME/.config"
|
||||||
|
flags_file="${config_home:+$config_home/claude-desktop-flags.conf}"
|
||||||
|
|
||||||
|
if [[ -n "$flags_file" && -f "$flags_file" && -r "$flags_file" ]]; then
|
||||||
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||||
|
line="${line%%#*}"
|
||||||
|
[[ -n "${line//[[:space:]]/}" ]] || continue
|
||||||
|
read -r -a flags <<<"$line"
|
||||||
|
user_flags+=("${flags[@]}")
|
||||||
|
done <"$flags_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Chromium's own Ozone detection falls back to XWayland often enough to matter,
|
||||||
|
# and the result is a blurry window on every scaled display. Ask for Wayland
|
||||||
|
# directly, unless the user has already picked a platform themselves.
|
||||||
|
platform_flags=()
|
||||||
|
if [[ -n "${WAYLAND_DISPLAY:-}" || "${XDG_SESSION_TYPE:-}" == wayland ]]; then
|
||||||
|
platform_flags=(--ozone-platform=wayland)
|
||||||
|
|
||||||
|
for flag in "${user_flags[@]}" "$@"; do
|
||||||
|
case "$flag" in
|
||||||
|
--ozone-platform=* | --ozone-platform-hint=*) platform_flags=() ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /usr/lib/claude-desktop/claude-desktop "${platform_flags[@]}" "${user_flags[@]}" "$@"
|
||||||
Reference in new issue
Block a user