Create shared / fast track for certain packages

This commit is contained in:
Ryan Hughes committed 2026-01-10 20:18:35 -05:00
1 parent 1dfa83863d
commit 45a356eb70
253 files changed
+566 -458

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
pkgbase = 1password-beta
pkgdesc = Password manager and secure wallet
pkgver = 8.11.22_26.BETA
pkgrel = 26
url = https://1password.com
install = 1password.install
arch = x86_64
license = LicenseRef-1Password-Proprietary
conflicts = 1password
conflicts = 1password-beta-bin
options = !strip
source = https://downloads.1password.com/linux/tar/beta/x86_64/1password-8.11.22-26.BETA.x64.tar.gz
source = https://downloads.1password.com/linux/tar/beta/x86_64/1password-8.11.22-26.BETA.x64.tar.gz.sig
validpgpkeys = 3FEF9748469ADBE15DA7CA80AC2D62742012EA22
sha256sums = 964432a41aabd555fffbccb3e4f85450b286f59a6e5e3792fd934b2f543375cb
sha256sums = f236c79bb3b5ea8498df7a80a80b07ad9691ca0d30e8d956b734d39ba9845dac
pkgname = 1password-beta
depends = hicolor-icon-theme
depends = libgtk-3.so=0
depends = nss
depends = xdg-utils
@@ -0,0 +1,3 @@
include:
- project: 'dev/core/1password-archlinux-aur-ci'
file: '/ci.yml'
+48
View File
@@ -0,0 +1,48 @@
# Do not add your user, or any others, to this group.
GROUP_NAME="onepassword"
app_group_exists() {
if [ $(getent group "${GROUP_NAME}") ]; then
true
else
false
fi
}
setup_browser_helper() {
# Setup the Core App Integration helper binary with the correct permissions and group
BROWSER_SUPPORT_PATH="/opt/1Password/1Password-BrowserSupport"
chgrp "${GROUP_NAME}" $BROWSER_SUPPORT_PATH
chmod g+s $BROWSER_SUPPORT_PATH
}
pre_install() {
if app_group_exists; then
: # Do nothing
else
groupadd "${GROUP_NAME}"
fi
}
pre_upgrade() {
if app_group_exists; then
: # Do nothing
else
groupadd "${GROUP_NAME}"
fi
}
post_install() {
setup_browser_helper
}
post_upgrade() {
setup_browser_helper
}
post_remove() {
if app_group_exists; then
groupdel "${GROUP_NAME}"
fi
}
@@ -0,0 +1,2 @@
.gitlab-ci.yml @people/ops-team
CODEOWNERS @people/ops-team
@@ -0,0 +1,98 @@
# 1Password Beta aarch64 Support - Patch Summary
## Changes Made
Updated the 1Password Beta PKGBUILD to support both x86_64 and aarch64 architectures.
### Key Modifications
1. **Architecture Support**: Added `'aarch64'` to the `arch` array
2. **Dynamic Source URLs**: Removed hardcoded `.x64` filename, made it architecture-dependent
3. **Architecture-specific Variables**:
- `_tar`: Tarball filename (`.x64.tar.gz` or `.arm64.tar.gz`)
- `_archdir`: Directory name inside tarball (`x64` or `arm64`)
4. **Split Checksums**: Changed from single `sha256sums` to arch-specific arrays
5. **Updated Directory References**: Changed hardcoded `.x64` to `${_archdir}` variable
### Patch Location
- **File**: `patches/add-aarch64-support.patch`
- **Documentation**: `patches/README.md`
### Checksums Verified
Downloaded and verified SHA256 checksums for aarch64 files:
- **Tarball**: `661a45bb57f8b6e184d7b7603221cf938774aec674a357672d6cc1d4387fab40`
- **Signature**: `5cec37c65607760df4cc1734a51154b70ff660b5147160323905178aee23b7e2`
## Testing
### ✅ Build Results
**Successfully built for aarch64!**
```
Package: 1password-beta-8.11.16_30.BETA-30-aarch64.pkg.tar.xz
Size: 139MB
Location: build-output/aarch64/
Built: 2025-10-27
```
The package was successfully:
- Downloaded from 1Password's aarch64 repository
- Verified with SHA256 checksums
- GPG signature verified
- Extracted and packaged for aarch64
### Syntax Validation
```bash
# Test x86_64 configuration
CARCH=x86_64 source PKGBUILD && echo "Source: ${source_x86_64[0]}"
# Test aarch64 configuration
CARCH=aarch64 source PKGBUILD && echo "Source: ${source_aarch64[0]}"
```
### Expected Behavior
**x86_64**:
- Downloads from: `https://downloads.1password.com/linux/tar/beta/x86_64/`
- Tarball: `1password-8.11.16-30.BETA.x64.tar.gz`
- Extracts to: `1password-8.11.16-30.BETA.x64/`
**aarch64**:
- Downloads from: `https://downloads.1password.com/linux/tar/beta/aarch64/`
- Tarball: `1password-8.11.16-30.BETA.arm64.tar.gz`
- Extracts to: `1password-8.11.16-30.BETA.arm64/`
## Building
```bash
# Build for x86_64
bin/repo build --arch x86_64 --package 1password-beta
# Build for aarch64
bin/repo build --arch aarch64 --package 1password-beta
```
## Patch Stats
- **Lines changed**: 19
- **Lines added**: 29
- **Lines removed**: 10
- **Net change**: +19 lines
## Upstream Source
1Password officially supports ARM64 Linux:
- Stable: https://downloads.1password.com/linux/tar/stable/aarch64/
- Beta: https://downloads.1password.com/linux/tar/beta/aarch64/
## Notes
- GPG signature verification works for both architectures
- Same signing key is used: `3FEF9748469ADBE15DA7CA80AC2D62742012EA22`
- Package structure is identical between architectures
- This patch can be auto-applied by `bin/sync-aur` if placed in `patches/` directory
+66
View File
@@ -0,0 +1,66 @@
pkgname=1password-beta
_tarver=8.11.22-26.BETA
_tar="1password-${_tarver}.x64.tar.gz"
pkgver=${_tarver//-/_}
pkgrel=26
conflicts=('1password' '1password-beta-bin')
pkgdesc="Password manager and secure wallet"
arch=('x86_64')
url='https://1password.com'
license=('LicenseRef-1Password-Proprietary')
options=(!strip)
install="1password.install"
source=(https://downloads.1password.com/linux/tar/beta/${CARCH}/${_tar}{,.sig})
sha256sums=('964432a41aabd555fffbccb3e4f85450b286f59a6e5e3792fd934b2f543375cb'
'f236c79bb3b5ea8498df7a80a80b07ad9691ca0d30e8d956b734d39ba9845dac'
)
validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22')
package() {
depends=('hicolor-icon-theme' 'libgtk-3.so=0' 'nss' 'xdg-utils')
# Go to source directory
cd "1password-${_tarver}.x64"
# Install icons
resolutions=(32x32 64x64 256x256 512x512)
for resolution in "${resolutions[@]}"
do
install -Dm0644 "resources/icons/hicolor/${resolution}/apps/1password.png" \
"${pkgdir}/usr/share/icons/hicolor/${resolution}/apps/1password.png"
done
# Install desktop file
install -Dm0644 resources/1password.desktop -t "${pkgdir}"/usr/share/applications/
# Fill in policy kit file with a list of (the first 10) human users of the system.
export POLICY_OWNERS
POLICY_OWNERS="$(cut -d: -f1,3 /etc/passwd | grep -E ':[0-9]{4}$' | cut -d: -f1 | head -n 10 | sed 's/^/unix-user:/' | tr '\n' ' ')"
eval "cat <<EOF
$(cat ./com.1password.1Password.policy.tpl)
EOF" > ./com.1password.1Password.policy
# Install system unlock PolKit policy file
install -Dm0644 com.1password.1Password.policy -t "${pkgdir}"/usr/share/polkit-1/actions/
# Install examples
install -Dm0644 resources/custom_allowed_browsers -t "${pkgdir}"/usr/share/doc/1password/examples/
# Move package contents to /opt/1Password
cd "${srcdir}"
install -dm0755 "${pkgdir}"/opt
mv "1password-${_tarver}.x64" "${pkgdir}/opt/1Password"
# Cleanup un-needed files
rm "${pkgdir}"/opt/1Password/com.1password.1Password.policy "${pkgdir}"/opt/1Password/com.1password.1Password.policy.tpl "${pkgdir}"/opt/1Password/install_biometrics_policy.sh
rm -r "${pkgdir}"/opt/1Password/resources/icons/
rm "${pkgdir}"/opt/1Password/resources/1password.desktop "${pkgdir}"/opt/1Password/resources/custom_allowed_browsers
# Symlink /usr/bin executable to opt
install -dm0755 "${pkgdir}"/usr/bin
ln -s /opt/1Password/1password "${pkgdir}"/usr/bin/1password
# chrome-sandbox requires the setuid bit to be specifically set.
# See https://github.com/electron/electron/issues/17972
chmod 4755 "${pkgdir}"/opt/1Password/chrome-sandbox
}
+2
View File
@@ -0,0 +1,2 @@
SSH_PRIVATE_KEY_B64 = "op://cgl-build-release-archlinux-aur-prod/AUR_SSH_PRIVATE_KEY_B64/credential"
SSH_PASSPHRASE_B64 = "op://cgl-build-release-archlinux-aur-prod/AUR_SSH_PASSPHRASE_B64/credential"
@@ -0,0 +1,76 @@
# 1Password Beta - aarch64 Support Patch
## Overview
This patch adds aarch64 (ARM64) architecture support to the 1Password Beta PKGBUILD.
## Background
1Password officially provides ARM64 builds for Linux:
- https://downloads.1password.com/linux/tar/beta/aarch64/
- https://downloads.1password.com/linux/tar/stable/aarch64/
The original PKGBUILD only supported x86_64, but the source URLs use `${CARCH}` which should work for both architectures.
## Changes Made
1. **Added aarch64 to arch array**: `arch=('x86_64' 'aarch64')`
2. **Architecture-specific variables**:
- x86_64: Uses `.x64.tar.gz` files and `x64` directory
- aarch64: Uses `.arm64.tar.gz` files and `arm64` directory
3. **Architecture-specific checksums**:
- `sha256sums_x86_64=()` - Kept original checksums
- `sha256sums_aarch64=()` - Downloaded and verified real checksums
4. **Dynamic directory names**: Changed hardcoded `.x64` to `${_archdir}`
## Testing
To test on aarch64:
```bash
# Build for aarch64
bin/repo build --arch aarch64 --package 1password-beta
# The package should download from:
# https://downloads.1password.com/linux/tar/beta/aarch64/1password-8.11.16-30.BETA.arm64.tar.gz
```
## Applying the Patch
If syncing from AUR in the future, apply this patch:
```bash
cd pkgbuilds/1password-beta
patch -p0 < patches/add-aarch64-support.patch
```
Or if the patch is in the patches/ directory, it will be auto-applied by the sync script.
## Checksums
The aarch64 checksums were obtained by downloading directly from 1Password:
```bash
# Tarball
curl -sSL https://downloads.1password.com/linux/tar/beta/aarch64/1password-8.11.16-30.BETA.arm64.tar.gz | sha256sum
# 661a45bb57f8b6e184d7b7603221cf938774aec674a357672d6cc1d4387fab40
# Signature
curl -sSL https://downloads.1password.com/linux/tar/beta/aarch64/1password-8.11.16-30.BETA.arm64.tar.gz.sig | sha256sum
# 5cec37c65607760df4cc1734a51154b70ff660b5147160323905178aee23b7e2
```
## TODO
- [ ] Test installation on actual aarch64 hardware (Asahi Linux)
- [ ] Consider upstreaming to AUR (if maintainer is interested)
- [ ] Update checksums when 1Password beta version changes
## Notes
- The 1Password desktop app is proprietary and distributed as binary
- GPG signature verification works for both architectures using the same key
- The package structure is identical between x86_64 and aarch64 versions
@@ -0,0 +1,56 @@
--- PKGBUILD.orig 2025-10-27 16:49:24.211786922 -0400
+++ PKGBUILD 2025-10-27 16:53:01.902479709 -0400
@@ -1,27 +1,37 @@
pkgname=1password-beta
_tarver=8.11.16-30.BETA
-_tar="1password-${_tarver}.x64.tar.gz"
pkgver=${_tarver//-/_}
pkgrel=30
conflicts=('1password' '1password-beta-bin')
pkgdesc="Password manager and secure wallet"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
url='https://1password.com'
license=('LicenseRef-1Password-Proprietary')
options=(!strip)
install="1password.install"
-source=(https://downloads.1password.com/linux/tar/beta/${CARCH}/${_tar}{,.sig})
-sha256sums=('21f127aa3b879ec353df20e0b0eec1572f17d44e529ac19870a21586670bc0d1'
- 'c04d8bf6b7059eec4279436199324547689a7cc4453e6c57a5637384d6210ba6'
-)
+
+# Architecture-specific variables
+if [ "$CARCH" = "x86_64" ]; then
+ _archdir="x64"
+elif [ "$CARCH" = "aarch64" ]; then
+ _archdir="arm64"
+fi
+
+source_x86_64=(https://downloads.1password.com/linux/tar/beta/x86_64/1password-${_tarver}.x64.tar.gz{,.sig})
+source_aarch64=(https://downloads.1password.com/linux/tar/beta/aarch64/1password-${_tarver}.arm64.tar.gz{,.sig})
+
+sha256sums_x86_64=('21f127aa3b879ec353df20e0b0eec1572f17d44e529ac19870a21586670bc0d1'
+ 'c04d8bf6b7059eec4279436199324547689a7cc4453e6c57a5637384d6210ba6')
+sha256sums_aarch64=('661a45bb57f8b6e184d7b7603221cf938774aec674a357672d6cc1d4387fab40'
+ '5cec37c65607760df4cc1734a51154b70ff660b5147160323905178aee23b7e2')
validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22')
package() {
depends=('hicolor-icon-theme' 'libgtk-3.so=0' 'nss' 'xdg-utils')
# Go to source directory
- cd "1password-${_tarver}.x64"
+ cd "1password-${_tarver}.${_archdir}"
# Install icons
resolutions=(32x32 64x64 256x256 512x512)
@@ -49,7 +59,7 @@
# Move package contents to /opt/1Password
cd "${srcdir}"
install -dm0755 "${pkgdir}"/opt
- mv "1password-${_tarver}.x64" "${pkgdir}/opt/1Password"
+ mv "1password-${_tarver}.${_archdir}" "${pkgdir}/opt/1Password"
# Cleanup un-needed files
rm "${pkgdir}"/opt/1Password/com.1password.1Password.policy "${pkgdir}"/opt/1Password/com.1password.1Password.policy.tpl "${pkgdir}"/opt/1Password/install_biometrics_policy.sh
+27
View File
@@ -0,0 +1,27 @@
pkgbase = 1password-cli
pkgdesc = 1Password command line tool
pkgver = 2.32.0
pkgrel = 2
url = https://app-updates.agilebits.com/product_history/CLI2
install = 1password-cli.install
arch = x86_64
arch = i686
arch = arm
arch = armv6h
arch = aarch64
license = custom
options = !strip
options = !emptydirs
validpgpkeys = 3FEF9748469ADBE15DA7CA80AC2D62742012EA22
source_x86_64 = https://cache.agilebits.com/dist/1P/op2/pkg/v2.32.0/op_linux_amd64_v2.32.0.zip
sha256sums_x86_64 = 68e3141b11ad38ba5004fb40d71371b710c0bbf94733f0df9180768336f90097
source_i686 = https://cache.agilebits.com/dist/1P/op2/pkg/v2.32.0/op_linux_386_v2.32.0.zip
sha256sums_i686 = f9a7649d94335e1a5b574822a7040ab9faa58e3c185d85dbf2a88068d5e06829
source_arm = https://cache.agilebits.com/dist/1P/op2/pkg/v2.32.0/op_linux_arm_v2.32.0.zip
sha256sums_arm = 463227b46246fc764c48ec918c2c1c04ffb354d0eeb00a536c1d9f1549a0347c
source_armv6h = https://cache.agilebits.com/dist/1P/op2/pkg/v2.32.0/op_linux_arm_v2.32.0.zip
sha256sums_armv6h = 463227b46246fc764c48ec918c2c1c04ffb354d0eeb00a536c1d9f1549a0347c
source_aarch64 = https://cache.agilebits.com/dist/1P/op2/pkg/v2.32.0/op_linux_arm64_v2.32.0.zip
sha256sums_aarch64 = 6f3d571aabe7701e21ad4b0f9d30207c3dcabdb2f9c261e3651106dde0ee8946
pkgname = 1password-cli
+10
View File
@@ -0,0 +1,10 @@
# makepkg directories
pkg/
src/
# built packages
*.tar.xz
*.tar.zst
# source files
*.zip
@@ -0,0 +1,13 @@
post_install() {
if [ $(getent group onepassword-cli) ]; then
: # no-op
else
groupadd onepassword-cli
fi
chgrp onepassword-cli /usr/bin/op
chmod g+s /usr/bin/op
}
post_upgrade() {
post_install
}
+37
View File
@@ -0,0 +1,37 @@
# Maintainer: slurpee <aur@lylat.io>
# Contributors: Felix Seidel, Claudia Pellegrino, Liu Yuxuan
pkgname=1password-cli
pkgver=2.32.0
pkgrel=2
pkgdesc="1Password command line tool"
arch=('x86_64' 'i686' 'arm' 'armv6h' 'aarch64')
url="https://app-updates.agilebits.com/product_history/CLI2"
license=('custom')
options=('!strip' '!emptydirs')
install=${pkgname}.install
validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22')
source_x86_64=("https://cache.agilebits.com/dist/1P/op2/pkg/v${pkgver}/op_linux_amd64_v${pkgver}.zip")
source_i686=("https://cache.agilebits.com/dist/1P/op2/pkg/v${pkgver}/op_linux_386_v${pkgver}.zip")
source_arm=("https://cache.agilebits.com/dist/1P/op2/pkg/v${pkgver}/op_linux_arm_v${pkgver}.zip")
source_armv6h=("${source_arm}")
source_aarch64=("https://cache.agilebits.com/dist/1P/op2/pkg/v${pkgver}/op_linux_arm64_v${pkgver}.zip")
sha256sums_x86_64=('68e3141b11ad38ba5004fb40d71371b710c0bbf94733f0df9180768336f90097')
sha256sums_i686=('f9a7649d94335e1a5b574822a7040ab9faa58e3c185d85dbf2a88068d5e06829')
sha256sums_arm=('463227b46246fc764c48ec918c2c1c04ffb354d0eeb00a536c1d9f1549a0347c')
sha256sums_armv6h=("${sha256sums_arm}")
sha256sums_aarch64=('6f3d571aabe7701e21ad4b0f9d30207c3dcabdb2f9c261e3651106dde0ee8946')
check() {
if (( ! SKIPPGPCHECK )); then
gpg --verify ${srcdir}/op.sig ${srcdir}/op
fi
}
package() {
install -Dm755 op "${pkgdir}"/usr/bin/op
}
# vim:set ts=2 sw=2 et:
@@ -0,0 +1,21 @@
#!/bin/bash
# Usage:
# PKGVER=x.x.x ./package-update.sh
arch=( 'x86_64' 'i686' 'arm' 'aarch64' )
_arch=( 'amd64' '386' 'arm' 'arm64' )
sed -i "s/pkgver=.*/pkgver=${PKGVER}/" PKGBUILD
for a in "${!arch[@]}"; do
wget -q https://cache.agilebits.com/dist/1P/op2/pkg/v"${PKGVER}"/op_linux_"${_arch[a]}"_v"${PKGVER}".zip
unzip -q op_linux_"${_arch[a]}"_v"${PKGVER}".zip
if gpgv -q op.sig op > /dev/null 2>&1; then
sha256=$(sha256sum op_linux_"${_arch[a]}"_v"${PKGVER}".zip | awk '{print $1}')
sed -i "s/sha256sums_${arch[a]}=.*/sha256sums_${arch[a]}=\('${sha256}'\)/" PKGBUILD
else
echo "Bad Signature for op_linux_${arch[a]}_v${PKGVER}.zip."
fi
rm op*
done
+19
View File
@@ -0,0 +1,19 @@
pkgbase = aether
pkgdesc = Omarchy theming application
pkgver = 2.20.2
pkgrel = 1
url = https://github.com/bjarneo/aether
arch = any
license = MIT
depends = gjs
depends = gtk4
depends = libadwaita
depends = libsoup3
depends = imagemagick
depends = hyprshade
depends = gtk4-layer-shell
optdepends = omarchy: Theme application backend
source = aether-2.20.2.tar.gz::https://github.com/bjarneo/aether/archive/v2.20.2.tar.gz
sha256sums = abdb99aafda647a1fc33e7f45e63d2905cb6727d4f499863ecbcadbe3d59cf44
pkgname = aether
+43
View File
@@ -0,0 +1,43 @@
# Maintainer: Bjarne Øverli <bjarne@oever.li>
pkgname=aether
pkgver=2.20.2
pkgrel=1
pkgdesc="Omarchy theming application"
arch=('any')
url="https://github.com/bjarneo/aether"
license=('MIT')
depends=('gjs' 'gtk4' 'libadwaita' 'libsoup3' 'imagemagick' 'hyprshade' 'gtk4-layer-shell')
optdepends=('omarchy: Theme application backend')
source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz")
sha256sums=('abdb99aafda647a1fc33e7f45e63d2905cb6727d4f499863ecbcadbe3d59cf44') # Replace with actual checksum after creating GitHub release
package() {
cd "$srcdir/$pkgname-$pkgver"
# Install source files
install -dm755 "$pkgdir/usr/share/$pkgname"
cp -r src templates shaders "$pkgdir/usr/share/$pkgname/"
# Create launcher script
install -dm755 "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/aether" << 'EOF'
#!/bin/bash
cd /usr/share/aether || exit
# Preload GTK4 Layer Shell to fix linking order issue with libwayland
# See: https://github.com/wmww/gtk4-layer-shell/blob/main/linking.md
export LD_PRELOAD=/usr/lib/libgtk4-layer-shell.so
exec gjs -m src/main.js "$@"
EOF
chmod 755 "$pkgdir/usr/bin/aether"
# Install desktop entry
install -Dm644 li.oever.aether.desktop "$pkgdir/usr/share/applications/li.oever.aether.desktop"
# Install icon
install -Dm644 icon.png "$pkgdir/usr/share/pixmaps/aether.png"
# Install license
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
}
+20
View File
@@ -0,0 +1,20 @@
pkgbase = bun-bin
pkgdesc = All-in-one JavaScript runtime built for speed, with bundler, transpiler, test runner, and package manager. Includes bunx, shell completions and support for baseline CPUs
pkgver = 1.3.5
pkgrel = 1
url = https://github.com/oven-sh/bun
arch = x86_64
arch = aarch64
license = MIT
provides = bun
conflicts = bun
source_x86_64 = bun-x64-1.0.36.zip::https://github.com/oven-sh/bun/releases/download/bun-v1.0.36/bun-linux-x64.zip
source_x86_64 = LICENSE
sha256sums_x86_64 = 7051d86a924aefea3e0b96213b5fd8f79c0793f9cae6534233e627e5c3db4669
sha256sums_x86_64 = 9b296bcc20090b5ea079dc1bca15913a32246121169bcf54cbdb7384d6f5b32b
source_aarch64 = bun-aarch64-1.0.36.zip::https://github.com/oven-sh/bun/releases/download/bun-v1.0.36/bun-linux-aarch64.zip
source_aarch64 = LICENSE
sha256sums_aarch64 = ed01000f85bd97785228ad2845dc92a1860b8054856826d7317690ac8f8ee74b
sha256sums_aarch64 = 9b296bcc20090b5ea079dc1bca15913a32246121169bcf54cbdb7384d6f5b32b
pkgname = bun-bin
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Jarred Sumner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+61
View File
@@ -0,0 +1,61 @@
# Maintainer: Noel Jacob <noeljacob91 at gmail dot com>
# Contributor: thdxr (original PKGBUILD)
# Contributor: 37h4n (aarch64 support added by Ethan Reece <aur at ethanreece dot com>)
# Contributor: sh!zeeg (shizeeque@gmail.com) support for non-avx2 CPUs, shell completions.
pkgname=bun-bin
pkgver=1.3.5
pkgrel=1
pkgdesc="All-in-one JavaScript runtime built for speed, with bundler, transpiler, test runner, and package manager. Includes bunx, shell completions and support for baseline CPUs"
arch=('x86_64' 'aarch64')
url="https://github.com/oven-sh/bun"
license=('MIT')
provides=('bun')
conflicts=('bun')
sha256sums_x86_64=('7051d86a924aefea3e0b96213b5fd8f79c0793f9cae6534233e627e5c3db4669'
'9b296bcc20090b5ea079dc1bca15913a32246121169bcf54cbdb7384d6f5b32b'
)
sha256sums_aarch64=('ed01000f85bd97785228ad2845dc92a1860b8054856826d7317690ac8f8ee74b'
'9b296bcc20090b5ea079dc1bca15913a32246121169bcf54cbdb7384d6f5b32b'
)
_baseline=''
_baseline_sha256sums='6bddacd6a65855698b9816f2d74871eda4dd0b7fa921140c6445248f94a742fd'
if [[ $CARCH == 'x86_64' && $(cat /proc/cpuinfo | grep avx2) = '' ]]; then
_baseline='-baseline'
sha256sums_x86_64=${_baseline_sha256sums}
fi
source_x86_64=(
"bun-x64-${pkgver}.zip::https://github.com/oven-sh/bun/releases/download/bun-v${pkgver}/bun-linux-x64${_baseline}.zip"
"LICENSE"
)
source_aarch64=(
"bun-aarch64-${pkgver}.zip::https://github.com/oven-sh/bun/releases/download/bun-v${pkgver}/bun-linux-aarch64.zip"
"LICENSE"
)
build() {
if [ "${CARCH}" == "aarch64" ]; then
cd "bun-linux-aarch64"
else
cd "bun-linux-x64${_baseline}"
fi
install -dm755 "completions"
SHELL=zsh "./bun" completions >"completions/bun.zsh"
SHELL=bash "./bun" completions >"completions/bun.bash"
SHELL=fish "./bun" completions >"completions/bun.fish"
}
package() {
if [ "${CARCH}" == "aarch64" ]; then
cd "bun-linux-aarch64"
install -Dm755 "./bun" "${pkgdir}/usr/bin/bun"
else
cd "bun-linux-x64${_baseline}"
install -Dm755 "./bun" "${pkgdir}/usr/bin/bun"
fi
# simlink as bunx as in the official install.sh
ln -s bun "${pkgdir}/usr/bin/bunx"
install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 completions/bun.zsh "${pkgdir}/usr/share/zsh/site-functions/_bun"
install -Dm644 completions/bun.bash "${pkgdir}/usr/share/bash-completion/completions/bun"
install -Dm644 completions/bun.fish "${pkgdir}/usr/share/fish/vendor_completions.d/bun.fish"
}
+22
View File
@@ -0,0 +1,22 @@
pkgbase = claude-code
pkgdesc = An agentic coding tool that lives in your terminal
pkgver = 2.1.3
pkgrel = 1
url = https://github.com/anthropics/claude-code
arch = x86_64
arch = aarch64
license = LicenseRef-claude-code
depends = bash
optdepends = git: allow Claude to use git
optdepends = github-cli: interact with GitHub
optdepends = glab: interact with GitLab
optdepends = ripgrep: enhanced file search
options = !strip
source = LICENSE::https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/LICENSE.md
sha256sums = 728158fd1037143fad6907e8fa34804177e598b7326519503fe83cafdef849e6
source_x86_64 = claude-2.1.3-x86_64::https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.3/linux-x64/claude
sha256sums_x86_64 = c8de68f17954c30157100600c7a85e6dbaf8bca64875e65071f5e87fbc62d882
source_aarch64 = claude-2.1.3-aarch64::https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.3/linux-arm64/claude
sha256sums_aarch64 = 1947e332e10bfc961ea974cb98b6f53f2c85c3d8c2d0ff476f9093c49864b35f
pkgname = claude-code
@@ -0,0 +1,4 @@
[claude-code]
source = "regex"
url = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest"
regex = ".+"
+47
View File
@@ -0,0 +1,47 @@
# Maintainer: Christopher Cooper <christopher@cg505.com>
# Maintainer: Jérôme Poulin <jeromepoulin@gmail.com>
pkgname=claude-code
pkgver=2.1.3
pkgrel=1
pkgdesc="An agentic coding tool that lives in your terminal"
arch=('x86_64' 'aarch64')
url="https://github.com/anthropics/claude-code"
license=('LicenseRef-claude-code')
depends=('bash')
# Binary is a self-contained Bun executable with embedded JS/resources - stripping breaks it
options=('!strip')
optdepends=(
'git: allow Claude to use git'
'github-cli: interact with GitHub'
'glab: interact with GitLab'
'ripgrep: enhanced file search'
)
# This bucket is used in the official install script at https://claude.ai/install.sh
# curl -fsSL https://claude.ai/install.sh | grep GCS_BUCKET
_gcs_bucket="https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases"
source=("LICENSE::https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/LICENSE.md")
source_x86_64=("claude-${pkgver}-x86_64::${_gcs_bucket}/${pkgver}/linux-x64/claude")
source_aarch64=("claude-${pkgver}-aarch64::${_gcs_bucket}/${pkgver}/linux-arm64/claude")
sha256sums=('728158fd1037143fad6907e8fa34804177e598b7326519503fe83cafdef849e6')
sha256sums_x86_64=('c8de68f17954c30157100600c7a85e6dbaf8bca64875e65071f5e87fbc62d882')
sha256sums_aarch64=('1947e332e10bfc961ea974cb98b6f53f2c85c3d8c2d0ff476f9093c49864b35f')
package() {
install -Dm755 "${srcdir}/claude-${pkgver}-${CARCH}" "${pkgdir}/opt/claude-code/bin/claude"
# Create wrapper script that sets NPM_CONFIG_PREFIX to avoid false npm detection
install -dm755 "${pkgdir}/usr/bin"
cat > "${pkgdir}/usr/bin/claude" << 'EOF'
#!/bin/sh
# Wrapper to prevent claude from detecting /usr/bin/claude as npm-global installation
export NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-/nonexistent}"
# Disable autoupdater
export DISABLE_AUTOUPDATER=1
exec /opt/claude-code/bin/claude "$@"
EOF
chmod 755 "${pkgdir}/usr/bin/claude"
install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
set -e
GCS_BUCKET="https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases"
PKGBUILD="PKGBUILD"
# Get current version from PKGBUILD
current_version=$(grep -Po '^pkgver=\K.*' "$PKGBUILD")
# Fetch latest version
new_version=$(curl -fsSL "$GCS_BUCKET/latest")
echo "Current version: $current_version"
echo "New version: $new_version"
if [ "$current_version" = "$new_version" ]; then
echo "Already up to date!"
exit 1
fi
# Download manifest
manifest=$(curl -fsSL "$GCS_BUCKET/$new_version/manifest.json")
# Extract checksums using jq
linux_x64=$(echo "$manifest" | jq -r '.platforms["linux-x64"].checksum')
linux_arm64=$(echo "$manifest" | jq -r '.platforms["linux-arm64"].checksum')
echo ""
echo "Checksums (SHA256):"
echo " linux-x64: $linux_x64"
echo " linux-arm64: $linux_arm64"
echo ""
# Update PKGBUILD
echo "Updating PKGBUILD..."
sed -i "s/^pkgver=.*/pkgver=$new_version/" "$PKGBUILD"
sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD"
sed -i "s/^sha256sums_x86_64=.*/sha256sums_x86_64=('$linux_x64')/" "$PKGBUILD"
sed -i "s/^sha256sums_aarch64=.*/sha256sums_aarch64=('$linux_arm64')/" "$PKGBUILD"
echo "Regenerating .SRCINFO..."
makepkg --printsrcinfo > .SRCINFO
echo ""
echo "Done! Updated from $current_version to $new_version"
+22
View File
@@ -0,0 +1,22 @@
pkgbase = crush-bin
pkgdesc = A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.
pkgver = 0.31.0
pkgrel = 1
url = https://charm.sh/crush
license = FSL-1.1-MIT
conflicts = crush
provides = crush
arch = aarch64
source_aarch64 = https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_arm64.tar.gz
sha256sums_aarch64 = ee34d77f093445c7d3bb418a66d783b62f688bb6a32e959458c38fae4b9d60d0
arch = armv7h
source_armv7h = https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_armv7.tar.gz
sha256sums_armv7h = 967aaf11b7831825c80681a30cced472d65e4593641ee314295ce24e33a49714
arch = i686
source_i686 = https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_i386.tar.gz
sha256sums_i686 = 94af95abf8442700ed84af838315d3e28e07e2af856f2bc31a3915f1159e5ad6
arch = x86_64
source_x86_64 = https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_x86_64.tar.gz
sha256sums_x86_64 = 48eed9a6ceeb4d0569e79dcaf2645bb2219ac3b29e21113a8ce05391386ea94b
pkgname = crush-bin
+53
View File
@@ -0,0 +1,53 @@
# This file was generated by GoReleaser. DO NOT EDIT.
# Maintainer: kujtimiihoxha <kujtim@charm.sh>
# Maintainer: caarlos0 <carlos@charm.sh>
pkgname='crush-bin'
pkgver=0.31.0
pkgrel=1
pkgdesc='A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.'
url='https://charm.sh/crush'
arch=('aarch64' 'armv7h' 'i686' 'x86_64')
license=('FSL-1.1-MIT')
provides=('crush')
conflicts=('crush')
source_aarch64=("${pkgname}_${pkgver}_aarch64.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_arm64.tar.gz")
sha256sums_aarch64=('ee34d77f093445c7d3bb418a66d783b62f688bb6a32e959458c38fae4b9d60d0')
source_armv7h=("${pkgname}_${pkgver}_armv7h.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_armv7.tar.gz")
sha256sums_armv7h=('967aaf11b7831825c80681a30cced472d65e4593641ee314295ce24e33a49714')
source_i686=("${pkgname}_${pkgver}_i686.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_i386.tar.gz")
sha256sums_i686=('94af95abf8442700ed84af838315d3e28e07e2af856f2bc31a3915f1159e5ad6')
source_x86_64=("${pkgname}_${pkgver}_x86_64.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_x86_64.tar.gz")
sha256sums_x86_64=('48eed9a6ceeb4d0569e79dcaf2645bb2219ac3b29e21113a8ce05391386ea94b')
package() {
case "$CARCH" in
aarch64)
cd "${srcdir}/crush_${pkgver}_Linux_arm64"
;;
*)
cd "${srcdir}/crush_${pkgver}_Linux_${CARCH}"
;;
esac
# bin
install -Dm755 "./crush" "${pkgdir}/usr/bin/crush"
# license
mkdir -p "${pkgdir}/usr/share/licenses/crush/"
install -Dm644 ./LICENSE* "${pkgdir}/usr/share/licenses/crush/"
# completions
mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
install -Dm644 "./completions/crush.bash" "${pkgdir}/usr/share/bash-completion/completions/crush"
install -Dm644 "./completions/crush.zsh" "${pkgdir}/usr/share/zsh/site-functions/_crush"
install -Dm644 "./completions/crush.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/crush.fish"
# man pages
install -Dm644 "./manpages/crush.1.gz" "${pkgdir}/usr/share/man/man1/crush.1.gz"
# readme
mkdir -pv "${pkgdir}/usr/share/doc/crush/"
install -Dm644 README* "${pkgdir}/usr/share/doc/crush/"
}
+24
View File
@@ -0,0 +1,24 @@
pkgbase = cursor-bin
pkgdesc = AI-first coding environment
pkgver = 2.3.34
pkgrel = 1
url = https://www.cursor.com
arch = x86_64
license = LicenseRef-Cursor_EULA
depends = xdg-utils
depends = ripgrep
depends = electron37
depends = nodejs
depends = gcc-libs
depends = hicolor-icon-theme
depends = libxkbfile
noextract = cursor_2.3.34_amd64.deb
options = !strip
source = https://downloads.cursor.com/production/643ba67cd252e2888e296dd0cf34a0c5d7625b96/linux/x64/deb/amd64/deb/cursor_2.3.34_amd64.deb
source = https://gitlab.archlinux.org/archlinux/packaging/packages/code/-/raw/main/code.sh
source = rg.sh
sha512sums = deec916e163ef74130fedbc2bdc128cdf4cf10e833bb75f024fca7495ebcf05b8ae81197c161b5fe6d70cb307680bef0fbfbbc744b21f77c58124aa3a084a745
sha512sums = 937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37
sha512sums = e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a
pkgname = cursor-bin
+20
View File
@@ -0,0 +1,20 @@
cursor-0.37.1.AppImage
cursor-bin-0.37.1-1-x86_64.pkg.tar.zst
pkg/cursor-bin/.BUILDINFO
pkg/cursor-bin/.MTREE
pkg/cursor-bin/.PKGINFO
pkg/cursor-bin/opt/cursor-bin/cursor-bin.AppImage
pkg/cursor-bin/usr/bin/cursor
pkg/cursor-bin/usr/share/applications/cursor.desktop
pkg/cursor-bin/usr/share/icons/hicolor/512x512/apps/cursor.png
src/cursor.png
+36
View File
@@ -0,0 +1,36 @@
# Maintainer: Gunther Schulz <dev@guntherschulz.de>
pkgname=cursor-bin
pkgver=2.3.34
pkgrel=1
pkgdesc='AI-first coding environment'
arch=('x86_64')
url="https://www.cursor.com"
license=('LicenseRef-Cursor_EULA')
_electron=electron37
depends=(xdg-utils ripgrep $_electron nodejs
'gcc-libs' 'hicolor-icon-theme' 'libxkbfile')
options=(!strip) # Don't break ext of VSCode
_commit=643ba67cd252e2888e296dd0cf34a0c5d7625b96
source=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
https://gitlab.archlinux.org/archlinux/packaging/packages/code/-/raw/main/code.sh rg.sh)
sha512sums=('SKIP'
'937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37'
'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
sha512sums[0]=deec916e163ef74130fedbc2bdc128cdf4cf10e833bb75f024fca7495ebcf05b8ae81197c161b5fe6d70cb307680bef0fbfbbc744b21f77c58124aa3a084a745
noextract=(cursor_${pkgver}_amd64.deb) # avoid double tarball
_app=usr/share/cursor/resources/app
package() {
# Exclude electron
bsdtar -xOf ${noextract[0]} data.tar.xz | tar -xJf - -C "$pkgdir" \
--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak'
cd "$pkgdir"
mv usr/share/zsh/{vendor-completions,site-functions}
ln -sf /usr/bin/node ${_app}/resources/helpers/node
install -Dm755 "${srcdir}/rg.sh" ${_app}/node_modules/@vscode/ripgrep/bin/rg
ln -sf /usr/bin/xdg-open ${_app}/node_modules/open/xdg-open
sed -e "s|code-flags|cursor-flags|" -e "s|/usr/lib/code|/${_app}|" -e "s|/usr/lib/code/code.mjs|--app=/${_app}|" \
-e "s|name=electron|name=${_electron}|" "${srcdir}"/code.sh | install -Dm755 /dev/stdin "${pkgdir}"/usr/share/cursor/cursor
install -d "$pkgdir"/usr/bin
ln -sf /usr/share/cursor/cursor "$pkgdir"/usr/bin/cursor
}
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
exec /usr/bin/rg "${@/--cursor-ignore/--ignore-file}"
+23
View File
@@ -0,0 +1,23 @@
pkgbase = cursor-cli
pkgdesc = Cursor Agent CLI - AI-powered code assistant
pkgver = 2026.01.02.1.80e4d9b
pkgrel = 1
epoch = 1
url = https://cursor.com
install = cursor-cli.install
arch = x86_64
arch = aarch64
license = LicenseRef-Cursor
depends = gcc-libs
depends = bash
depends = glibc
depends = nodejs
depends = ripgrep
source = Cursor-TOS
b2sums = 7079c023e03ea4d78b067ed0f22b5cc1982c306721b2ea6be3c7f73bbbe0e8f05b148fd6571902b838464ee80a787ef7be73135c622f0a4fdb16c38429ced8d6
source_x86_64 = cursor-cli-2026.01.02-80e4d9b-x86_64.tar.gz::https://downloads.cursor.com/lab/2026.01.02-80e4d9b/linux/x64/agent-cli-package.tar.gz
b2sums_x86_64 = d33b00dbb289220bbc3263d0f00b5479e868f6e592992134d2fd23644a8688141b5f6b77a73c18ee5be18e0cbdeb2be6cfd6df7c23bc76cb078c0258debca681
source_aarch64 = cursor-cli-2026.01.02-80e4d9b-aarch64.tar.gz::https://downloads.cursor.com/lab/2026.01.02-80e4d9b/linux/arm64/agent-cli-package.tar.gz
b2sums_aarch64 = 7cf66db8b813033ea856ad24ec4e038b2874799f250677e5e3cfc3227c9d867b93277d60b778a5f808eb4796c745d06756344a9279ad195a5a6333091e16654e
pkgname = cursor-cli
+120
View File
@@ -0,0 +1,120 @@
Terms of Service
Last Updated: June 13, 2025
Welcome, and thank you for your interest in Anysphere, Inc. (“Anysphere,” “we,” or “us”), makers of the Cursor software platform. These Terms of Service (“Terms”) govern your access to and use of Anysphere's software, platform, APIs, Documentation, and related tools, including the website www.cursor.com, and all related software made available by Anysphere to build, deploy, host, and manage software projects (collectively, the “Service”). By using the Service, you agree to these Terms.
Please also read our Privacy Policy⁠, which explains how we collect, use, disclose, and process personal data.
If you are using the Service as part of your work for a company or organization that has a Master Services Agreement (“MSA”) with Anysphere, your use of the Service is governed by that MSA.
If you are entering into these Terms on behalf of an entity, you represent that you have the legal authority to bind that entity.
1. Access and Use
1.1. Provision of Access. Anysphere is an applied research company working on automating coding. The Service offers a suite of coding tools driven by machine learning to help developers write code more easily and efficiently and can provide suggested code, outputs or other functions. Subject to your compliance with these Terms, Anysphere grants you a limited right to access and use the Service.
1.2. Content. You may provide inputs to the Service (“Inputs”) and receive code, outputs, or other functions based on the Inputs provided by you (collectively, “Suggestions”) (Inputs and Suggestions are collectively “Content”). We may use Content to provide the Service, comply with applicable law, enforce our terms and policies, and keep the Service safe. By submitting Inputs to the Service, you represent and warrant that you have all rights, licenses, and permissions that are necessary for us to process the Inputs under these Terms and to provide the Service to you.
1.3. Model Training. ANYSPHERE WILL NOT USE CONTENT TO TRAIN, OR ALLOW ANY THIRD PARTY TO TRAIN, ANY AI MODELS, UNLESS YOU’VE EXPLICITLY AGREED TO THE USE OF CONTENT FOR TRAINING. You can find instructions in the Service for how to manage your preferences regarding the use of Inputs and Suggestions for training.
1.4. Limitations for Suggestions. You acknowledge that Suggestions are generated automatically by machine learning technology and may be similar to or the same as Suggestions provided to other customers, and no rights to any Suggestions generated, provided, or returned by the Service for or to other customers are granted to you under these Terms. Further, you acknowledge that there are numerous limitations that apply with respect to Suggestions provided by large language and other AI models (each an “AI Model”), including that (i) Suggestions may contain errors or misleading information, (ii) AI Models are based on predefined rules and algorithms that lack the ability to think creatively and come up with new ideas and can result in repetitive or formulaic content, (iii) AI Models can struggle with understanding the nuances of language, including slang, idioms, and cultural references, (iv) AI Models can struggle with complex tasks that require reasoning, judgment and decision-making, and (v) data used to train AI models may be of poor quality or biased. You agree that you are responsible for evaluating, and bearing all risks associated with, the use of any Suggestions, including any reliance on the accuracy, completeness, or usefulness of Suggestions.
1.5. Use Restrictions. Except and solely to the extent such a restriction is impermissible under applicable law, you may not: (i) reverse engineer, disassemble, decompile, decode, or otherwise attempt to derive or gain access to the source code, object code or underlying structure of the Service; (ii) reproduce, modify, translate, or create derivative works of the Service; (iii) rent, lease, lend, or sell the Service; (iv) remove any proprietary notices from the Service; (v) use the Service or any Suggestions to develop or train a model that is competitive with the Service, or engage in model extraction or theft attacks; (vi) probe, scan or attempt to penetrate the Service; (vii) provide to any third party the results of any benchmark tests of the Service, unless you include all necessary information for others to replicate the tests; (viii) harvest, scrape, or extract data from the Service; (ix) use the Service in any manner that infringes, misappropriates, or otherwise violates any third party’s intellectual or other rights, or that violates any applicable laws or regulations; (x) send or otherwise provide to Anysphere data or information that is subject to specific protections under applicable laws beyond any requirements that apply to "personal information" or "personal data" generally, such as for illustrative purposes, information that is regulated by the Health Insurance Portability and Accountability Act, the Payment Card Industry Data Security Standard, the Gramm-Leach-Bliley Act, and other U.S. federal, state or foreign laws applying specific security standards; or (xi) knowingly permit any third party to do any of the foregoing. You will promptly notify Anysphere of any unauthorized use that comes to your attention and provide reasonable cooperation to prevent and terminate such use to the extent it is within your control.
1.6. Beta Services. From time to time, Anysphere may make Beta Services available to you. Beta Services shall be clearly designated as beta, pilot, limited release, non-production, early access, evaluation or a similar description. You may choose to use or not use such Beta Services in your sole discretion. Beta Services are intended for evaluation purposes and not for production use, are not fully supported, and may be subject to additional terms that may be presented to you. Beta Services are provided on an "as-is" and "as available" basis without any warranty, support, maintenance, or storage of any kind. Anysphere may discontinue Beta Services at any time in its sole discretion and may never make them generally available. ANYSPHERE SHALL HAVE NO LIABILITY WHATSOEVER ARISING OUT OF OR IN CONNECTION WITH BETA SERVICES - USE AT YOUR OWN RISK.
1.7. Auto-Code Execution. The Service may include a feature that automatically executes code Suggestions without manual review or confirmation, and will be clearly labeled accordingly. By enabling this feature, you acknowledge and agree that you are assuming all risks associated with the execution of automatically generated code, including without limitation system outages, software defects, data loss, and security vulnerabilities. YOU ARE SOLELY RESPONSIBLE FOR ANY IMPACT RESULTING FROM USE OF THIS FEATURE, INCLUDING ENSURING APPROPRIATE SAFEGUARDS, TESTING, AND MONITORING ARE IN PLACE.
2. Eligibility. You must be at least the age of majority in your jurisdiction (e.g., 18 years old in the United States) or 18 years old, whichever is higher, to use the Service. By agreeing to these Terms, you represent and warrant to us that: (a) you are at least 18 years old or the age of majority in your jurisdiction, whichever is higher; (b) you have not previously been suspended or removed from the Service; and (c) your registration and use of the Service is in compliance with all applicable laws in your region.
3. Account Registration and Access. To access most features of the Service, you must register for an account. When you register for an account, you may be required to provide us with information about yourself, such as your name, email address, or other contact information. You agree that the information you provide to us is accurate, complete, and not misleading, and that you will keep it accurate and up to date at all times. When you register, you will be asked to create a password. You are solely responsible for maintaining the confidentiality of your account and password, and you accept responsibility for all activities that occur under your account. If you believe that your account is no longer secure, you must immediately notify us at hi@cursor.com.
4. Payment Terms
4.1. Paid Services. Certain features of the Service may require you to pay fees. Before you pay any fees, you will have an opportunity to review and accept the fees that you will be charged. Unless otherwise specifically provided for in these Terms, all fees are in U.S. Dollars and are non-refundable, except as required by law. The pricing and payment terms in this Section 4 are subject to any pricing and payment terms set forth in an Order Form.
4.2. Pricing. Anysphere reserves the right to determine pricing for the Service. Anysphere will make reasonable efforts to keep pricing information published on the Service up to date. We encourage you to check our pricing page periodically for current pricing information. Anysphere may change the fees for any feature of the Service, including additional fees or charges, if Anysphere gives you advance notice of changes before they apply through the Service user interface, a pop-up notice, email, or through other reasonable means. Your continued use of the Service after the price change becomes effective constitutes your agreement to pay the changed amount. You will be responsible for all taxes associated with the Service, other than taxes based on Anysphere’s net income. Anysphere, at its sole discretion, may make promotional offers with different features and different pricing to any of Anysphere’s customers. These promotional offers, unless made to you, will not apply to your offer or these Terms.
4.3. Payment Processing. To facilitate payment for the Service via bank account, credit card, or debit card, we use Stripe, Inc. and its affiliates (“Stripe”), a third-party payment processor. These payment processing services are provided by Stripe and are subject to the Stripe terms and conditions and other policies available at https://stripe.com/legal and Stripe’s Global Privacy Policy available at: https://stripe.com/privacy (collectively, the "Stripe Agreements"). By agreeing to these Terms, users that use the payment functions of the Service also agree to be bound by the Stripe Agreements, as the same may be modified by Stripe from time to time. You hereby authorize Stripe to store and continue billing your specified payment method even after such payment method has expired, to avoid interruptions in payment for your use of the Service. Please contact Stripe for more information. Anysphere assumes no liability or responsibility for any payments you make through the Service.
4.4. Subscription Service. The Service may include certain subscription-based plans with automatically recurring payments for periodic charges (“Subscription Service”). The “Subscription Billing Date” is the date when you purchase your first subscription to the Service. The Subscription Service will begin on the Subscription Billing Date and continue for the subscription period that you select on your account (such period, the “Initial Subscription Period”), and will automatically renew for successive periods of the same duration as the Initial Subscription Period (the Initial Subscription Period and each such renewal period, each a “Subscription Period”) unless you cancel the Subscription Service or we terminate it. If you activate a Subscription Service, then you authorize Anysphere or its third-party payment processors to periodically charge, on a going-forward basis and until cancellation of the Subscription Service, all accrued sums on or before the payment due date. Information on the recurring fee charged by Anysphere for access to the Subscription Service during each Subscription Period (“Subscription Fee”), is available on our Pricing Page, or otherwise described in the Service. Your account will be charged automatically on the Subscription Billing Date and thereafter on the renewal date of your Subscription Service for all applicable fees and taxes for the next Subscription Period. You must cancel your Subscription Service at least 24 hours before it renews in order to avoid billing of the next periodic Subscription Fee to your account. Anysphere or its third-party payment processor will bill the periodic Subscription Fee to the payment method associated with your account or that you otherwise provide to us. You may cancel the Subscription Service by using the cancellation functionality made available in your billing menu or by contacting us at hi@cursor.com. YOUR CANCELLATION MUST BE RECEIVED BEFORE THE RENEWAL DATE IN ORDER TO AVOID CHARGE FOR THE NEXT SUBSCRIPTION PERIOD.
4.5. Add-On and Usage-Based Features. You may purchase additional products, services or features that are not individually essential for the functioning of the Service, but that Anysphere makes available to its users for enhanced capabilities on a supplemental basis, including usage-based pricing features that are described in the Service ("Add-Ons"). Add-Ons are deemed part of the Service and governed by these Terms. Fees for Add-Ons include our model-based pricing features, available here, or as otherwise described in the Service.
4.6. Delinquent Accounts. Anysphere may suspend or terminate access to the Service, including fee-based portions of the Service, for any account for which any amount is due but unpaid. In addition to the amount due for the Service, a delinquent account will be charged with fees or charges that are incidental to any chargeback or collection of any unpaid amount, including collection fees. If your payment method is no longer valid at the time a renewal Subscription Fee is due, then Anysphere reserves the right to delete your account and any information associated with your account without any liability to you.
5. Ownership and Licenses
5.1. Service. Anysphere and its licensors shall own and retain all right, title and interest in and to the Service, all improvements, enhancements or modifications thereto, and all intellectual property rights associated with the foregoing. There are no implied licenses in these Terms and Anysphere reserves all rights to the Service not granted in these Terms.
5.2. Feedback. We appreciate the thoughts and comments from our users. If you choose to provide input and suggestions regarding existing functionalities, problems with or proposed modifications or improvements to the Service (“Feedback”), then you grant Anysphere the right to exploit the Feedback without restriction or compensation to you.
5.3. Content. You retain all of your right, title, and interest that you have in Inputs, and Anysphere hereby assigns to you all of our right, title, and interest if any in and to any Suggestions.
5.4. Usage Data. Anysphere may: (i) collect, analyze, and otherwise process Usage Data internally for its business purposes, including for security and analytics, to enhance the Service, and for other development and corrective purposes; and (ii) disclose Usage Data to third parties only in an aggregated and/or de-identified form and in a manner that does not identify you. “Usage Data” means technical logs, data, and learnings about Customer’s use of and interactions with the Service, but excludes Content.
6. Third-Party Services. The Service may include or incorporate optional third-party services, including without limitation extensions and plug-ins that you may install yourself (“Third-Party Services”). Anysphere will clearly indicate such content or features as Third-Party Services via prominent notices or descriptions in the Service. If you elect, in your sole discretion, to access or use a Third-Party Service, your access and use of the Third-Party Service is subject to the terms provided by that Third-Party Service, and you remain responsible for complying with those terms. Anysphere does not make any representations or warranties with respect to Third-Party Services.
7. Communications. We may send you emails concerning our products and services, as well as those of third parties. You may opt out of promotional emails by using any unsubscribe or similar functionality or instructions in the promotional email.
8. Modification of Terms. We may, from time to time, change these Terms. Please check these Terms periodically for changes. If we make any material modifications, we will notify you by updating the date at the top of these Terms and by maintaining a current version of these Terms on this page. All modifications will be effective when they are posted, and your continued accessing or use of the Service will serve as confirmation of your acceptance of those modifications. If you do not agree to the modified Terms, then you must discontinue your use of the Service.
9. Termination. You may stop accessing the Services at any time. We reserve the right to modify, suspend, or discontinue the Services or your access to the Services, in whole or in part, at any time without notice to you. Although we will strive to provide you with reasonable advance notice if we stop offering a Service, there may be urgent situations, such as preventing abuse or addressing security issues or responding to legal requirements, where providing advance notice is not feasible. We will not be liable for any change to or any suspension or discontinuation of the Services or your access to them. If you have a Subscription Service, we may terminate the Subscription Service at any time for any other reason. If we exercise this right, we will refund you on a pro rata basis the fees you paid for the remaining portion of your Subscription Service after termination, provided that if we terminate your access to the Service due to a violation of these Terms, you will not be entitled to any refund. We also may terminate your account if it has been inactive for over a year and you do not have a paid account. If we do, we will provide you with advance notice. Upon termination of these Terms, a Subscription Service, or your access to the Service, we may at our option delete any Content or other data associated with your account. Sections 1.5, 4 (with respect to fees outstanding as of such expiration or termination), 5, and 13-17 will survive any expiration or termination of our Terms or a Subscription Service. If you believe we have suspended or terminated your account in error, you can file an appeal with us by contacting hi@cursor.com.
10. Modification of the Service. Anysphere may modify or discontinue all or any portion of the Service at any time (including by limiting or discontinuing certain features of the Service), temporarily or permanently, without notice to you. Anysphere will have no liability for any change to the Service, including any paid-for functionalities of the Service, or any suspension or termination of your access to or use of the Service. You should retain copies of any Content as needed so that you have access in the event the Service is modified and you lose access to such Content.
11. Copyright complaints. If you believe that your intellectual property rights have been infringed, please send notice to legal@cursor.com. We may delete or disable content that we believe violates these Terms or is alleged to be infringing and will terminate accounts of repeat infringers where appropriate. Written claims concerning copyright infringement must include the following information:
A physical or electronic signature of the person authorized to act on behalf of the owner of the copyright interest.
A description of the copyrighted work that you claim has been infringed upon.
A description of where the allegedly infringing material is located in the Service so we can find it.
Your address, telephone number, and e-mail address.
A statement by you that you have a good-faith belief that the disputed use is not authorized by the copyright owner, its agent, or the law.
A statement by you that the above information in your notice is accurate and, under penalty of perjury, that you are the copyright owner or authorized to act on the copyright owner’s behalf.
12. Privacy. Please read the Anysphere Privacy Policy (“Privacy Policy”) carefully for information relating to our collection, use, storage, and disclosure of your personal data.
13. Indemnity. To the fullest extent permitted by law, you are responsible for your use of the Service, and you will defend and indemnify Anysphere, its affiliates and each of their respective shareholders, directors, managers, members, officers, employees, consultants, and agents (together, the “Anysphere Entities”) from and against any and all liabilities, claims, damages, expenses (including reasonable attorneys’ fees), and other losses arising out of or relating to: (1) your unauthorized use of, or misuse of, the Service; (2) your violation of any portion of these Terms, any representation, warranty, or agreement referenced in these Terms, or any applicable law or regulation; and (3) any claim that your Input violates any third-party intellectual property, publicity, confidentiality, privacy, or other rights. We reserve the right, at our own expense, to assume the exclusive defense and control of any matter otherwise subject to indemnification by you (without limiting your indemnification obligations with respect to that matter), and in that case, you agree to cooperate with our defense of those claims.
14. DISCLAIMER OF WARRANTIES. THE SERVICE AND SUGGESTIONS ARE PROVIDED “AS IS” AND ON AN “AS AVAILABLE” BASIS. ANYSPHERE DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, RELATING TO THE SERVICE AND SUGGESTIONS, INCLUDING: (a) ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, QUIET ENJOYMENT, OR NON-INFRINGEMENT; AND (b) ANY WARRANTY ARISING OUT OF COURSE OF DEALING, USAGE, OR TRADE. ANYSPHERE DOES NOT WARRANT THAT THE SERVICE OR SUGGESTIONS WILL BE UNINTERRUPTED, SECURE, OR FREE OF ERRORS, VIRUSES, OR OTHER HARMFUL COMPONENTS, AND ANYSPHERE DOES NOT WARRANT THAT ANY OF THOSE ISSUES WILL BE CORRECTED. YOU AGREE THAT ANY USE OF SUGGESTIONS FROM OUR SERVICE IS AT YOUR SOLE RISK AND YOU WILL NOT RELY ON ANY SUGGESTION AS A SOURCE OF TRUTH. THE LAWS OF SOME JURISDICTIONS DO NOT ALLOW THE DISCLAIMER OF IMPLIED WARRANTIES, SO SOME OR ALL OF THESE DISCLAIMERS MAY NOT APPLY TO YOU.
15. LIMITATION OF LIABILITY
15.1. NO INDIRECT DAMAGES. TO THE FULLEST EXTENT PERMITTED BY LAW, IN NO EVENT WILL THE ANYSPHERE ENTITIES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR PUNITIVE DAMAGES (INCLUDING DAMAGES FOR LOSS OF PROFITS, GOODWILL, OR ANY OTHER INTANGIBLE LOSS) ARISING OUT OF OR RELATING TO THESE TERMS, THE SERVICE, OR CONTENT, WHETHER BASED ON WARRANTY, CONTRACT, TORT (INCLUDING NEGLIGENCE), STATUTE, OR ANY OTHER LEGAL THEORY, AND WHETHER OR NOT ANY ANYSPHERE ENTITY HAS BEEN INFORMED OF THE POSSIBILITY OF DAMAGE.
15.2. LIABILITY CAP. TO THE FULLEST EXTENT PERMITTED BY LAW, THE AGGREGATE LIABILITY OF THE ANYSPHERE ENTITIES TO YOU FOR ALL CLAIMS, DAMAGES AND LOSSES ARISING OUT OF OR RELATING TO THESE TERMS, THE SERVICE, AND CONTENT, WHETHER IN CONTRACT, TORT, OR OTHERWISE, IS LIMITED TO THE GREATER OF: (A) THE AMOUNT YOU HAVE PAID TO ANYSPHERE FOR ACCESS TO AND USE OF THE SERVICE IN THE SIX (6) MONTHS PRIOR TO THE EVENT OR CIRCUMSTANCE GIVING RISE TO THE CLAIM OR, IF GREATER, (B) $100. THE FOREGOING LIMITATIONS ARE ESSENTIAL TO THESE TERMS, AND WE WOULD NOT OFFER THE SERVICE TO YOU UNDER THESE TERMS WITHOUT THESE LIMITATIONS. THE LIMITATIONS IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY FAILS OF ITS ESSENTIAL PURPOSE.
16. DISPUTE RESOLUTION
PLEASE READ THIS SECTION CAREFULLY AS IT AFFECTS YOUR RIGHTS.
16.1. Agreement to Arbitrate. This Dispute Resolution by Binding Arbitration section is referred to in these Terms as the “Arbitration Agreement.” You agree that any and all disputes or claims that have arisen or may arise between you and Anysphere, whether arising out of or relating to these Terms (including any alleged breach thereof), the Service, any advertising, or any aspect of the relationship or transactions between us, will be resolved exclusively through final and binding arbitration, rather than a court, in accordance with the terms of this Arbitration Agreement, except that you may assert individual claims in small claims court, if your claims qualify. Further, this Arbitration Agreement does not preclude you from bringing issues to the attention of federal, state, or local agencies, and such agencies can, if the law allows, seek relief against us on your behalf. You agree that, by entering into these Terms, you and Anysphere are each waiving the right to a trial by jury or to participate in a class action. Your rights will be determined by a neutral arbitrator, not a judge or jury. The Federal Arbitration Act governs the interpretation and enforcement of this Arbitration Agreement. You may opt out of arbitration within 30 days of account creation or of any updates to these arbitration terms within 30 days after the update has taken effect, by sending an email to legal@cursor.com from the email address used to create your account, and providing your first and last name and a clear statement of intent that you intend to exercise your right to opt out of mandatory arbitration.
16.2. Prohibition of Class and Representative Actions and Non-Individualized Relief. YOU AND ANYSPHERE AGREE THAT EACH OF US MAY BRING CLAIMS AGAINST THE OTHER ONLY ON AN INDIVIDUAL BASIS AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE ACTION OR PROCEEDING. UNLESS BOTH YOU AND ANYSPHERE AGREE OTHERWISE, THE ARBITRATOR MAY NOT CONSOLIDATE OR JOIN MORE THAN ONE PERSON’S OR PARTY’S CLAIMS AND MAY NOT OTHERWISE PRESIDE OVER ANY FORM OF A CONSOLIDATED, REPRESENTATIVE, OR CLASS PROCEEDING. ALSO, THE ARBITRATOR MAY AWARD RELIEF (INCLUDING MONETARY, INJUNCTIVE, AND DECLARATORY RELIEF) ONLY IN FAVOR OF THE INDIVIDUAL PARTY SEEKING RELIEF AND ONLY TO THE EXTENT NECESSARY TO PROVIDE RELIEF NECESSITATED BY THAT PARTY’S INDIVIDUAL CLAIM(S), EXCEPT THAT YOU MAY PURSUE A CLAIM FOR AND THE ARBITRATOR MAY AWARD PUBLIC INJUNCTIVE RELIEF UNDER APPLICABLE LAW TO THE EXTENT REQUIRED FOR THE ENFORCEABILITY OF THIS PROVISION.
16.3. Pre-Arbitration Dispute Resolution. Anysphere is always interested in resolving disputes amicably and efficiently, and most customer concerns can be resolved quickly and to the customer’s satisfaction by emailing legal@cursor.com. If such efforts prove unsuccessful, a party who intends to seek arbitration must first send to the other, by certified mail, a written Notice of Dispute (“Notice”) to Anysphere, Inc., 2261 Market Street STE 86466, San Francisco, CA 94114, with an electronic copy additionally sent to legal@cursor.com. The Notice must (i) describe the nature and basis of the claim or dispute and (ii) set forth the specific relief sought. If Anysphere and you do not resolve the claim within sixty (60) calendar days after the Notice is received, you or Anysphere may commence an arbitration proceeding. During the arbitration, the amount of any settlement offer made by Anysphere or you will not be disclosed to the arbitrator until after the arbitrator determines the amount, if any, to which you or Anysphere is entitled.
16.4. Arbitration Procedures. Arbitration will be conducted by a neutral arbitrator in accordance with the American Arbitration Association’s (“AAA”) rules and procedures, including the AAA’s Consumer Arbitration Rules (collectively, the “AAA Rules”), as modified by this Arbitration Agreement. For information on the AAA, please visit its website, https://www.adr.org. Information about the AAA Rules and fees for consumer disputes can be found at the AAA’s consumer arbitration page, https://www.adr.org/consumer. If there is any inconsistency between any term of the AAA Rules and any term of this Arbitration Agreement, the applicable terms of this Arbitration Agreement will control unless the arbitrator determines that the application of the inconsistent Arbitration Agreement terms would not result in a fundamentally fair arbitration. The arbitrator must also follow the provisions of these Terms as a court would. All issues are for the arbitrator to decide, including issues relating to the scope, enforceability, and arbitrability of this Arbitration Agreement. Although arbitration proceedings are usually simpler and more streamlined than trials and other judicial proceedings, the arbitrator can award the same damages and relief on an individual basis that a court can award to an individual under these Terms and applicable law. Decisions by the arbitrator are enforceable in court and may be overturned by a court only for very limited reasons. Unless Anysphere and you agree otherwise, any arbitration hearings will take place in a reasonably convenient location for both parties with due consideration of their ability to travel and other pertinent circumstances. If the parties are unable to agree on a location, the determination will be made by AAA. If your claim is for $10,000 or less, Anysphere agrees that you may choose whether the arbitration will be conducted solely on the basis of documents submitted to the arbitrator, through a telephonic hearing, or by an in-person hearing as established by the AAA Rules. If your claim exceeds $10,000, the right to a hearing will be determined by the AAA Rules. Regardless of the manner in which the arbitration is conducted, the arbitrator will issue a reasoned written decision sufficient to explain the essential findings and conclusions on which the award is based.
16.5. Costs of Arbitration. Payment of all filing, administration, and arbitrator fees (collectively, the “Arbitration Fees”) will be governed by the AAA Rules, unless otherwise provided in this Arbitration Agreement. To the extent any Arbitration Fees are not specifically allocated to either Anysphere or you under the AAA Rules, Anysphere and you shall split them equally; provided that if you are able to demonstrate to the arbitrator that you are economically unable to pay your portion of such Arbitration Fees or if the arbitrator otherwise determines for any reason that you should not be required to pay your portion of any Arbitration Fees, Anysphere will pay your portion of such fees. In addition, if you demonstrate to the arbitrator that the costs of arbitration will be prohibitive as compared to the costs of litigation, Anysphere will pay as much of the Arbitration Fees as the arbitrator deems necessary to prevent the arbitration from being cost-prohibitive. Any payment of attorneys’ fees will be governed by the AAA Rules.
16.6. Confidentiality. All aspects of the arbitration proceeding, and any ruling, decision, or award by the arbitrator, will be strictly confidential for the benefit of all parties.
16.7. Severability. If a court or the arbitrator decides that any term or provision of this Arbitration Agreement (other than the subsection above titled “Prohibition of Class and Representative Actions and Non-Individualized Relief”) is invalid or unenforceable, the parties agree to replace such term or provision with a term or provision that is valid and enforceable and that comes closest to expressing the intention of the invalid or unenforceable term or provision, and this Arbitration Agreement will be enforceable as so modified. If a court or the arbitrator decides that any of the provisions of the subsection above titled “Prohibition of Class and Representative Actions and Non-Individualized Relief” are invalid or unenforceable, then the entirety of this Arbitration Agreement will be null and void, unless such provisions are deemed to be invalid or unenforceable solely with respect to claims for public injunctive relief. The remainder of these Terms will continue to apply.
16.8. Future Changes to Arbitration Agreement. Notwithstanding any provision in these Terms to the contrary, Anysphere agrees that if it makes any future change to this Arbitration Agreement (other than a change to the Notice Address) while you are a user of the Service, you may reject any such change by sending Anysphere written notice within thirty (30) calendar days of the change to the Notice Address provided above. By rejecting any future change, you are agreeing that you will arbitrate any dispute between us in accordance with the language of this Arbitration Agreement as of the date you first accepted these Terms (or accepted any subsequent changes to these Terms).
17. Miscellaneous
17.1. General. These Terms, including the Privacy Policy, and any other agreements expressly incorporated by reference into these Terms, are the entire and exclusive understanding and agreement between you and Anysphere regarding your use of the Service. You may not assign or transfer these Terms or your rights under these Terms, in whole or in part, by operation of law or otherwise, without our prior written consent. We may assign these Terms and all rights granted under these Terms, including with respect to your Content, at any time without notice or consent. The failure to require performance of any provision will not affect our right to require performance at any other time after that, nor will a waiver by us of any breach or default of these Terms, or any provision of these Terms, be a waiver of any subsequent breach or default or a waiver of the provision itself. If any part of these Terms is held to be invalid or unenforceable, then the unenforceable part will be given effect to the greatest extent possible, and the remaining parts will remain in full force and effect.
17.2. Governing Law. California law will govern these Terms except for its conflicts of laws principles. Except as provided in the Dispute Resolution section above, all claims arising out of or relating to these Terms will be brought exclusively in the federal or state courts of San Francisco, California.
17.3. Consent to Electronic Communications. By using the Service, you consent to receiving certain electronic communications from us as further described in our Privacy Policy. Please read our Privacy Policy to learn more about our electronic communications practices. You agree that any notices, agreements, disclosures, or other communications that we send to you electronically will satisfy any legal communication requirements, including that those communications be in writing.
17.4. Contact Information. You may contact us by sending correspondence to Anysphere, Inc., 2261 Market Street STE 86466, San Francisco, CA 94114, or by emailing us at hi@cursor.com.
17.5. No Support. We are under no obligation to provide support for the Service. In instances where we may offer support, the support will be subject to published policies.
17.6. Export and Trade Controls. You must comply with all applicable trade laws, including sanctions and export control laws. The Service may not be used in or for the benefit of, or exported or re-exported to (a) any U.S. embargoed country or territory or (b) any individual or entity with whom dealings are prohibited or restricted under applicable trade laws. Our Service may not be used for any end use prohibited by applicable trade laws, and your Input may not include material or information that requires a government license for release or export.
+12
View File
@@ -0,0 +1,12 @@
Copyright Christopher Cooper
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.
+46
View File
@@ -0,0 +1,46 @@
# Maintainer: Christopher Cooper <christopher@cg505.com>
pkgname=cursor-cli
# extracted from https://cursor.com/install (managed by 'update-pkgver.sh')
_upstream_ver='2026.01.02-80e4d9b'
# Baseline pkgver; update using './update-pkgver.sh'
pkgver=2026.01.02.1.80e4d9b
pkgrel=1
epoch=1
pkgdesc="Cursor Agent CLI - AI-powered code assistant"
arch=('x86_64' 'aarch64')
url="https://cursor.com"
license=('LicenseRef-Cursor')
depends=('gcc-libs' 'bash' 'glibc' 'nodejs' 'ripgrep')
install=cursor-cli.install
source=('Cursor-TOS')
source_x86_64=("cursor-cli-${_upstream_ver}-x86_64.tar.gz::https://downloads.cursor.com/lab/${_upstream_ver}/linux/x64/agent-cli-package.tar.gz")
source_aarch64=("cursor-cli-${_upstream_ver}-aarch64.tar.gz::https://downloads.cursor.com/lab/${_upstream_ver}/linux/arm64/agent-cli-package.tar.gz")
b2sums=('7079c023e03ea4d78b067ed0f22b5cc1982c306721b2ea6be3c7f73bbbe0e8f05b148fd6571902b838464ee80a787ef7be73135c622f0a4fdb16c38429ced8d6')
b2sums_x86_64=('d33b00dbb289220bbc3263d0f00b5479e868f6e592992134d2fd23644a8688141b5f6b77a73c18ee5be18e0cbdeb2be6cfd6df7c23bc76cb078c0258debca681')
b2sums_aarch64=('7cf66db8b813033ea856ad24ec4e038b2874799f250677e5e3cfc3227c9d867b93277d60b778a5f808eb4796c745d06756344a9279ad195a5a6333091e16654e')
package() {
# Create necessary directories
install -dm755 "${pkgdir}/opt/cursor-agent"
install -dm755 "${pkgdir}/usr/bin"
# Copy all files from the extracted package
cp -r "${srcdir}"/dist-package/* "${pkgdir}/opt/cursor-agent/"
# Replace node and rg with system versions
ln -sf "/usr/bin/node" "${pkgdir}/opt/cursor-agent/node"
ln -sf "/usr/bin/rg" "${pkgdir}/opt/cursor-agent/rg"
# Patch cursor-agent script to block auto-updates
sed -i '/^NODE_BIN=/a\
# Block cursor-agent auto-updates\
mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/cursor-agent/versions"\
chmod -x "${XDG_DATA_HOME:-$HOME/.local/share}/cursor-agent/versions"' "${pkgdir}/opt/cursor-agent/cursor-agent"
# Create symlink in /usr/bin
ln -s "/opt/cursor-agent/cursor-agent" "${pkgdir}/usr/bin/cursor-agent"
# Install license
# This is downloaded from https://cursor.com/terms-of-service
install -Dm644 Cursor-TOS "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
@@ -0,0 +1,12 @@
post_upgrade() {
cat << 'EOF'
==> The AUR package will now block cursor-agent automatic updates.
Clean up old auto-update files from previous installations:
rm ~/.local/bin/cursor-agent
chmod +x ~/.local/share/cursor-agent/versions/
rm -r ~/.local/share/cursor-agent/versions/
EOF
}
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail
PKGBUILD_PATH="${1:-PKGBUILD}"
[[ ! -f "${PKGBUILD_PATH}" ]] && { echo "Error: PKGBUILD file not found at '${PKGBUILD_PATH}'" >&2; exit 1; }
CURRENT_PKGVER="$(sed -nE "s/^pkgver=['\"]?([^'\"#]+).*/\1/p" "${PKGBUILD_PATH}" | head -n1)"
UPSTREAM_VER_NEW="$(curl -fsSL "https://cursor.com/install" | grep -Eo 'downloads\.cursor\.com/lab/([0-9]{4}\.[0-9]{2}\.[0-9]{2}-[A-Za-z0-9]+)' | head -n1 | sed -E 's@.*lab/([^/]+).*@\1@')"
[[ -z "${UPSTREAM_VER_NEW}" || -z "${CURRENT_PKGVER}" ]] && { echo "Error: Could not obtain upstream version or parse pkgver from '${PKGBUILD_PATH}'" >&2; exit 1; }
# Parse upstream version: YYYY.MM.DD-<id>
[[ "${UPSTREAM_VER_NEW}" =~ ^([0-9]{4}\.[0-9]{2}\.[0-9]{2})[.-](.+)$ ]] || { echo "Error: upstream version '${UPSTREAM_VER_NEW}' does not start with YYYY.MM.DD" >&2; exit 1; }
release_date_dotted="${BASH_REMATCH[1]}"
rest="${BASH_REMATCH[2]}"
new_hash="${rest##*.}"
new_hash="${new_hash//-/.}"
# Expect current pkgver in the form: YYYY.MM.DD.DATE_VER.HASH
[[ "${CURRENT_PKGVER}" =~ ^([0-9]{4}\.[0-9]{2}\.[0-9]{2})\.([0-9]+)\.([A-Za-z0-9\.]+)$ ]] || { echo "Error: current pkgver='${CURRENT_PKGVER}' invalid; expected YYYY.MM.DD.DATE_VER.HASH" >&2; exit 1; }
prev_date="${BASH_REMATCH[1]}"
prev_date_ver="${BASH_REMATCH[2]}"
prev_hash="${BASH_REMATCH[3]}"
if [[ "${release_date_dotted}" == "${prev_date}" ]]; then
[[ "${new_hash}" != "${prev_hash}" ]] && new_date_ver="$((prev_date_ver + 1))" || new_date_ver="${prev_date_ver}"
else
new_date_ver="1"
fi
NEW_PKGVER="${release_date_dotted}.${new_date_ver}.${new_hash}"
sed -i -E "s/^_upstream_ver=.*/_upstream_ver='${UPSTREAM_VER_NEW}'/" "${PKGBUILD_PATH}"
sed -i -E "s/^pkgver=.*/pkgver=${NEW_PKGVER}/" "${PKGBUILD_PATH}"
[[ "${NEW_PKGVER}" != "${CURRENT_PKGVER}" ]] && sed -i -E "s/^pkgrel=.*/pkgrel=1/" "${PKGBUILD_PATH}"
echo "${NEW_PKGVER}"
+18
View File
@@ -0,0 +1,18 @@
pkgbase = dropbox-cli
pkgdesc = Command line interface for Dropbox
pkgver = 2024.04.17
pkgrel = 2
url = https://www.dropbox.com
arch = any
license = GPL-3.0-or-later
makedepends = gdk-pixbuf2
depends = dropbox
depends = python-gobject
optdepends = gtk3: Dropbox update GUI
optdepends = python-gpgme: verify binary signature
source = https://linux.dropbox.com/packages/nautilus-dropbox-2024.04.17.tar.bz2
source = dropboxd-fallback.patch
sha256sums = a6a098cf16aa4747f40816ac793d59e37e8ae3b7080d0b30611d6c2b8663f2c1
sha256sums = 711ed63c6dfccfd05c6e9abaa291be9ac3c3909e84f788f568cb44dee2d48229
pkgname = dropbox-cli
+7
View File
@@ -0,0 +1,7 @@
dropbox-cli-*.pkg.tar.zst
dropbox-cli-*.pkg.tar.xz
dropbox-cli-*.py
dropbox-cli-*.log
PKGBUILD-namcap.log
pkg/
src/
+39
View File
@@ -0,0 +1,39 @@
# Maintainer: Muflone http://www.muflone.com/contacts/english/
# Contributor: Fredy García <frealgagu at gmail dot com>
# Contributor: Joel Teichroeb <joel@teichroeb.net>
# Contributor: Matthias Maennich < arch .at. maennich.net >
# Contributor: bruce < b_a_g99 .at. hotmail.com >
# Contributor: carstene1ns <arch carsten-teibes de>
pkgname=dropbox-cli
pkgver=2024.04.17
pkgrel=2
pkgdesc="Command line interface for Dropbox"
arch=("any")
url="https://www.dropbox.com"
license=("GPL-3.0-or-later")
makedepends=("gdk-pixbuf2")
depends=("dropbox" "python-gobject")
optdepends=("gtk3: Dropbox update GUI"
"python-gpgme: verify binary signature")
source=("https://linux.dropbox.com/packages/nautilus-dropbox-${pkgver}.tar.bz2"
"dropboxd-fallback.patch")
sha256sums=('a6a098cf16aa4747f40816ac793d59e37e8ae3b7080d0b30611d6c2b8663f2c1'
'711ed63c6dfccfd05c6e9abaa291be9ac3c3909e84f788f568cb44dee2d48229')
prepare() {
cd "nautilus-dropbox-${pkgver}"
# Patch to point to /opt/dropbox/dropboxd in case of local user does not exist
patch -Np1 -i "${srcdir}/dropboxd-fallback.patch"
}
build() {
cd "nautilus-dropbox-${pkgver}"
python3 build_dropbox.py "${pkgver}" "/usr/share/applications" < "dropbox.in" > "${pkgname}"
}
package() {
cd "nautilus-dropbox-${pkgver}"
install -m 755 -D "${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
}
@@ -0,0 +1,17 @@
diff --git a/dropbox.in b/dropbox.in
index 36a8604..2748194 100644
--- a/dropbox.in
+++ b/dropbox.in
@@ -74,6 +74,12 @@ DROPBOX_DIST_PATH = "%s/.dropbox-dist" % PARENT_DIR
DROPBOXD_PATH = os.path.join(DROPBOX_DIST_PATH, "dropboxd")
DESKTOP_FILE = "/usr/share/applications/dropbox.desktop"
+# DROPBOX_DIST_PATH and DROPBOXD_PATH are reassigned to /opt/dropbox and /opt/dropbox/dropboxd if path does not exist
+DROPBOX_INSTALL_PATH = "/opt/dropbox"
+if not os.path.exists(DROPBOXD_PATH) and os.path.exists(os.path.join(DROPBOX_INSTALL_PATH, "dropboxd")):
+ DROPBOX_DIST_PATH = DROPBOX_INSTALL_PATH
+ DROPBOXD_PATH = os.path.join(DROPBOX_DIST_PATH, "dropboxd")
+
enc = locale.getpreferredencoding()
# Available from https://linux.dropbox.com/fedora/rpm-public-key.asc
+42
View File
@@ -0,0 +1,42 @@
pkgbase = dropbox
pkgdesc = A free service that lets you bring your photos, docs, and videos anywhere and share them easily.
pkgver = 238.4.6075
pkgrel = 1
url = https://www.dropbox.com
arch = i686
arch = x86_64
license = custom
makedepends = gendesk
depends = libsm
depends = libxslt
depends = libxmu
depends = libxdamage
depends = libxrender
depends = libxxf86vm
depends = libxcomposite
depends = fontconfig
depends = dbus
optdepends = ufw-extras: ufw rules for dropbox
optdepends = perl-file-mimeinfo: opening dropbox folder on some desktop environments
optdepends = xdg-utils: for "Launch Dropbox Website" and file manager integration
optdepends = libappindicator-gtk3: make tray icons themed under some desktop environments like KDE plasma
options = !strip
source = DropboxGlyph_Blue.svg
source = terms.txt
source = dropbox.service
source = dropbox@.service
validpgpkeys = 1C61A2656FB57B7E4DE0F4C1FC918B335044912E
sha256sums = 9ba76205ec5838db85d822f23cfd7e2112fd2757e8031d8374709f102143c548
sha256sums = 46364021c9d63e228de58584a09eaf5bd47a5d2080586eae98935357faebfc5f
sha256sums = 6c67a9c8c95c08fafafd2f1d828074b13e3347b05d2e4f4bf4e62746115d7477
sha256sums = 98581e65a91ae1f19ed42edcdaaa52e102298b5da0d71b50089393d364474d3d
source_i686 = https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86-205.4.5765.tar.gz
source_i686 = https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86-205.4.5765.tar.gz.asc
sha256sums_i686 = b603528915347e734b56162dabf1ce3dfbfef60bc2546f0e9c9388193b2ae3f1
sha256sums_i686 = SKIP
source_x86_64 = https://edge.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-238.4.6075.tar.gz
source_x86_64 = https://edge.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-238.4.6075.tar.gz.asc
sha256sums_x86_64 = be27898b2cdbcbbeebcbe0d1c3b1896fffff44eebf7b1058ee967e7bd8c03dfc
sha256sums_x86_64 = SKIP
pkgname = dropbox
+5
View File
@@ -0,0 +1,5 @@
[dropbox]
source = "httpheader"
url = "https://www.dropbox.com/download?plat=lnx.x86_64"
header = "Location"
regex = "\\d+\\.4\\.\\d+(?=\\.tar\\.gz)"
@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 235.45 200"><defs><style>.cls-1{fill:#0061ff;}</style></defs><title>DropboxGlyph</title><polygon class="cls-1" points="58.86 0 0 37.5 58.86 75 117.73 37.5 58.86 0"/><polygon class="cls-1" points="176.59 0 117.73 37.5 176.59 75 235.45 37.5 176.59 0"/><polygon class="cls-1" points="0 112.5 58.86 150 117.73 112.5 58.86 75 0 112.5"/><polygon class="cls-1" points="176.59 75 117.73 112.5 176.59 150 235.45 112.5 176.59 75"/><polygon class="cls-1" points="58.86 162.5 117.73 200 176.59 162.5 117.73 125 58.86 162.5"/></svg>

After

Width:  |  Height:  |  Size: 605 B

+67
View File
@@ -0,0 +1,67 @@
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
# Contributor: Chih-Hsuan Yen <yan12125@gmail.com>
# Contributor: Tom < tomgparchaur at gmail dot com >
# Contributor: David Manouchehri <d@32t.ca>
pkgname=dropbox
pkgver=238.4.6075
pkgrel=1
pkgdesc="A free service that lets you bring your photos, docs, and videos anywhere and share them easily."
arch=("i686" "x86_64")
url="https://www.dropbox.com"
license=(custom)
depends=("libsm" "libxslt" "libxmu" "libxdamage" "libxrender" "libxxf86vm" "libxcomposite" "fontconfig" "dbus")
makedepends=("gendesk")
optdepends=(
'ufw-extras: ufw rules for dropbox'
'perl-file-mimeinfo: opening dropbox folder on some desktop environments'
'xdg-utils: for "Launch Dropbox Website" and file manager integration'
'libappindicator-gtk3: make tray icons themed under some desktop environments like KDE plasma'
)
options=('!strip')
# https://www.dropbox.com/scl/fo/0eu2dsn07fy5k0gt5fy74/AABbXqKHbY_mobVJhqgfOXYja/Glyph/Dropbox/SVG/DropboxGlyph_Blue.svg
source=("DropboxGlyph_Blue.svg"
"terms.txt"
"dropbox.service"
"dropbox@.service")
source_x86_64=("https://edge.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-$pkgver.tar.gz"{,.asc})
source_i686=("https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86-205.4.5765.tar.gz"{,.asc})
sha256sums=('9ba76205ec5838db85d822f23cfd7e2112fd2757e8031d8374709f102143c548'
'46364021c9d63e228de58584a09eaf5bd47a5d2080586eae98935357faebfc5f'
'6c67a9c8c95c08fafafd2f1d828074b13e3347b05d2e4f4bf4e62746115d7477'
'98581e65a91ae1f19ed42edcdaaa52e102298b5da0d71b50089393d364474d3d')
sha256sums_i686=('b603528915347e734b56162dabf1ce3dfbfef60bc2546f0e9c9388193b2ae3f1'
'SKIP')
sha256sums_x86_64=('be27898b2cdbcbbeebcbe0d1c3b1896fffff44eebf7b1058ee967e7bd8c03dfc'
'SKIP')
# The PGP key fingerprint should match the one on https://www.dropbox.com/help/desktop-web/linux-commands
validpgpkeys=(
'1C61A2656FB57B7E4DE0F4C1FC918B335044912E' # Dropbox Automatic Signing Key <linux@dropbox.com>
)
prepare() {
gendesk --pkgname="$pkgname" --pkgdesc="$pkgdesc" --categories=Network PKGBUILD
}
package() {
if [ "$CARCH" = "x86_64" ]; then
_source_arch="x86_64"
else
_source_arch="x86"
fi
install -d "$pkgdir"/opt
cp -dr --no-preserve=ownership "$srcdir"/.dropbox-dist/dropbox-lnx.$_source_arch-$pkgver "$pkgdir"/opt/dropbox
chmod 755 "$pkgdir"/opt/dropbox/*.so
install -d "$pkgdir"/usr/bin
ln -s ../../opt/dropbox/dropbox "$pkgdir"/usr/bin/dropbox
install -Dm644 "$srcdir"/dropbox.desktop -t "$pkgdir"/usr/share/applications
install -Dm644 "$srcdir"/DropboxGlyph_Blue.svg "$pkgdir"/usr/share/pixmaps/dropbox.svg
install -Dm644 "$srcdir"/terms.txt -t "$pkgdir"/usr/share/licenses/$pkgname
install -Dm644 "$srcdir"/dropbox.service -t "$pkgdir"/usr/lib/systemd/user
install -Dm644 "$srcdir"/dropbox@.service -t "$pkgdir"/usr/lib/systemd/system
}
+13
View File
@@ -0,0 +1,13 @@
[Unit]
Description=Dropbox
[Service]
Type=simple
ExecStart=/usr/bin/dropbox
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=default.target
+15
View File
@@ -0,0 +1,15 @@
[Unit]
Description=Dropbox
After=local-fs.target network.target
[Service]
Type=simple
ExecStart=/usr/bin/dropbox
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=%I
[Install]
WantedBy=multi-user.target
+150
View File
@@ -0,0 +1,150 @@
Dropbox Terms of Service
Posted: October 29, 2021
Effective: January 14, 2022
You can see your previous Terms here.
Thanks for using Dropbox! Our mission is to create a more enlightened way of working by providing an intuitive, unified platform to keep your content safe and accessible while helping you and those you work with stay coordinated and in sync. These terms of service (“Terms”) cover your use and access to our services, client software and websites ("Services"). If you reside outside of the United States of America, Canada and Mexico (“North America”) your agreement is with Dropbox International Unlimited Company. If you reside in North America your agreement is with Dropbox, Inc. Our Privacy Policy explains how we collect and use your information while our Acceptable Use Policy outlines your responsibilities when using our Services. By using our Services, you’re agreeing to be bound by these Terms, our Privacy Policy, and Acceptable Use Policy.
Your Stuff & Your Permissions
When you use our Services, you provide us with things like your files, content, messages, contacts, and so on (“Your Stuff”). Your Stuff is yours. These Terms don’t give us any rights to Your Stuff except for the limited rights that enable us to offer the Services.
We need your permission to do things like hosting Your Stuff, backing it up, and sharing it when you ask us to. Our Services also provide you with features like commenting, sharing, searching, image thumbnails, document previews, optical character recognition (OCR), easy sorting and organization, and personalization to help reduce busywork. To provide these and other features, Dropbox accesses, stores, and scans Your Stuff. You give us permission to do those things, and this permission extends to our affiliates and trusted third parties we work with.
Your Responsibilities
Your use of our Services must comply with our Acceptable Use Policy. Content in the Services may be protected by others’ intellectual property rights. Please don’t copy, upload, download, or share content unless you have the right to do so.
Dropbox may review your conduct and content for compliance with these Terms and our Acceptable Use Policy. We aren’t responsible for the content people post and share via the Services.
Help us keep Your Stuff protected. Safeguard your password to the Services, and keep your account information current. Don’t share your account credentials or give others access to your account.
You may use our Services only as permitted by applicable law, including export control laws and regulations. Finally, to use our Services, you must be at least 13 if you reside in the United States, and 16 if you reside anywhere else. If the law where you reside requires that you must be older in order for Dropbox to lawfully provide the Services to you without parental consent (including use of your personal data), then you must be that older age.
Software
Some of our Services allow you to download client software (“Software”) which may update automatically. So long as you comply with these Terms, we give you a limited, nonexclusive, nontransferable, revocable license to use the Software, solely to access the Services. To the extent any component of the Software may be offered under an open source license, we’ll make that license available to you and the provisions of that license may expressly override some of these Terms. Unless the following restrictions are prohibited by law, you agree not to reverse engineer or decompile the Services, attempt to do so, or assist anyone in doing so.
Beta Services
We sometimes release products and features that we’re still testing and evaluating (“Beta Services”). Beta Services are labeled “alpha,” “beta,” “preview,” “early access,” or “evaluation” (or with words or phrases with similar meanings) and may not be as reliable as Dropbox’s other services. Beta Services are made available so that we can collect user feedback, and by using our Beta Services, you agree that we may contact you to collect such feedback.
Beta Services are confidential until official launch. If you use any Beta Services, you agree not to disclose any information about those Services to anyone else without our permission.
Additional Features
From time to time, Dropbox will add additional features to enhance the user experience of our storage service at no additional charge. However, these free features may be withdrawn without further notice.
Our Stuff
The Services are protected by copyright, trademark, and other US and foreign laws. These Terms don’t grant you any right, title, or interest in the Services, others’ content in the Services, Dropbox trademarks, logos and other brand features. We welcome feedback, but note that we may use comments or suggestions without any obligation to you.
Copyright
We respect the intellectual property of others and ask that you do too. We respond to notices of alleged copyright infringement if they comply with the law, and such notices should be reported using our Copyright Policy. We reserve the right to delete or disable content alleged to be infringing and terminate accounts of repeat infringers. Our designated agent for notice of alleged copyright infringement on the Services is:
Copyright Agent
Dropbox, Inc.
1800 Owens St
San Francisco, CA 94158
copyright@dropbox.com
Paid Accounts
Billing. You can increase your storage space and add paid features to your account (turning your account into a “Paid Account”). We’ll automatically bill you from the date you convert to a Paid Account and on each periodic renewal until cancellation. If you’re on an annual plan, we’ll send you a notice email reminding you that your plan is about to renew within a reasonable period of time prior to the renewal date. You’re responsible for all applicable taxes, and we’ll charge tax when required to do so. Some countries have mandatory local laws regarding your cancellation rights, and this paragraph doesn’t override these laws.
Cancellation. You may cancel your Dropbox Paid Account at any time. Refunds are only issued if required by law. For example, users living in the European Union have the right to cancel their Paid Account subscriptions within 14 days of signing up for, upgrading to, or renewing a Paid Account by clicking here.
Downgrades. Your Paid Account will remain in effect until it's cancelled or terminated under these Terms. If you’re on a Dropbox Family plan, the Family manager may be able to downgrade your account at any time. If you don’t pay for your Paid Account on time, we reserve the right to suspend it or remove Paid Account features.
Changes. We may change the fees in effect on renewal of your subscription, to reflect factors such as changes to our product offerings, changes to our business, or changes in economic conditions. We’ll give you no less than 30 days’ advance notice of these changes via a message to the email address associated with your account and you’ll have the opportunity to cancel your subscription before the new fee comes into effect.
Dropbox Business Teams
Email address. If you sign up for a Dropbox account with an email address provisioned by your organization, your organization may be able to block your use of Dropbox until you transition to an account on a Dropbox Business or Education team (collectively, “Dropbox Business Team”) or you associate your Dropbox account with a personal email address.
Using Dropbox Business Teams. If you join a Dropbox Business Team, you must use it in compliance with your organization’s terms and policies. Please note that Dropbox Business Team accounts are subject to your organization's control. Your administrators may be able to access, disclose, restrict, or remove information in or from your Dropbox Business Team account. They may also be able to restrict or terminate your access to a Dropbox Business Team account. If you convert an existing Dropbox account into part of a Dropbox Business Team, your administrators may prevent you from later disassociating your account from the Dropbox Business Team.
Termination
You’re free to stop using our Services at any time. We reserve the right to suspend or terminate your access to the Services with notice to you if:
you’re in breach of these Terms,
your use of the Services would cause a real risk of harm or loss to us or other users, or
you don’t have a Paid Account and haven't accessed our Services for 12 consecutive months.
We’ll provide you with reasonable advance notice via the email address associated with your account to remedy the activity that prompted us to contact you and give you the opportunity to export Your Stuff from our Services. If after such notice you fail to take the steps we ask of you, we’ll terminate or suspend your access to the Services.
We won’t provide notice or an opportunity to export Your Stuff before termination or suspension of access to the Services where:
you’re in material breach of these Terms,
doing so would cause us legal liability or compromise our ability to provide the Services to our other users, or
we're prohibited from doing so by law.
Discontinuation of Services
We may decide to discontinue the Services in response to exceptional unforeseen circumstances, events beyond Dropbox’s control (for example a natural disaster, fire, or explosion), or to comply with a legal requirement. If we do so, we’ll give you reasonable prior notice so that you can export Your Stuff from our systems (we will give you no less than 30 days’ notice where possible under the circumstances). If we discontinue the Services in this way before the end of any fixed or minimum term you have paid us for, we’ll refund the portion of the fees you have pre-paid but haven't received Services for.
Services “AS IS”
We strive to provide great Services, but there are certain things that we can't guarantee. TO THE FULLEST EXTENT PERMITTED BY LAW, DROPBOX AND ITS AFFILIATES, SUPPLIERS AND DISTRIBUTORS MAKE NO WARRANTIES, EITHER EXPRESS OR IMPLIED, ABOUT THE SERVICES. THE SERVICES ARE PROVIDED "AS IS." WE ALSO DISCLAIM ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. Some places don’t allow the disclaimers in this paragraph, so they may not apply to you. For example, these disclaimers do not override the legal protections, including statutory warranties, granted to consumers by EU law.
Limitation of Liability
WE DON’T EXCLUDE OR LIMIT OUR LIABILITY TO YOU WHERE IT WOULD BE ILLEGAL TO DO SO—THIS INCLUDES ANY LIABILITY FOR DROPBOX’S OR ITS AFFILIATES’ FRAUD OR FRAUDULENT MISREPRESENTATION IN PROVIDING THE SERVICES. IN COUNTRIES WHERE THE FOLLOWING TYPES OF EXCLUSIONS AREN’T ALLOWED, WE'RE RESPONSIBLE TO YOU ONLY FOR LOSSES AND DAMAGES THAT ARE A REASONABLY FORESEEABLE RESULT OF OUR FAILURE TO USE REASONABLE CARE AND SKILL OR OUR BREACH OF OUR CONTRACT WITH YOU. THIS PARAGRAPH DOESN’T AFFECT CONSUMER RIGHTS THAT CAN'T BE WAIVED OR LIMITED BY ANY CONTRACT OR AGREEMENT. IF YOU ARE AN EU OR UK CONSUMER, THESE TERMS DO NOT EXCLUDE DROPBOX’S LIABILITY FOR LOSSES AND DAMAGES THAT ARE A RESULT OF OUR FAILURE TO USE REASONABLE CARE AND SKILL IN PROVIDING THE SERVICES OR OF OUR BREACH OF OUR CONTRACT WITH YOU, AS LONG AS THOSE LOSSES AND DAMAGES ARE REASONABLY FORESEEABLE.
IN COUNTRIES WHERE EXCLUSIONS OR LIMITATIONS OF LIABILITY ARE ALLOWED, DROPBOX, ITS AFFILIATES, SUPPLIERS OR DISTRIBUTORS WON’T BE LIABLE FOR:
ANY INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES, OR
ANY LOSS OF USE, DATA, BUSINESS, OR PROFITS, REGARDLESS OF LEGAL THEORY.
THESE EXCLUSIONS OR LIMITATIONS WILL APPLY REGARDLESS OF WHETHER OR NOT DROPBOX OR ANY OF ITS AFFILIATES HAS BEEN WARNED OF THE POSSIBILITY OF SUCH DAMAGES.
IF YOU USE THE SERVICES FOR ANY COMMERCIAL, BUSINESS, OR RE-SALE PURPOSE, DROPBOX, ITS AFFILIATES, SUPPLIERS OR DISTRIBUTORS WILL HAVE NO LIABILITY TO YOU FOR ANY LOSS OF PROFIT, LOSS OF BUSINESS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS OPPORTUNITY. DROPBOX AND ITS AFFILIATES AREN’T RESPONSIBLE FOR THE CONDUCT, WHETHER ONLINE OR OFFLINE, OF ANY USER OF THE SERVICES.
OTHER THAN FOR THE TYPES OF LIABILITY WE CANNOT LIMIT BY LAW (AS DESCRIBED IN THIS SECTION), WE LIMIT OUR LIABILITY TO YOU TO THE GREATER OF $20 USD OR 100% OF ANY AMOUNT YOU'VE PAID UNDER YOUR CURRENT SERVICE PLAN WITH DROPBOX. THIS PROVISION DOES NOT APPLY TO EU CONSUMERS WHERE PROHIBITED BY APPLICABLE LAW.
Resolving Disputes
Let’s Try to Sort Things Out First. We want to address your concerns without needing a formal legal case. Before filing a claim against Dropbox, you agree to try to resolve the dispute informally by sending us a written Notice of Dispute at dispute-notice@dropbox.com that includes your name, a detailed description of the dispute, and the relief you seek. We’ll try to resolve the dispute informally by contacting you via email. If a dispute is not resolved within 60 days after submission, you or Dropbox may bring a formal proceeding. If you reside in the EU, the European Commission provides for an online dispute resolution platform, which you can access here: https://ec.europa.eu/consumers/odr.
Judicial Forum for Disputes. You and Dropbox agree that any judicial proceeding to resolve claims relating to these Terms or the Services will be brought in the federal or state courts of San Francisco County, California, subject to the mandatory arbitration provisions below. Both you and Dropbox consent to venue and personal jurisdiction in such courts. If you reside in a country (for example, a member state of the European Union) with laws that give consumers the right to bring disputes in their local courts, this paragraph doesn’t affect those requirements.
IF YOU’RE A U.S. RESIDENT, YOU ALSO AGREE TO THE FOLLOWING MANDATORY ARBITRATION PROVISIONS:
We Both Agree to Arbitrate. You and Dropbox agree to resolve any claims relating to these Terms or the Services through final and binding individual arbitration by a single arbitrator, except as set forth under the “Exceptions to Agreement to Arbitrate” below. This includes disputes arising out of or relating to the interpretation or application of this “Mandatory Arbitration Provisions” section, including its scope, enforceability, revocability, or validity. The arbitrator may award relief only individually and only to the extent necessary to redress your individual claim(s); the arbitrator may not award relief on behalf of others or the general public.
Opt out of Agreement to Arbitrate. You can decline this agreement to arbitrate by clicking here and submitting the opt-out form within 30 days of first registering your account or agreeing to these Terms. However, if you agreed to a previous version of these Terms that allowed you to opt out of arbitration, your previous choice to opt out or not opt out remains binding.
Arbitration Procedures. The American Arbitration Association (AAA) will administer the arbitration under its Consumer Arbitration Rules. The AAA’s rules and filing instructions are available at www.adr.org or by calling 1-800-778-7879. The arbitration will be held in the United States county where you live or work, San Francisco (CA), or any other location we agree to.
Arbitration Fees and Incentives. The AAA rules will govern payment of all arbitration fees. For individual arbitration of non-frivolous claims less than $75,000 for which you timely provided Dropbox with a Notice of Dispute, Dropbox will reimburse arbitration filing fees at the conclusion of the arbitration and will pay other arbitration fees. For all other claims, the costs and fees of arbitration shall be allocated in accordance with the arbitration provider’s rules, including rules regarding frivolous or improper claims. If you receive an arbitration award that is more favorable than any offer we make to resolve the claim, we will pay you $1,000 in addition to the award. Dropbox will not seek its attorneys' fees and costs in arbitration unless the arbitrator determines that your claim is frivolous or brought for an improper purpose.
Exceptions to Agreement to Arbitrate. Either you or Dropbox may assert claims, if they qualify, in small claims court in San Francisco (CA) or any United States county where you live or work. Either party may bring a lawsuit solely for injunctive relief to stop unauthorized use or abuse of the Services, or intellectual property infringement (for example, trademark, trade secret, copyright, or patent rights) without first engaging in arbitration or the informal dispute-resolution process described above. If the agreement to arbitrate is found not to apply to you or your claim, you agree to the exclusive jurisdiction of the state and federal courts in San Francisco County, California to resolve your claim.
NO CLASS OR REPRESENTATIVE ACTIONS. You may only resolve disputes with us on an individual basis, and may not bring a claim as a plaintiff or a class member in a class, consolidated, or representative action. Class arbitrations, class actions, private attorney general actions, and consolidation with other arbitrations aren’t allowed.
Severability. If any part of this “Mandatory Arbitration Provisions” section is found to be illegal or unenforceable, the remainder will remain in effect, except that if a finding of partial illegality or unenforceability would allow class or representative arbitration, this “Mandatory Arbitration Provisions” section will be unenforceable in its entirety. If you are found to have a non-waivable right to bring a particular claim or to request a particular form of relief that the arbitrator lacks authority to redress or award according to this “Mandatory Arbitration Provisions” section, including public injunctive relief, then only that respective claim or request for relief may be brought in court, and you and we agree that litigation of any such claim or request for relief shall be stayed pending the resolution of any individual claim(s) or request(s) for relief in arbitration.
Controlling Law
These Terms will be governed by California law except for its conflicts of laws principles. However, some countries (including those in the European Union) have laws that require agreements to be governed by the local laws of the consumer's country. This paragraph doesn’t override those laws.
Entire Agreement
These Terms constitute the entire agreement between you and Dropbox with respect to the subject matter of these Terms, and supersede and replace any other prior or contemporaneous agreements, or terms and conditions applicable to the subject matter of these Terms. Our past, present, and future affiliates and agents can invoke our rights under this agreement in the event they become involved in a dispute with you. Otherwise, these Terms do not give rights to any third parties.
Waiver, Severability & Assignment
Dropbox’s failure to enforce a provision is not a waiver of its right to do so later. If a provision is found unenforceable, the remaining provisions of the Terms will remain in full effect and an enforceable term will be substituted reflecting our intent as closely as possible. You may not assign any of your rights under these Terms, and any such attempt will be void. Dropbox may assign its rights to any of its affiliates or subsidiaries, or to any successor in interest of any business associated with the Services.
Modifications
We may revise these Terms from time to time to better reflect:
changes to the law,
new regulatory requirements, or
improvements or enhancements made to our Services.
If an update affects your use of the Services or your legal rights as a user of our Services, we’ll notify you prior to the update's effective date by sending an email to the email address associated with your account or via an in-product notification. These updated terms will be effective no less than 30 days from when we notify you.
If you don’t agree to the updates we make, please cancel your account and stop using the Services before the updated Terms become effective. Where applicable, we’ll offer you a prorated refund based on the amounts you have prepaid for Services and your account cancellation date. By continuing to use or access the Services after the updates come into effect, you agree to be bound by the revised Terms.
@@ -0,0 +1,32 @@
pkgbase = github-copilot-cli
pkgdesc = GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal.
pkgver = 0.0.377
pkgrel = 1
url = https://github.com/github/copilot-cli
changelog = changelog.md
arch = x86_64
license = LicenseRef-GitHub
makedepends = npm
makedepends = jq
depends = glibc
depends = gcc-libs
depends = nodejs
depends = glib2
depends = libsecret
provides = copilot
conflicts = github-copilot
conflicts = github-copilot-cli-legacy
replaces = github-copilot
noextract = copilot-0.0.377.tgz
options = !strip
options = emptydirs
options = staticlibs
options = zipman
source = https://registry.npmjs.org/@github/copilot/-/copilot-0.0.377.tgz
source = README-0.0.377.md::https://raw.githubusercontent.com/github/copilot-cli/v0.0.377/README.md
source = LICENSE-0.0.377::https://raw.githubusercontent.com/github/copilot-cli/v0.0.377/LICENSE.md
b2sums = e24b5b08c78e9e16ef5097651d95ed654e8350c5addcae980ee617ace1f4ee0a9ed26181d8d6f9ec54fce8e9b878da086325f4d766928f9dcb96aad8c1ee9943
b2sums = 7fcfacf55bde24056fb58a25e63b33b679d0a8869021e8682c48bbd5b126bbd29d268c3c300cf298a88373cceb528cdcf22d4ac6037514d5cd54b0facc8c553d
b2sums = 4f1ae6117d08e8e0a9b3bb838970059dcfa151b5f8764bb7d62e320b72570fccb7ac209011ba6778b5e9895ee586bdbbb190e5ff97b7b10cd14eee0f80caee35
pkgname = github-copilot-cli
@@ -0,0 +1,6 @@
*
!.nvchecker.toml
!changelog.md
!.gitignore
!PKGBUILD
!.SRCINFO
@@ -0,0 +1,5 @@
[github-copilot-cli]
source = "github"
github = "github/copilot-cli"
use_latest_release = true
prefix = "v"
@@ -0,0 +1,70 @@
# Maintainer: Rafael Dominiquini <rafaeldominiquini at gmail dot com>
pkgname=github-copilot-cli
_pkgexec=copilot
pkgver=0.0.377
pkgrel=1
pkgdesc="GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal."
url="https://github.com/github/copilot-cli"
_urlraw="https://raw.githubusercontent.com/github/copilot-cli/v${pkgver}"
conflicts=("${pkgname%%-cli}" "${pkgname}-legacy")
depends=("glibc" "gcc-libs" "nodejs" "glib2" "libsecret")
replaces=("${pkgname%%-cli}")
makedepends=("npm" "jq")
provides=("${_pkgexec}")
arch=("x86_64")
options=(!strip emptydirs staticlibs zipman)
license=("LicenseRef-GitHub")
source=("https://registry.npmjs.org/@github/copilot/-/copilot-${pkgver}.tgz"
"README-${pkgver}.md::${_urlraw}/README.md"
"LICENSE-${pkgver}::${_urlraw}/LICENSE.md")
noextract=("copilot-${pkgver}.tgz")
changelog="changelog.md"
b2sums=('e24b5b08c78e9e16ef5097651d95ed654e8350c5addcae980ee617ace1f4ee0a9ed26181d8d6f9ec54fce8e9b878da086325f4d766928f9dcb96aad8c1ee9943'
'7fcfacf55bde24056fb58a25e63b33b679d0a8869021e8682c48bbd5b126bbd29d268c3c300cf298a88373cceb528cdcf22d4ac6037514d5cd54b0facc8c553d'
'4f1ae6117d08e8e0a9b3bb838970059dcfa151b5f8764bb7d62e320b72570fccb7ac209011ba6778b5e9895ee586bdbbb190e5ff97b7b10cd14eee0f80caee35')
# Document: https://wiki.archlinux.org/title/Node.js_package_guidelines
package() {
msg2 "Install using Using NPM"
npm install -s -g \
--cache "${srcdir}/npm-cache" \
--prefix "${pkgdir}/usr" \
"${srcdir}/copilot-${pkgver}.tgz"
msg2 "Fix ownership of ALL FILES"
find "${pkgdir}/usr" -type d -exec chmod 755 {} +
chown -R root:root "${pkgdir}"
msg2 "Remove references to PKGDIR"
find "${pkgdir}" -name package.json -print0 | xargs -r -0 sed -i '/_where/d'
msg2 "Fixing 'package.json'"
local tmppackage="$(mktemp)"
local pkgjson="${pkgdir}/usr/lib/node_modules/@github/copilot/package.json"
jq '.|=with_entries(select(.key|test("_.+")|not))' "${pkgjson}" > "${tmppackage}"
mv "${tmppackage}" "${pkgjson}"
chmod 644 "${pkgjson}"
msg2 "More fixes for 'package.json'"
find "${pkgdir}" -type f -name package.json | while read pkgjson; do
local tmppackage="$(mktemp)"
jq 'del(.man)' "${pkgjson}" > "${tmppackage}"
mv "${tmppackage}" "${pkgjson}"
chmod 644 "${pkgjson}"
done
msg2 "Installing README.md"
install -Dm644 "${pkgdir}/usr/lib/node_modules/@github/copilot/README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
msg2 "Installing LICENSE"
install -Dm644 "LICENSE-${pkgver}" "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
}
@@ -0,0 +1,377 @@
## 0.0.370 - 2025-12-18
- Disabled MCP servers are now properly ignored when using --disable-mcp-server
- Shared sessions correctly render nested markdown codeblocks
- Log levels now output all messages of that level and higher severity
- Load CA certificates from system and environment variables
- Improve `/model` error messages to show available and unavailable models
- Model picker uses two-column layout with aligned multipliers and clearer visual indicators
- Add STDIO type as synonymous for Local for MCP servers in CLI configuration UI
- Diff display uses your configured git pager (delta, diff-so-fancy)
- Use platform-specific executable from npm install when available
- Publish SHA256 checksums for CLI executables in releases
- Add --available-tools and --excluded-tools to filter which tools the model can use
- Ensure animated or non-animated banner is displayed based on banner and screen reader preferences
- Fix truncation logic for codex models
## 0.0.369 - 2025-12-11
- Add support for GPT-5.2
## 0.0.368 - 2025-12-10
- PRU usage rates now displayed correctly
- Fix checkmark and x icon rendering
- Add grep tool Codex models
- Numpad keys work in prompts with Kitty keyboard protocol
## 0.0.367 - 2025-12-04
- GPT-5.1-Codex-Max is now available in GitHub Copilot CLI
## 0.0.366 - 2025-12-03
- Add `infer` property to control custom agent tool visibility
- Add CLI executables to GitHub release artifacts
- Add apply_patch toolchain for OpenAI Codex models
## 0.0.365 - 2025-11-25
- Add `--silent` option to suppress stats output for scripting
## 0.0.364 - 2025-11-25
- Add syntax highlighting for diffs
- Fix light theme markdown rendering
## 0.0.363 - 2025-11-24
- Opus 4.5, GPT-4.1 and GPT-5-Mini are now available in GitHub Copilot CLI
- Image data paste now prioritizes pasting contents of image files instead of their file icons.
- Improved timeline rendering of shell tool names
- Add support for GITHUB_ASKPASS environment variable for authentication
- MCP servers work in `--prompt` mode
## 0.0.362 - 2025-11-20
- Fix issues with image drag and drop on Windows
- Shell commands are no longer included in Bash and PowerShell history files
- Paste image data from your clipboard directly into the CLI
- Cleanup and update prompts and tool instructions to be more fluid
## 0.0.360 - 2025-11-18
- Fix file operations timing out while waiting for user permission
## 0.0.359 - 2025-11-17
- Support adding images to context via drag & dropping and pasting paths to image files. Improved how image slugs are rendered in the input box
- Add `/share` command to save session as markdown file or GitHub gist
- Fix a bug where cached tokens were displaying as zero at the end of the session
- Enable `USE_BUILTIN_RIPGREP` environment variable to optionally use ripgrep from PATH
- Fix an issue where sourcing custom agents from the remote repository's default branch led to confusions about whether the local copy of the agent was being used
- Fix custom agents configuration issues
- Improve `Ctrl+C` performance
- Improve tool argument parsing safety
- Distinguish tool names from paths and improve tool success/error icons
- `copilot -p` will no longer interactively prompt for permission requests
- Remove unnecessary whitespace from tool descriptions
## 0.0.358 - 2025-11-14
- Recovery release to fix availability of GPT-5.1, GPT-5.1-Codex, and GPT-5.1-Codex-Mini models
## 0.0.357 - 2025-11-13
- Recovery release to fix an issue with image resizing
## 0.0.356 - 2025-11-13
- GPT-5.1, GPT-5.1-Codex, and GPT-5.1-Codex-Mini are now available in GitHub Copilot CLI
## 0.0.355 - 2025-11-12
- Enabled the CLI agent to read its own `/help` and README to answer questions about its capabilities
- Improved parsing of VS Code-formatted custom agents with the `.agent.md` suffix
- Sanitize tool names to fix issues with special characters
- Bundled `ripgrep` and added `grep` and `glob` tools for more performant searching of codebases
- Fixed malformed tool call handling before it reaches the UI
- Prevent double line wraps in markdown messages
- Fixed a bug where the file selector was used in multi-line input that led to unexpected up/down arrow behavior
- Fixed a bug where remote MCP server configuration in custom agents was not fetched properly
- Added more detail and improved the styling of the `/session` command's output
- Removed the internal `NODE_ENV` variable from the shell tool's environment
- Fixed a memory leak when using the interactive shell tool
- Improved line number formatting in file view output
- Lowered the default shell tool timeout and updated prompt language to not imply that timeout means failure
- Ensured that we query the terminal background color before rendering
- Ensured that the agent won't run `pkill` on its own PID
- Fixed a bug where `copilot` would not quit after an abort signal
- Ensure `!` commands on Windows use PowerShell when available
- Fixed a bug in Windows Terminal where keyboard input was not accepted
## 0.0.354 - 2025-11-03
- Exit with nonzero code when `-p` mode fails due to LLM backend errors (auth failures, quota exhaustion, network issues)
- Support for MCP server tool notifications
- Support for `COPILOT_GITHUB_TOKEN` environment variable for authentication (takes precedence over `GH_TOKEN`)
- Improved shell command safety with better heredoc handling outside of commands
- Diff hunk lines now properly fill the width of the diff box
- MCP servers in GitHub Actions environments automatically use `GITHUB_WORKSPACE` as working directory
- `/delegate` command now works correctly when no local changes exist
- Custom agents with special characters in filenames no longer fail
- Better error messages when using unsupported models with `/model` command
- Alternative model providers now work correctly when using different OpenAI base URLs
## 0.0.353 - 2025-10-28
- Added support for custom agents. Custom agent definitions are pulled from `~/.copilot/agents`, `.github/agents` in your repository, or your organization's `.github` repository. You can explicitly invoke an agent with the `/agent` slash command interactively or `--agent <agent>` noninteractively. Agents are also provided as tools that the model can call during completion of a task
- Added a `/delegate` command to delegate a task asynchronously to Copilot coding agent. Any unstaged changes will be committed to a new branch, a PR will be opened in your GitHub repository, and Copilot will complete work in the background.
## 0.0.352 - 2025-10-27
- Improve handling of MCP tools containing slashes
- Improve error message from `/model <model>` command when using an unsupported model
## 0.0.351 - 2025-10-24
- Improved our path detection heuristic to avoid various annoying, unnecessary permissions requests:
- Running many standard bash/PowerShell commands that are known to be readonly (Fixes part of https://github.com/github/sweagentd/issues/7372)
- Commands like `npm test -- --something` in PowerShell
- Shell redirections like `> some_file.txt` in paths you've already granted write permissions, `> /dev/null`, and `2>&1` (Fixes https://github.com/github/copilot-cli/issues/211)
- Arguments to `gh api` like `gh api /repos/user/repo/ec` (Fixes https://github.com/github/copilot-cli/issues/216)
- Improved prompting for Sonnet 4.5 to reduce the number of intermediate markdown files left in the workspace
- 👀 ...see you at [GitHub Universe](https://githubuniverse.com/)!
## 0.0.350 - 2025-10-23
- To conserve context window space, we've limited the list of tools available to the default GitHub MCP server. In our tests, the model will use the [GitHub CLI, `gh`](https://github.com/cli/cli) (if installed) in lieu of missing MCP tools. We added an `--enable-all-github-mcp-tools` if you wish to turn on all available tools.
Default available tools are: - Code & Repo navigation - get_file_contents - search_code - search_repositories - list_branches - list_commits - get_commit - Issue Management - get_issue - list_issues - get_issue_comments - search_issues - PR Management - pull_request_read - list_pull_requests - search_pull_requests - Workflow Info - list_workflows - list_workflow_runs - get_workflow_run - get_job_logs - get_workflow_run_logs - Misc search - user_search
- Bundled `sharp` dependency into the CLI package -- we're one step closer to implementing https://github.com/github/copilot-cli/issues/16, and this fixes some startup blockers on Windows (fixes https://github.com/github/copilot-cli/issues/309 & https://github.com/github/copilot-cli/issues/287)
- Fixed a bug where input tokens were not tracked properly (Fixes https://github.com/github/copilot-cli/issues/337)
- Fixed a bug where MCP tools with arguments would fail with streaming enabled
- Added additional debug logging that will help us investigate https://github.com/github/copilot-cli/issues/346
## 0.0.349 - 2025-10-22
- The model can now call multiple tools in parallel. Each tool must be confirmed in advance. This behavior can be disabled with the `--disable-parallel-tools-execution` flag
- Added `/quit` as an alias of `/exit` (fixes https://github.com/github/copilot-cli/issues/357)
- Fixed a bug where every streamed output chunk was sent back to the model as part of the conversation (fixes https://github.com/github/copilot-cli/issues/379)
- Ensure that environment variables are expanded before running path permission checks
- Fixed a bug where Ctrl+K deleted to the end of the visual line in the input box rather than the logical line
- Added the temp directory to the paths that the model has access to by default (fixes https://github.com/github/copilot-cli/issues/306)
## 0.0.348 - 2025-10-21
- Copilot's output now streams in token-by-token! This can be disabled with `--stream off`
- Made improvements to the memory footprint of Copilot CLI, especially when dealing with shell commands that produce very large outputs
- Ensured we preserve comments in VSCode config files when using `/terminal-setup` (fixes https://github.com/github/copilot-cli/issues/325)
- Bundled `node-pty` into the CLI package -- we're one step closer to implementing https://github.com/github/copilot-cli/issues/16
- Fixed an issue where local tool calling broke sessions (fixes https://github.com/github/copilot-cli/issues/365, https://github.com/github/copilot-cli/issues/364, https://github.com/github/copilot-cli/issues/366)
- Added our LICENSE.md to our Node package (fixes https://github.com/github/copilot-cli/issues/371)
- Added debug logging to authentication status changes to get to the bottom of https://github.com/github/copilot-cli/issues/346
## 0.0.347 - 2025-10-20
- Fixed more bugs where incorrect PRU consumption stats were displayed on the frontend
For more information, see https://github.com/github/copilot-cli/issues/351#issuecomment-3423735333
- Fixed a bug where pasted input content that was backspaced away was still sent to the model
- Improved line wrapping and alignment when rendering file diffs
## 0.0.346 - 2025-10-19
- Fixed a bug where model sourced from configuration file was not accounted for correctly in estimating premium request usage
For more information, see https://github.com/github/copilot-cli/issues/351#issuecomment-3419045411
## 0.0.345 - 2025-10-18
- Fixed a bug where premium requests were being overcounted for some users (https://github.com/github/copilot-cli/issues/351). If you were affected, we are working on refunding your overcharged premium requests!
## 0.0.344 - 2025-10-17
- Enabled GitHub MCP server in prompt mode
- Added support to the bash tool for executing detached processes
- Added list of supported models as part of `copilot help config` text
- Fixed session abort handling to properly clean up orphaned tool call when pressing <kbd>Esc</kbd> or force-quitting
- Enforced minimum Node version requirement at launch
- Simplified messaging for `/terminal-setup`
## 0.0.343 - 2025-10-16
- ```
Added new model:
Run slash model to equip
Haiku 4.5.
```
- Added a flag to augment MCP server configuration to temporarily add or override server configuration per session: `--additional-mcp-config` (fixes https://github.com/github/copilot-cli/issues/288)
- You can pass MCP server configuration in two ways:
- Inline JSON: `copilot --additional-mcp-config '{"mcpServers": {"my-tool": {...}}}'`
- From a file (prefix with @): `copilot --additional-mcp-config @/path/to/config.json`
- You can also pass the flag multiple times (later values override earlier ones): `copilot --additional-mcp-config @base.json --additional-mcp-config @overrides.json`
- Improved our prompts to ensure the agent uses Windows-style paths on Windows (fixes https://github.com/github/copilot-cli/issues/261)
- Added a prompt for users to run `/terminal-setup` if needed to enable multi-line input
- Various visual improvements:
- Added a shimmer effect to the "Thinking..." indicator
- Removed the box around user messages in the timeline
- Increased the contrast of removed intraline highlights in diffs
- Allow cycling through slash commands (from the bottom of the list back to the top)
- Aligned permission/confirmation prompts to ensure all use the same visual style
## 0.0.342 - 2025-10-15
- Overhauled our session logging format:
- Introduced a new session logging format that decouples how we store sessions from how we display them in the timeline. The new format is cleaner, more concise, and scalable, and will allow us to more easily implement new features down the line.
- New sessions are stored in `~/.copilot/session-state`
- Legacy sessions are stored in `~/.copilot/history-session-state` -- these will be migrated to the new format & location as you resume them from `copilot --resume`
- Enabled the Kitty protocol by default. Multi-line input is now supported via Shift+Ctrl on terminal that support the Kitty protocol. Multi-line input is also supported in VSCode and its forks by running the `/terminal-setup` command (fixes https://github.com/github/copilot-cli/issues/14)
- Enabled non-interactive GHE logins by respecting the `GH_HOST` environment variable for PAT and `gh` authentication modes (fixes https://github.com/github/copilot-cli/issues/296)
- Improved debug log collection convenience by adding a persistent `log_level` option in `~/.copilot/config`. Possible values: `["none", "error", "warning", "info", "debug", "all", "default"]`
- Added debug logging when calls to `/model` result in Copilot API errors. This should help us diagnose some policy/model access edge cases like https://github.com/github/copilot-cli/issues/268 and https://github.com/github/copilot-cli/issues/116
- Added `gradlew` to the list of commands whose subcommands can be whitelisted (fixes https://github.com/github/copilot-cli/issues/217#issuecomment-3393844685)
- Fixed a bug where sessions could enter a stuck state after a failed MCP tool call (fixes https://github.com/github/copilot-cli/issues/312)
- Made the output of `--help` text more concise
## 0.0.341 - 2025-10-14
- Added `/terminal-setup` command to set up multi-line input on terminals not implementing the kitty protocol
- Fixed a bug where rejecting an MCP tool call would reject all future tool calls (fixes https://github.com/github/copilot-cli/issues/290)
- Fixed a regression where calling `/model` with an argument did not work properly
- Added each model's premium request multiplier to the `/model` list (currently, all our supported models are 1x)
## 0.0.340 - 2025-10-13
- Removed the "Windows support is experimental" warning -- we've made some big strides in improving Windows support the last two weeks! Please continue to report any issues/feedback
- Improved debugging by including the Copilot API request ID for model calls errors and stack traces for client errors
- Fixed an issue where consecutive orphaned tool calls led to a "Each `tool_use` block must have a corresponding `tool_result` block in the next message" message (fixes https://github.com/github/copilot-cli/issues/102)
- Added a prompt to approve new paths in `-p` mode. Also added `--allow-all-paths` argument that approves access to all paths.
- Changed parsing of environment variables in MCP server configuration to treat the value of the `env` section as literal values (fixes https://github.com/github/copilot-cli/issues/26).
Customers who have configured MCP Servers for use with the CLI will need to make a slight modification to their `~/.copilot/mcp-config.json`. For any servers they have added with an `env` section, they will need to go add a `$` to the start of the "value" pair of the key value pair of each entry in the env-block, so to have the values treated as references to environment variables.
For example: Before:
```json
{
"env": {
"GITHUB_ACCESS_TOKEN": "GITHUB_TOKEN"
}
}
```
Before this change, the CLI would read the value of `GITHUB_TOKEN` from the environment of the CLI and set the environment variable named `GITHUB_ACCESS_TOKEN` in the MCP process to that value. With this change, `GITHUB_ACCESS_TOKEN` would now be set to the literal value `GITHUB_TOKEN`. To get the old behavior, change to this:
```json
{
"env": {
"GITHUB_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
```
## 0.0.339 - 2025-10-10
- Improved argument input to MCP servers in `/mcp add` -- previously, users had to use comma-separated syntax to specify arguments. Now, the "Command" field allows users to input the full command to start the server as if they were running it in a shell
- Fixed a bug when using the Kitty protocol that led to text containing `u` to not paste correctly. Kitty protocol support is still behind the `COPILOT_KITTY` environment variable. (Fixes https://github.com/github/copilot-cli/issues/259)
- Fixed a bug when using the Kitty protocol that led to the process hanging in VSCode terminal on Windows. Kitty protocol support is still behind the `COPILOT_KITTY` environment variable. (Fixes https://github.com/github/copilot-cli/issues/257)
- Improved the error handling in the `/model` picker when no models are available (fixes https://github.com/github/copilot-cli/issues/229)
## 0.0.338 - 2025-10-09
- Moved Kitty protocol support behind the `COPILOT_KITTY` environment variable due to observed regressions (https://github.com/github/copilot-cli/issues/257, https://github.com/github/copilot-cli/issues/259)
- Fixed a wrapping issue in multi-line prompts with empty lines
## 0.0.337 - 2025-10-08
- Added validation for MCP server names (fixes https://github.com/github/copilot-cli/issues/110)
- Added support for Ctrl+B and Ctrl+F for moving cursor back and forward (fixes https://github.com/github/copilot-cli/issues/214)
- Added support for multi-line input for terminals that support the [Kitty protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) (partially fixes https://github.com/github/copilot-cli/issues/14 -- broader terminal support coming soon!)
- Updated the OAuth login UI to begin polling as soon as the device code is generated (this will _more solidly_ fix SSH edge-cases as described in https://github.com/github/copilot-cli/issues/89)
## 0.0.336 - 2025-10-07
- Enabled proxy support via HTTPS_PROXY/HTTP_PROXY environment variables regardless of Node version (Fixes https://github.com/github/copilot-cli/issues/41)
- Significantly reduced token consumption, round trips per problem, and time to result. We'll share more specific data in our weekly changelog on Friday!
- Improved file write performances (especially on Windows) by not relying on the shell to fetch the current working directory
- Fixed a bug where `/clear` did not properly reset the context truncation tracking state
- Hid the "Welcome to GitHub Copilot CLI" welcome message on session resumption and `/clear` for a cleaner look
- Improved the alignment of tables where the scrollbar is present
- Improved the output of `--help` by making it more concise
- Added a prompt for users who launch with `--screen-reader` to persistently save this preference
- Potentially improved flickering in some cases; we're still working on this!
## 0.0.335 - 2025-10-06
- Improved visibility into file edits by showing file diffs in the timeline by default, without the need to Ctrl+R
- Improved slash command input by showing argument hints in the input box
- Improved the display of the interface in windows less than 80 columns wide
- Reduced the number of colors and improved the spacing of Markdown rendering
- Added a warning when attempting to use proxy support in an environment where it won't work (Node <24, required environment variables not set) (A more permanent fix for https://github.com/github/copilot-cli/issues/41 is coming ~tomorrow)
- Updated the context truncation message's color from an error color to a warning color
- Fixed a bug where `copilot` logs might not have been properly created on Windows
- Fixed a bug where Powershell users with custom profiles might have had issues running commands (Fixes https://github.com/github/copilot-cli/issues/196)
- Fixed a bug where prompts were truncated after pasting and other edge cases (Fixes https://github.com/github/copilot-cli/issues/208, https://github.com/github/copilot-cli/issues/218)
- Fixed a bug where users would see a login prompt on startup despite being logged in (fixes https://github.com/github/copilot-cli/issues/202)
- Fixed a bug where some SSH users in certain environments were unable to get the OAuth login link and had their processes hang trying to open a browser (fixes https://github.com/github/copilot-cli/issues/89)
## 0.0.334 - 2025-10-03
- Improved the experience of pasting large content: when pasting more than 10 lines, it's displayed as a compact token like `[Paste #1 - 15 lines]` instead of flooding the terminal.
- Added a warning when conversation context approaches ≤20% remaining of the model's limit that truncation will soon occur. At this point, we recommend you begin a new session (improves https://github.com/github/copilot-cli/issues/29)
- Removed the on-exit usage stats from the persisted session history
- Added the current version to startup logs to aid in bug reporting
- Removed cycling through TAB autocomplete items if an argument is present. This prevents running `/cwd /path/to/whatever`, hitting `TAB`, then seeing `/clear` autocomplete
## 0.0.333 - 2025-10-02
- Added image support! `@`-mention files to add them as input to the model.
- Improved proxy support for users on Node.JS v24+. See [this comment](https://github.com/github/copilot-cli/issues/41#issuecomment-3362444262) for more details (Fixes https://github.com/github/copilot-cli/issues/41)
- Added support for directly executing shell commands and bypassing the model by prepending input with `!` (fixes https://github.com/github/copilot-cli/issues/186, https://github.com/github/copilot-cli/issues/12)
- Added `/usage` slash command to provide stats about Premium request usage, session time, code changes, and per-model token use. This information is also printed at the conclusion of a session (Fixes https://github.com/github/copilot-cli/issues/27, https://github.com/github/copilot-cli/issues/121)
- Improved `--screen-reader` mode by replacing icons in the timeline with informative labels
- Added a `--continue` flag to resume the most recently closed session
- Updated the `/clear` command to properly clear old timeline entries/session information (Fixes https://github.com/github/copilot-cli/issues/170)
## 0.0.332 - 2025-10-01
- Switched to using per-subscription Copilot API endpoints in accordance with [GitHub's docs](https://docs.github.com/en/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-access/manage-network-access) (fixes https://github.com/github/copilot-cli/issues/76)
- Fixed a bug where `/user [list | show | switch]` did not include users signed in from all authentication modes (fixes https://github.com/github/copilot-cli/issues/58)
- Fixed a bug where switching to another user with `/user switch` did not take effect in the GitHub MCP server
- Improved the screenreader experience by disabling the scrollbar in the `@` file picker, the `--resume` session picker, and the `/` command picker
- Improved the polish of the scrollbar container (increased the width, reduced the opacity of the gutter)
- Minor visual improvements to the input area (moved the current model indicator to the right so it's not cramped with the CWD, improved the positioning of the file picker's "indexing" indicator, improved hint formatting in completion menus)
- Improved Markdown legibility by excluding `#` prefixes in headings
- Improved how we extract paths from shell commands for permission handling (might fix https://github.com/github/copilot-cli/issues/159, https://github.com/github/copilot-cli/issues/67)
## 0.0.331 - 2025-10-01
- Improved the information density of file read/edit timeline events
- Fixed an inaccuracy in the `--banner` help text; it previously implied that it would persistently change the configuration to always show the startup banner
- Improved the `/model`s list to ensure that a user only sees models they have access to use -- previously, if a user tries to use a model they do not have access to (because of their Copilot plan, their geographic region, etc), they received a `model_not_supported` error. This should prevent that by not even showing such models as options in the list (Fixes https://github.com/github/copilot-cli/issues/112, https://github.com/github/copilot-cli/issues/85, https://github.com/github/copilot-cli/issues/40)
- Fixed a bug where pressing down arrow in a multi-line prompt would wrap around to the first line (This is on the way to implementing https://github.com/github/copilot-cli/issues/14)
- Added a scrollbar to the `@` file mentioning picker and increased the size of the active buffer to 10 items
- Improved the experience of writing prompts while the agent is running -- up/down arrows will now correctly navigate between options in the `@` and `/` menus
## 0.0.330 - 2025-09-29
- Changed the default model back to Sonnet 4 since Sonnet 4.5 hasn't rolled out to all users yet. Sonnet 4.5 is still available from the `/model` slash command
## 0.0.329 - 2025-09-29
- Added support for [Claude Sonnet 4.5](https://github.blog/changelog/2025-09-29-anthropic-claude-sonnet-4-5-is-in-public-preview-for-github-copilot/) and made it the default model
- Added `/model` slash command to easily change the model (fixes https://github.com/github/copilot-cli/issues/10)
- `/model` will open a picker to change the model
- `/model <model>` will set the model to the parameter provided
- Added display of currently selected model above the input text box (Addresses feedback in https://github.com/github/copilot-cli/issues/120, https://github.com/github/copilot-cli/issues/108, )
- Improved error messages when users provide incorrect command-line arguments. (Addresses feedback of the discoverability of non-interactive mode from https://github.com/github/copilot-cli/issues/96)
- Changed the behavior of `Ctrl+r` to expand only recent timeline items. After running `Ctrl+r`, you can use `Ctrl+e` to expand all
- Improved word motion logic to better detect newlines: using word motion keys will now correctly move to the first word on a line
- Improved the handling of multi-line inputs in the input box: the input text box is scrollable, limited to 10 lines. Long prompts won't take up the whole screen anymore! (This is on the way to implementing https://github.com/github/copilot-cli/issues/14)
- Removed the left and right borders from the input box. This makes it easier to copy text out of it!
- Added glob matching to shell rules. When using `--allow-tool` and `--deny-tool`, you can now specify things like `shell(npm run test:*)` to match any shell commands beginning with `npm run test`
- Improved the `copilot --resume` interface with relative time display, session message count, (Fixes https://github.com/github/copilot-cli/issues/97)
## 0.0.328 - 2025-09-26
- Improved error message received when Copilot CLI is blocked by organization policy (fixes https://github.com/github/copilot-cli/issues/18 )
- Improved the error message received when using a PAT that is missing the "Copilot Requests" permission (fixes https://github.com/github/copilot-cli/issues/46 )
- Improved the output of `/user list` to make it clearer which is the current user
- Improved PowerShell parsing of `ForEach-Object` and detection of command name expressions (e.g.,`& $someCommand`)
+23
View File
@@ -0,0 +1,23 @@
pkgbase = hyprshade
pkgdesc = Hyprland shade configuration tool
pkgver = 4.0.1
pkgrel = 1
url = https://github.com/loqusion/hyprshade
arch = any
license = MIT
makedepends = git
makedepends = python-build
makedepends = python-hatchling
makedepends = python-installer
depends = hyprland
depends = python-click
depends = python-more-itertools
depends = util-linux
optdepends = systemd: activate shader on schedule
provides = hyprshade
source = https://files.pythonhosted.org/packages/source/h/hyprshade/hyprshade-4.0.1.tar.gz
source = https://raw.githubusercontent.com/loqusion/hyprshade/4.0.1/examples/config.toml
sha256sums = 86d93d3066ae4dc66800620f7b982445c96738f15129ecb841929c93ef224670
sha256sums = 411517f06dc484fb8aad729d73d66cb5b91982ac0c5908184ec9343974392f0a
pkgname = hyprshade
+4
View File
@@ -0,0 +1,4 @@
*
!/PKGBUILD
!/.SRCINFO
!/.gitignore
+63
View File
@@ -0,0 +1,63 @@
# Maintainer: John Bernard <loqusion@gmail.com>
pkgname=hyprshade
pkgver=4.0.1
pkgrel=1
pkgdesc="Hyprland shade configuration tool"
arch=('any')
url="https://github.com/loqusion/$pkgname"
license=('MIT')
_py_deps=(
click
more-itertools
)
depends=(
hyprland
"${_py_deps[@]/#/python-}"
util-linux
)
makedepends=(git python-{build,hatchling,installer})
optdepends=('systemd: activate shader on schedule')
provides=($pkgname)
source=("https://files.pythonhosted.org/packages/source/${pkgname::1}/$pkgname/$pkgname-$pkgver.tar.gz"
"https://raw.githubusercontent.com/loqusion/$pkgname/$pkgver/examples/config.toml")
sha256sums=('86d93d3066ae4dc66800620f7b982445c96738f15129ecb841929c93ef224670'
'411517f06dc484fb8aad729d73d66cb5b91982ac0c5908184ec9343974392f0a')
_get_wheel() {
local wheel=
local file
for file in ./dist/${pkgname}-*.whl; do
if [ -n "$wheel" ]; then
echo "Multiple wheels found: $wheel and $file" >&2
exit 1
fi
wheel=$file
done
echo "$wheel"
}
build() {
cd "$pkgname-$pkgver"
mkdir -p examples
cp ../config.toml examples/
/usr/bin/python -m build --wheel --no-isolation
mkdir -p assets/completions
local wheel=$(_get_wheel)
export PYTHONPATH="$wheel"
_HYPRSHADE_COMPLETE=bash_source /usr/bin/python "$wheel/$pkgname" >assets/completions/$pkgname.bash
_HYPRSHADE_COMPLETE=fish_source /usr/bin/python "$wheel/$pkgname" >assets/completions/$pkgname.fish
_HYPRSHADE_COMPLETE=zsh_source /usr/bin/python "$wheel/$pkgname" >assets/completions/_$pkgname
}
package() {
cd "$pkgname-$pkgver"
export PYTHONPYCACHEPREFIX="${PWD}/.cache/cpython/"
/usr/bin/python -m installer --destdir="$pkgdir" dist/*.whl
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" LICENSE
install -Dm0644 -t "$pkgdir/usr/share/$pkgname/examples/" examples/*
install -Dm0644 -t "$pkgdir/usr/share/bash-completion/completions/" assets/completions/$pkgname.bash
install -Dm0644 -t "$pkgdir/usr/share/fish/vendor_completions.d/" assets/completions/$pkgname.fish
install -Dm0644 -t "$pkgdir/usr/share/zsh/site-functions/" assets/completions/_$pkgname
}
+20
View File
@@ -0,0 +1,20 @@
pkgbase = lmstudio
pkgdesc = Discover, download, and run local LLMs
pkgver = 0.3.35.1
pkgrel = 1
url = https://lmstudio.ai/
arch = x86_64
license = LicenseRef-EULA
makedepends = squashfs-tools
makedepends = graphicsmagick
depends = zlib
depends = hicolor-icon-theme
depends = fuse2
depends = clblast
noextract = lmstudio-0.3.35.1.AppImage
options = !strip
options = !debug
source = lmstudio-0.3.35.1.AppImage::https://installers.lmstudio.ai/linux/x64/0.3.35-1/LM-Studio-0.3.35-1-x64.AppImage
sha256sums = ad9bf98e91ff13b5eea1d26f1457c8d7c4bed24bbb419551d5cbff4840380953
pkgname = lmstudio
@@ -0,0 +1,3 @@
[lmstudio]
source = "cmd"
cmd = "curl -sIL -o /dev/null -w '%{url_effective}\\n' https://lmstudio.ai/download/latest/linux/x64 | sed -E 's|.*x64/([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+).*|\\1.\\2|'"
+69
View File
@@ -0,0 +1,69 @@
# Maintainer: envolution
# Contributor: SoleSoul
# shellcheck shell=bash disable=SC2034,SC2154
pkgname=lmstudio
_appname=lm-studio
pkgver=0.3.35.1
_pkgver="${pkgver%.*}-${pkgver##*.}"
pkgrel=1
pkgdesc="Discover, download, and run local LLMs"
arch=('x86_64')
url="https://lmstudio.ai/"
license=('LicenseRef-EULA')
depends=('zlib' 'hicolor-icon-theme' 'fuse2' 'clblast')
makedepends=('squashfs-tools' 'graphicsmagick')
options=(!strip !debug)
_appimage="${pkgname}-${pkgver}.AppImage"
source=("${_appimage}::https://installers.lmstudio.ai/linux/x64/${_pkgver}/LM-Studio-${_pkgver}-x64.AppImage")
sha256sums=('ad9bf98e91ff13b5eea1d26f1457c8d7c4bed24bbb419551d5cbff4840380953')
noextract=("${_appimage}")
prepare() {
rm -rf squashfs-root
chmod +x "${_appimage}"
# get the files we need for packaging
offset=$(./"${_appimage}" --appimage-offset)
unset PAGER # unsquashfs is very picky about pager settings
unsquashfs -q -o "$offset" -d squashfs-root "${_appimage}" \
"${_appname}.desktop" \
"usr/share/icons/hicolor/0x0/apps/lm-studio.png" \
"LICENSE.electron.txt" \
"LICENSES.chromium.html"
# unsquashfs -o "$offset" -l "${_appimage}" | grep -i license
}
build() {
# Adjust .desktop so it will work outside of AppImage container
sed -i -E "s|Exec=AppRun|Exec=env DESKTOPINTEGRATION=false /usr/bin/${pkgname}|" \
"squashfs-root/${_appname}.desktop"
sed -i -E "s|Icon=.*|Icon=${pkgname}|" \
"squashfs-root/${_appname}.desktop"
}
package() {
# AppImage
install -Dm755 "${srcdir}/${_appimage}" "${pkgdir}/opt/${pkgname}/${_appname}.AppImage"
install -Dm644 "${srcdir}/squashfs-root/LICENSE"* -t "${pkgdir}/usr/share/licenses/${pkgname}"
install -Dm644 /dev/stdin "$pkgdir/usr/share/licenses/$pkgname/EULA" <<< "https://lmstudio.ai/app-terms"
# Desktop file
install -Dm644 "${srcdir}/squashfs-root/${_appname}.desktop" \
"${pkgdir}/usr/share/applications/${pkgname}.desktop"
#source icon from squashfs
src_icon="$srcdir/squashfs-root/usr/share/icons/hicolor/0x0/apps/lm-studio.png"
sizes=("16x16" "32x32" "48x48" "64x64" "128x128" "256x256")
# Loop through each size and create resized icons
for size in "${sizes[@]}"; do
install -dm755 "${pkgdir}/usr/share/icons/hicolor/$size/apps"
gm convert "$src_icon" -resize "$size" "$pkgdir/usr/share/icons/hicolor/$size/apps/${pkgname}.png"
done
# Symlink executable
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname}/${_appname}.AppImage" "${pkgdir}/usr/bin/${pkgname}"
}
# vim:set ts=2 sw=2 et:
+20
View File
@@ -0,0 +1,20 @@
pkgbase = localsend-bin
pkgdesc = An open source cross-platform alternative to AirDrop
pkgver = 1.17.0
pkgrel = 1
url = https://github.com/localsend/localsend
arch = x86_64
arch = aarch64
license = MIT
depends = fuse2
depends = xdg-user-dirs
depends = libayatana-appindicator
provides = localsend
conflicts = localsend
options = !debug
source_x86_64 = https://github.com/localsend/localsend/releases/download/v1.17.0/LocalSend-1.17.0-linux-x86-64.deb
sha256sums_x86_64 = b0244b2c3eacb2a81d61b2662534d6036ab37ace10d6782da36b630c222fa04c
source_aarch64 = https://github.com/localsend/localsend/releases/download/v1.17.0/LocalSend-1.17.0-linux-arm-64.deb
sha256sums_aarch64 = c2c792aadabeecf864f4105f8b1f8693941bc752fda582f0d2b3794765fcf803
pkgname = localsend-bin
+64
View File
@@ -0,0 +1,64 @@
# Maintainer: Nixuge
# Contributor: Noah Vogt <noah@noahvogt.com>
# Contributor: SpieringsAE (aarch64 addition)
# Note:
# using the .deb instead of the .tar.gz as it already contains the icons as well as the .desktop file.
pkgname=localsend-bin
pkgver=1.17.0
pkgrel=1
pkgdesc='An open source cross-platform alternative to AirDrop'
url=https://github.com/localsend/localsend
arch=('x86_64' 'aarch64')
license=(MIT)
depends=(fuse2 xdg-user-dirs libayatana-appindicator)
conflicts=('localsend')
provides=('localsend')
options=(!debug)
source_x86_64=("${url}/releases/download/v${pkgver}/LocalSend-${pkgver}-linux-x86-64.deb")
source_aarch64=("${url}/releases/download/v${pkgver}/LocalSend-${pkgver}-linux-arm-64.deb")
sha256sums_x86_64=('b0244b2c3eacb2a81d61b2662534d6036ab37ace10d6782da36b630c222fa04c')
sha256sums_aarch64=('c2c792aadabeecf864f4105f8b1f8693941bc752fda582f0d2b3794765fcf803')
_pkgdesktop="localsend_app.desktop"
prepare() {
tar -xf data.tar.xz
}
build() {
sed -i -E \
"s|Exec=localsend_app|Exec=localsend|" \
"${srcdir}/usr/share/applications/${_pkgdesktop}"
# Adjust .desktop to have it point to the correct icon
sed -i -E 's/^Icon=.+/Icon=localsend/' "${srcdir}/usr/share/applications/${_pkgdesktop}"
}
package() {
# Desktop
install -Dm644 "${srcdir}/usr/share/applications/${_pkgdesktop}" "${pkgdir}/usr/share/applications/${pkgname%-*}.desktop"
# Icons
install -dm644 "${pkgdir}/usr/share/icons/"
cp -a "${srcdir}/usr/share/icons" "${pkgdir}/usr/share"
# Dirty - rename icons to localsend
for res in "128x128" "256x256"; do
mv "${pkgdir}/usr/share/icons/hicolor/${res}/apps/localsend_app.png" "${pkgdir}/usr/share/icons/hicolor/${res}/apps/localsend.png"
done
# Executable
install -dm755 "${pkgdir}/opt/${pkgname%-*}/"
cp -a "${srcdir}/usr/share/localsend_app/." "${pkgdir}/opt/${pkgname%-*}"
# Same as icons - rename to localsend
mv "${pkgdir}/opt/${pkgname%-*}/localsend_app" "${pkgdir}/opt/${pkgname%-*}/localsend"
# Symlink executable
install -dm755 "${pkgdir}/usr/bin"
ln -s \
"/opt/${pkgname%-*}/${pkgname%-*}" \
"${pkgdir}/usr/bin/${pkgname%-*}"
}
+22
View File
@@ -0,0 +1,22 @@
pkgbase = localsend
pkgdesc = An open source cross-platform alternative to AirDrop
pkgver = 1.17.0
pkgrel = 2
url = https://github.com/localsend/localsend
arch = x86_64
license = MIT
makedepends = clang
makedepends = cmake
makedepends = fvm
makedepends = git
makedepends = lld
makedepends = llvm
makedepends = ninja
makedepends = patchelf
makedepends = rustup
depends = libayatana-appindicator
options = !lto
source = localsend-1.17.0.tar.gz::https://github.com/localsend/localsend/archive/refs/tags/v1.17.0.tar.gz
sha256sums = 921c5843947580ae1b64d0d3a6edeefb9e07e8a917d0830af6a47d42e40de264
pkgname = localsend
+4
View File
@@ -0,0 +1,4 @@
*
!PKGBUILD
!.SRCINFO
!.gitignore
+99
View File
@@ -0,0 +1,99 @@
# Maintainer:
# Contributor: Patrick Northon <northon_patrick3@yahoo.ca>
## links
# https://localsend.org/
# https://github.com/localsend/localsend
## options
: ${_install_path:=usr/lib}
_pkgname="localsend"
pkgname="$_pkgname"
pkgver=1.17.0
pkgrel=2
pkgdesc="An open source cross-platform alternative to AirDrop"
url="https://github.com/localsend/localsend"
license=('MIT')
arch=('x86_64')
depends=(
'libayatana-appindicator'
)
makedepends=(
'clang'
'cmake'
'fvm' # AUR
'git'
'lld'
'llvm'
'ninja'
'patchelf'
'rustup'
)
options=('!lto')
_pkgsrc="$_pkgname-$pkgver"
_pkgext="tar.gz"
source=("$_pkgsrc.$_pkgext"::"$url/archive/refs/tags/v$pkgver.$_pkgext")
sha256sums=('921c5843947580ae1b64d0d3a6edeefb9e07e8a917d0830af6a47d42e40de264')
prepare() {
sed -E 's&^(channel) = .*$&\1 = "stable"&' -i "$_pkgsrc/app/rust-toolchain.toml"
}
build() (
export FVM_CACHE_PATH="$SRCDEST/fvm-cache"
export CXXFLAGS+=' -Wno-error=deprecated-declarations'
cd "$_pkgsrc/app"
fvm install
fvm flutter --disable-analytics
#fvm flutter pub upgrade --major-versions
fvm flutter --no-version-check pub get
fvm flutter build linux --no-pub --release
)
package() {
cd "$_pkgsrc/app/build/linux/x64/release/bundle"
# files
install -Dm755 "localsend_app" "$pkgdir/$_install_path/$_pkgname/$_pkgname"
cp --reflink=auto -r lib/ "$pkgdir/$_install_path/$_pkgname/"
cp --reflink=auto -r data/ "$pkgdir/$_install_path/$_pkgname/"
# runpath
patchelf --set-rpath '$ORIGIN/lib' "$pkgdir/$_install_path/$_pkgname/$_pkgname"
for i in "$pkgdir/$_install_path/$_pkgname/lib"/*.so; do
[ -z "$(patchelf --print-rpath "$i")" ] && continue
patchelf --set-rpath '$ORIGIN' "$i"
done
# symlink
install -dm755 "${pkgdir}/usr/bin"
ln -sfr "$pkgdir/$_install_path/$_pkgname/$_pkgname" "$pkgdir/usr/bin/${_pkgname}"
# icon
install -Dm644 "$srcdir/$_pkgsrc/app/build/flutter_assets/assets/img/logo-512.png" "$pkgdir/usr/share/pixmaps/$_pkgname.png"
# launcher
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$_pkgname.desktop" << END
[Desktop Entry]
Type=Application
Name=LocalSend
Comment=$pkgdesc
Exec=$_pkgname
Icon=$_pkgname
Terminal=false
Categories=Utility;Network;
END
# license
install -Dm644 "$srcdir/$_pkgsrc/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/"
# permissions
chmod -R u+rwX,go+rX,go-w "$pkgdir/"
}
@@ -0,0 +1,27 @@
pkgbase = minecraft-launcher
pkgdesc = Official Minecraft Launcher
pkgver = 2.1.3
pkgrel = 3
epoch = 1
url = https://mojang.com/
arch = x86_64
license = custom
depends = gtk3
depends = gcc-libs
depends = zlib
depends = libgpg-error
optdepends = flite: narrator support
optdepends = org.freedesktop.secrets: persistent login support
optdepends = orca: screen reader support
provides = minecraft-launcher-beta
conflicts = minecraft-launcher-beta
source = https://launcher.mojang.com/download/Minecraft.tar.gz
source = https://launcher.mojang.com/download/minecraft-launcher.svg
source = minecraft-launcher.sh
source = minecraft-launcher.desktop
sha256sums = 695269281547bbbcf47fe74633027a0e4ddc13a61060c686a7217e85d314e45e
sha256sums = 35c2bcaeb09fa4b8864e9422fd66bf60847706f8b4400ec4a66ba6436b101f71
sha256sums = 83a89378cd17c1bbee173d12d14c13edae1b29770ee8411a534c5a547c164d4b
sha256sums = 09006f33be0d4540dfb1838db00ec6c5d3a542e8c8c58c8374f4f85479222e3f
pkgname = minecraft-launcher
@@ -0,0 +1,5 @@
/*.zst
/*.gz
/*.svg
/src/
/pkg/
@@ -0,0 +1,34 @@
# Maintainer: Phillip Schichtel <phillip@schich.tel>
# Contributor: László Várady <laszlo.varady93@gmail.com>
# Contributor: Petr Mrázek <petr@mojang.com>
pkgname=minecraft-launcher
pkgver=2.1.3
pkgrel=3
epoch=1
pkgdesc="Official Minecraft Launcher"
arch=('x86_64')
url="https://mojang.com/"
license=('custom')
depends=('gtk3' 'gcc-libs' 'zlib' 'libgpg-error')
optdepends=('flite: narrator support'
'org.freedesktop.secrets: persistent login support'
'orca: screen reader support')
conflicts=('minecraft-launcher-beta')
provides=('minecraft-launcher-beta')
source=("https://launcher.mojang.com/download/Minecraft.tar.gz"
"https://launcher.mojang.com/download/minecraft-launcher.svg"
"minecraft-launcher.sh"
"minecraft-launcher.desktop")
sha256sums=('695269281547bbbcf47fe74633027a0e4ddc13a61060c686a7217e85d314e45e'
'35c2bcaeb09fa4b8864e9422fd66bf60847706f8b4400ec4a66ba6436b101f71'
'83a89378cd17c1bbee173d12d14c13edae1b29770ee8411a534c5a547c164d4b'
'09006f33be0d4540dfb1838db00ec6c5d3a542e8c8c58c8374f4f85479222e3f')
package() {
install -Dm755 "minecraft-launcher.sh" "$pkgdir/usr/bin/minecraft-launcher.sh"
install -Dm644 "minecraft-launcher.svg" "$pkgdir/usr/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg"
install -Dm644 "minecraft-launcher.desktop" "$pkgdir/usr/share/applications/minecraft-launcher.desktop"
install -Dm755 "minecraft-launcher/minecraft-launcher" "$pkgdir/usr/bin/minecraft-launcher"
}
@@ -0,0 +1,11 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Minecraft Launcher
GenericName=Minecraft Launcher
Comment=Official Minecraft Launcher
Exec=minecraft-launcher.sh
Icon=minecraft-launcher
Terminal=false
Categories=Game;Application;
StartupNotify=true
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env sh
# This is a workaround for [1] as suggested by [2]:
# [1]: https://report.bugs.mojang.com/servicedesk/customer/portal/7/MCL-25003 and https://bugs.kde.org/show_bug.cgi?id=501866
# [2]: https://aur.archlinux.org/packages/minecraft-launcher#comment-1020377
cef_version_file="$HOME/.minecraft/webcache2/CEF_VERSION"
if [ -e "$cef_version_file" ]
then
rm "$cef_version_file"
fi
exec minecraft-launcher
@@ -0,0 +1,21 @@
pkgbase = nautilus-dropbox
pkgdesc = Dropbox Nautilus Extension
pkgver = 2025.05.20
pkgrel = 1
url = https://www.dropbox.com/
arch = x86_64
license = custom:CC-BY-ND-3
license = GPL
makedepends = python
makedepends = python-docutils
makedepends = python-gobject
makedepends = gnome-common
depends = nautilus
depends = libnautilus-extension
depends = dropbox
options = !libtool
options = !emptydirs
source = https://github.com/dropbox/nautilus-dropbox/archive/refs/tags/v2025.05.20.tar.gz
sha512sums = 057fc46885c817a627cafa8a67f324be294ee858bdcf142b9e8fce9533bd3d8644e25b73316a9c2709e77967eff4d936e4bd2a55cecfe44604ba27d5b5c64613
pkgname = nautilus-dropbox
@@ -0,0 +1,42 @@
# Maintainer: Corey Berla <corey@berla.me>
# Contributor: M.Reynolds <blackboxnetworkproject@gmail.com>
# Contributor: Vlad M. <vlad@archlinux.net>
# Contributor: Christophe Gueret <christophe.gueret@gmail.com>
# Contributor: josephgbr <rafael.f.f1@gmail.com>
# Contributor: cmorlok <christianmorlok@web.de>
# Contributor: fazibear <fazibear@gmail.com>
# Contributor: neuromante <lorenzo.nizzi.grifi@gmail.com>
# Contributor: Gordin <9ordin @t gmail.com>
pkgname=nautilus-dropbox
pkgdesc="Dropbox Nautilus Extension"
pkgver=2025.05.20
pkgrel=1
arch=(x86_64)
url="https://www.dropbox.com/"
license=('custom:CC-BY-ND-3' 'GPL')
depends=(nautilus libnautilus-extension dropbox)
makedepends=(python python-docutils python-gobject gnome-common)
options=('!libtool' '!emptydirs')
source=('https://github.com/dropbox/nautilus-dropbox/archive/refs/tags/v2025.05.20.tar.gz')
sha512sums=('057fc46885c817a627cafa8a67f324be294ee858bdcf142b9e8fce9533bd3d8644e25b73316a9c2709e77967eff4d936e4bd2a55cecfe44604ba27d5b5c64613')
build() {
cd nautilus-dropbox-${pkgver}
./autogen.sh
make
}
package() {
cd nautilus-dropbox-${pkgver}
make DESTDIR="$pkgdir" install
# install the common license
install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
# remove executables and depend on 'dropbox' package
rm "$pkgdir/usr/bin/dropbox"
rm "$pkgdir/usr/share/applications/dropbox.desktop"
rm "$pkgdir/usr/share/man/man1/dropbox.1"
}
@@ -0,0 +1,33 @@
pkgbase = omarchy-chromium-bin
pkgdesc = A web browser built for speed, simplicity, and security, with patches for Omarchy (binary package)
pkgver = 143.0.7499.192
pkgrel = 18
url = https://www.chromium.org/Home
arch = x86_64
arch = aarch64
license = BSD-3-Clause
depends = gtk3
depends = nss
depends = alsa-lib
depends = xdg-utils
depends = libxss
depends = libcups
depends = libgcrypt
depends = ttf-liberation
depends = systemd
depends = dbus
depends = libpulse
depends = pciutils
depends = libva
depends = libffi
depends = desktop-file-utils
depends = hicolor-icon-theme
provides = chromium
conflicts = chromium
conflicts = omarchy-chromium
source_x86_64 = https://github.com/omacom-io/omarchy-chromium/releases/download/v143.0.7499.192-18/omarchy-chromium-143.0.7499.192-18-x86_64.pkg.tar.zst
sha256sums_x86_64 = b792b2cb35a31ae507171d9060d8e8d955d0153fd7ed9510d5be1d39d9380a45
source_aarch64 = https://github.com/omacom-io/omarchy-chromium/releases/download/v143.0.7499.192-18/omarchy-chromium-143.0.7499.192-18-aarch64.pkg.tar.zst
sha256sums_aarch64 = 6cf954e3c8cf92c60891fe616fd7b11b9b0c7c2e61c54e05ee925bc674cee086
pkgname = omarchy-chromium-bin
@@ -0,0 +1,30 @@
# Maintainer: Helmut Januschka <helmut@januschka.com>
pkgname=omarchy-chromium-bin
pkgver=143.0.7499.192
pkgrel=18
pkgdesc="A web browser built for speed, simplicity, and security, with patches for Omarchy (binary package)"
arch=('x86_64' 'aarch64')
url="https://www.chromium.org/Home"
license=('BSD-3-Clause')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
'libffi' 'desktop-file-utils' 'hicolor-icon-theme')
provides=('chromium')
conflicts=('chromium' 'omarchy-chromium')
# Architecture-specific sources
source_x86_64=("https://github.com/omacom-io/omarchy-chromium/releases/download/v143.0.7499.192-18/omarchy-chromium-143.0.7499.192-18-x86_64.pkg.tar.zst")
source_aarch64=("https://github.com/omacom-io/omarchy-chromium/releases/download/v143.0.7499.192-18/omarchy-chromium-143.0.7499.192-18-aarch64.pkg.tar.zst")
sha256sums_x86_64=('b792b2cb35a31ae507171d9060d8e8d955d0153fd7ed9510d5be1d39d9380a45')
sha256sums_aarch64=('6cf954e3c8cf92c60891fe616fd7b11b9b0c7c2e61c54e05ee925bc674cee086')
package() {
cd "$srcdir"
# Extract the package (filename varies by architecture)
tar -xf omarchy-chromium-143.0.7499.192-18-${CARCH}.pkg.tar.zst
# Copy everything to the target directory
cp -r usr "$pkgdir/"
}
@@ -0,0 +1,18 @@
pkgbase = openai-codex-bin
pkgdesc = Lightweight coding agent that runs in your terminal (binary release)
pkgver = 0.79.0
pkgrel = 1
url = https://github.com/openai/codex
arch = x86_64
arch = aarch64
license = Apache
optdepends = git: for working with git repositories
optdepends = ripgrep: accelerated large-repo search
provides = openai-codex
conflicts = openai-codex
source_x86_64 = codex-0.79.0-x86_64.tar.gz::https://github.com/openai/codex/releases/download/rust-v0.79.0/codex-x86_64-unknown-linux-gnu.tar.gz
sha256sums_x86_64 = aa4a13dadc30ea6eb26da94e7b92e01834c1c04b5cf45af81c94d6f373d2f82d
source_aarch64 = codex-0.79.0-aarch64.tar.gz::https://github.com/openai/codex/releases/download/rust-v0.79.0/codex-aarch64-unknown-linux-gnu.tar.gz
sha256sums_aarch64 = 54063df807271fb5e44891c6475817563bf6d6acd517f9e0233c3b874e174da1
pkgname = openai-codex-bin
@@ -0,0 +1,36 @@
# Maintainer: Jack Mahoney <jacksmahoney@gmail.com>
pkgname=openai-codex-bin
pkgver=0.79.0
pkgrel=1
pkgdesc="Lightweight coding agent that runs in your terminal (binary release)"
arch=('x86_64' 'aarch64')
url="https://github.com/openai/codex"
license=('Apache')
provides=('openai-codex')
conflicts=('openai-codex')
optdepends=(
'git: for working with git repositories'
'ripgrep: accelerated large-repo search'
)
source_x86_64=(
"codex-${pkgver}-x86_64.tar.gz::https://github.com/openai/codex/releases/download/rust-v${pkgver}/codex-x86_64-unknown-linux-gnu.tar.gz"
)
sha256sums_x86_64=('aa4a13dadc30ea6eb26da94e7b92e01834c1c04b5cf45af81c94d6f373d2f82d')
sha256sums_aarch64=('54063df807271fb5e44891c6475817563bf6d6acd517f9e0233c3b874e174da1')
source_aarch64=(
"codex-${pkgver}-aarch64.tar.gz::https://github.com/openai/codex/releases/download/rust-v${pkgver}/codex-aarch64-unknown-linux-gnu.tar.gz"
)
package() {
cd "$srcdir"
if [[ "$CARCH" == "x86_64" ]]; then
install -Dm755 "codex-x86_64-unknown-linux-gnu" "$pkgdir/usr/bin/codex"
fi
if [[ "$CARCH" == "aarch64" ]]; then
install -Dm755 "codex-aarch64-unknown-linux-gnu" "$pkgdir/usr/bin/codex"
fi
}
+20
View File
@@ -0,0 +1,20 @@
pkgbase = opencode
pkgdesc = The AI coding agent built for the terminal.
pkgver = 1.1.12
pkgrel = 1
url = https://github.com/anomalyco/opencode
arch = aarch64
arch = x86_64
license = MIT
makedepends = git
makedepends = bun
makedepends = go
depends = ripgrep
provides = opencode
conflicts = opencode-bin
options = !debug
options = !strip
source = opencode-1.1.12.tar.gz::https://github.com/anomalyco/opencode/archive/v1.1.12.tar.gz
sha256sums = SKIP
pkgname = opencode
+64
View File
@@ -0,0 +1,64 @@
# Maintainer: dax
# Maintainer: adam
pkgname='opencode'
pkgver=1.1.12
_subver=
options=('!debug' '!strip')
pkgrel=1
pkgdesc='The AI coding agent built for the terminal.'
url='https://github.com/anomalyco/opencode'
arch=('aarch64' 'x86_64')
license=('MIT')
provides=('opencode')
conflicts=('opencode-bin')
depends=('ripgrep')
makedepends=('git' 'bun' 'go')
source=("opencode-${pkgver}.tar.gz::https://github.com/anomalyco/opencode/archive/v${pkgver}${_subver}.tar.gz")
sha256sums=('SKIP')
prepare() {
cd "opencode-${pkgver}"
# Change strict bun version check to >= comparison
sed -i 's/process\.versions\.bun !== expectedBunVersion/process.versions.bun.localeCompare(expectedBunVersion, undefined, {numeric: true}) < 0/' packages/script/src/index.ts
}
build() {
cd "opencode-${pkgver}"
bun install
cd ./packages/opencode
OPENCODE_CHANNEL=latest OPENCODE_VERSION=1.1.12 bun run ./script/build.ts --single
}
package() {
cd "opencode-${pkgver}/packages/opencode"
mkdir -p "${pkgdir}/usr/bin"
target_arch="x64"
case "$CARCH" in
x86_64) target_arch="x64" ;;
aarch64) target_arch="arm64" ;;
*) printf "unsupported architecture: %s\n" "$CARCH" >&2 ; return 1 ;;
esac
libc=""
if command -v ldd >/dev/null 2>&1; then
if ldd --version 2>&1 | grep -qi musl; then
libc="-musl"
fi
fi
if [ -z "$libc" ] && ls /lib/ld-musl-* >/dev/null 2>&1; then
libc="-musl"
fi
base=""
if [ "$target_arch" = "x64" ]; then
if ! grep -qi avx2 /proc/cpuinfo 2>/dev/null; then
base="-baseline"
fi
fi
bin="dist/opencode-linux-${target_arch}${base}${libc}/bin/opencode"
if [ ! -f "$bin" ]; then
printf "unable to find binary for %s%s%s\n" "$target_arch" "$base" "$libc" >&2
return 1
fi
install -Dm755 "$bin" "${pkgdir}/usr/bin/opencode"
}
@@ -0,0 +1,16 @@
diff --git a/PKGBUILD b/PKGBUILD
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -17,6 +17,12 @@ makedepends=('git' 'bun-bin' 'go')
source=("opencode-${pkgver}.tar.gz::https://github.com/sst/opencode/archive/v${pkgver}${_subver}.tar.gz")
sha256sums=('SKIP')
+prepare() {
+ cd "opencode-${pkgver}"
+ # Change strict bun version check to >= comparison
+ sed -i 's/process\.versions\.bun !== expectedBunVersion/process.versions.bun.localeCompare(expectedBunVersion, undefined, {numeric: true}) < 0/' packages/script/src/index.ts
+}
+
build() {
cd "opencode-${pkgver}"
bun install
+39
View File
@@ -0,0 +1,39 @@
pkgbase = spotify
pkgdesc = A proprietary music streaming service
pkgver = 1.2.79.425
pkgrel = 1
epoch = 1
url = https://www.spotify.com
arch = x86_64
license = custom
depends = alsa-lib>=1.0.14
depends = gtk3
depends = libxss
depends = desktop-file-utils
depends = openssl
depends = nss
depends = at-spi2-atk
depends = libcurl-gnutls
depends = libsm
depends = libayatana-appindicator
optdepends = ffmpeg4.4: Adds support for playback of local files
optdepends = zenity: Adds support for importing local files
optdepends = libnotify: Desktop notifications
options = !strip
source = spotify-1.2.79.425-g1d0fcf61-x86_64.deb::http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_1.2.79.425.g1d0fcf61_amd64.deb
source = spotify.sh
source = spotify.protocol
source = LICENSE
source = spotify-1.2.79.425-1-Release::http://repository.spotify.com/dists/testing/Release
source = spotify-1.2.79.425-1-Release.sig::http://repository.spotify.com/dists/testing/Release.gpg
source = spotify-1.2.79.425-1-x86_64-Packages::http://repository.spotify.com/dists/testing/non-free/binary-amd64/Packages
validpgpkeys = E1096BCBFF6D418796DE78515384CE82BA52C83A
sha512sums = 5e002024bbab5db2fb494ae4a1b3b98a819e6eb485b754557fa0b0647465516a77cafa5fb97548b9f25f181980a5cfae61b896733c750acd0c7067d51b2d4225
sha512sums = da48b628a4ea925dd8521133ebf364b261b11aed252d264dde6605d915cdb631919ffe672c58534bcdb60869e5d87a49a60a8198780b99517123f0031e83fdb1
sha512sums = 999abe46766a4101e27477f5c9f69394a4bb5c097e2e048ec2c6cb93dfa1743eb436bde3768af6ba1b90eaac78ea8589d82e621f9cbe7d9ab3f41acee6e8ca20
sha512sums = 2e16f7c7b09e9ecefaa11ab38eb7a792c62ae6f33d95ab1ff46d68995316324d8c5287b0d9ce142d1cf15158e61f594e930260abb8155467af8bc25779960615
sha512sums = SKIP
sha512sums = SKIP
sha512sums = SKIP
pkgname = spotify
+349
View File
@@ -0,0 +1,349 @@
Spotify Terms and Conditions of Use
Effective as of 1 November 2016
1 Introduction
2 Changes to the Agreements
3 Enjoying Spotify
4 Rights we grant you
5 Third Party Applications
6 User-Generated Content
7 Rights you grant us
8 User guidelines
9 Infringement and reporting User Content
10 Service limitations and modifications
11 Brand Accounts
12 Spotify Support Community
13 Customer support
14 Export control
15 Payments, cancellations, and cooling off
16 Term and termination
17 Warranty and disclaimer
18 Limitation
19 Third party rights
20 Entire agreement
21 Severability and waiver
22 Assignment
23 Indemnification
24 Choice of law, mandatory arbitration and venue
25 Contact us
Hello, and welcome to our Terms and Conditions of Use. This is important and affects your legal rights, so please read them and our Privacy Policy and other terms referenced in this document carefully. We hope you’re sitting comfortably and listening to some great music. Here we go…
1 Introduction
Thanks for choosing Spotify ("Spotify", "we", "us", "our"). By signing up or otherwise using the Spotify service, websites, and software applications (together, the "Spotify Service" or "Service"), or accessing any content or material that is made available by Spotify through the Service (the "Content") you are entering into a binding contract with the Spotify entity indicated at the bottom of this document. The Spotify Service also includes the Spotify Support Community as further described in the Spotify Support Community section.
The Spotify Service includes social and interactive features. Use of the Spotify Service relies on several technical requirements.
Your agreement with us includes these Terms and Conditions of Use ("Terms") and our Privacy Policy. (The Terms, Privacy Policy, and any additional terms that you agree to, as discussed in the Entire Agreement section, are referred to together as the "Agreements".) If you wish to review the terms of the Agreements, the effective version of the Agreements can be found on Spotify’s website. You acknowledge that you have read and understood the Agreements, accept these Agreements, and agree to be bound by them. If you don’t agree with (or cannot comply with) the Agreements, then you may not use the Spotify Service or consume any Content.
Please read the Agreements carefully. They cover important information about Spotify Services provided to you and any charges, taxes, and fees we bill you. The Agreements include information about future changes to the Agreements, export controls, automatic renewals, limitations of liability, privacy information, a class action waiver, and resolution of disputes by arbitration instead of in court.
Any information that you provided during sign-up can be corrected during the sign-up process by returning to the previous screens and correcting erroneous information.
In order to use the Spotify Service and access the Content, you need to (1) be 18 or older, or be 13 or older and have your parent or guardian’s consent to the Agreements (except as set forth in the chart below), (2) have the power to enter a binding contract with us and not be barred from doing so under any applicable laws, and (3) be resident in a country where the Service is available. You also promise that any registration information that you submit to Spotify is true, accurate, and complete, and you agree to keep it that way at all times.
If you are a resident of one of the following countries, reference this chart for your country-specific age restrictions:
Country Age Requirements
Chile, Ecuador, Paraguay, Peru Must be 18 or older, or be 15 or older and have parent or guardian consent.
Brazil Must be 18 or older, or be 16 or older and have parent or guardian consent.
Nicaragua, Taiwan Must be 20 or older, or be 13 or older and have parent or guardian consent.
Bulgaria, Hungary, Germany Must be 18 or older, or be 14 or older and have parent or guardian consent.
Italy Must be 13 or older to use Free Service. To register for a Paid Subscription, you must be 18 or older, or be 13 or older and have parent or guardian consent (your parents/guardians will enter into contract on behalf of you).
Malaysia Must be 18 or older, or if 13 to 18, parent or guardian consent is required, and guardian enters into agreement.
Lithuania Must be 13 or older to use Service. For Paid Subscriptions, you must be 18 or older, or be 14 or older with parent or guardian consent. If you are 13 to 18, guardian enters into agreement.
Canada Must be 13 or older to use Service. For Paid Subscriptions, you must be age of majority in your province or territory of residence, or 13 or older with parent or guardian consent.
Spain Must be 14 or older to use Free Service. To register for a Paid Subscription, you must be 18 or older, or be 14 or older and have parent or guardian consent (your parents/guardians will enter into contract on behalf of you).
2 Changes to the Agreements
Occasionally we may, in our discretion, make changes to the Agreements. When we make material changes to the Agreements, we’ll provide you with prominent notice as appropriate under the circumstances, e.g., by displaying a prominent notice within the Service or by sending you an email. In some cases, we will notify you in advance, and your continued use of the Service after the changes have been made will constitute your acceptance of the changes. Please therefore make sure you read any such notice carefully. If you do not wish to continue using the Service under the new version of the Agreements, you may terminate the Agreements by contacting us through the Customer Service contact form.
3 Enjoying Spotify
Here’s some information about all the ways you can enjoy Spotify.
3.1 Our Services & Paid Subscriptions
Spotify provides streaming services offering a selection of music and other content. Certain Spotify services are provided to you free-of-charge. Other Spotify services require payment before you can access them. The Spotify services that may be accessed after payment are currently referred to as the "Premium Service" and the "Unlimited Service" (together, the "Paid Subscriptions"). The Spotify service that does not require payment is currently referred to as the "Free Service". You can learn more about our services by visiting our website.
The Unlimited Service may not be available to all users. We will explain which services are available to you when you are signing up for the services. If you cancel your subscription to the Unlimited Service, or if your subscription to the Unlimited Service is interrupted (for example, if you change your payment details), you may not be able to re-subscribe for the Unlimited Service. Note that the Unlimited Service may be discontinued in the future, in which case you will no longer be charged for the Service.
If you reside in Turkey, your access to the Free Service may be limited to a fixed amount of listening hours per month.
3.2 Codes and other pre-paid offers
If you have purchased or received a code, gift card, pre-paid offer or other offer provided or sold by or on behalf of Spotify for access to a Paid Subscription ("Code"), separate terms and conditions presented to you along with the Code may also apply to your access to the Service and you agree to comply with any such terms and conditions.
3.3 Trials
From time to time, we or others on our behalf may offer trials of Paid Subscriptions for a specified period without payment or at a reduced rate (a "Trial"). Spotify reserves the right, in its absolute discretion, to determine your eligibility for a Trial, and, subject to applicable laws, to withdraw or to modify a Trial at any time without prior notice and with no liability, to the greatest extent permitted under the law.
For some Trials, we’ll require you to provide your payment details to start the Trial. AT THE END OF SUCH TRIALS, WE MAY AUTOMATICALLY START TO CHARGE YOU FOR THE APPLICABLE PAID SUBSCRIPTION ON THE FIRST DAY FOLLOWING THE END OF THE TRIAL, ON A RECURRING MONTHLY BASIS. BY PROVIDING YOUR PAYMENT DETAILS IN CONJUNCTION WITH THE TRIAL, YOU AGREE TO THIS CHARGE USING SUCH PAYMENT DETAILS. IF YOU DO NOT WANT THIS CHARGE, YOU MUST CANCEL THE APPLICABLE PAID SUBSCRIPTION THROUGH YOUR SPOTIFY ACCOUNT’S SUBSCRIPTION PAGE OR TERMINATE YOUR SPOTIFY ACCOUNT BEFORE THE END OF THE TRIAL. IF YOU DO NOT WANT TO CONTINUE TO BE CHARGED ON A RECURRING MONTHLY BASIS, YOU MUST CANCEL THE APPLICABLE PAID SUBSCRIPTION THROUGH YOUR SPOTIFY ACCOUNT’S SUBSCRIPTION PAGE OR TERMINATE YOUR SPOTIFY ACCOUNT BEFORE THE END OF THE RECURRING MONTHLY PERIOD. PAID SUBSCRIPTIONS CANNOT BE TERMINATED BEFORE THE END OF THE PERIOD FOR WHICH YOU HAVE ALREADY PAID, AND EXCEPT AS EXPRESSLY PROVIDED IN THESE TERMS, SPOTIFY WILL NOT REFUND ANY FEES THAT YOU HAVE ALREADY PAID. THE LIMITATION SECTION SETS FORTH ADDITIONAL TERMS REGARDING CANCELLATION OF YOUR PAID SUBSCRIPTION.
4 Rights we grant you
The Spotify Service and the Content are the property of Spotify or Spotify's licensors. We grant you a limited, non-exclusive, revocable licence to make use of the Spotify Service, and a limited, non-exclusive, revocable licence to make personal, non-commercial, entertainment use of the Content (the "Licence"). This Licence shall remain in effect until and unless terminated by you or Spotify. You promise and agree that you are using the Content for your own personal, non-commercial, entertainment use and that you will not redistribute or transfer the Spotify Service or the Content.
The Spotify software applications and the Content are licensed, not sold, to you, and Spotify and its licensors retain ownership of all copies of the Spotify software applications and Content even after installation on your personal computers, mobile handsets, tablets, and/or other relevant devices ("Devices").
All Spotify trademarks, service marks, trade names, logos, domain names, and any other features of the Spotify brand ("Spotify Brand Features") are the sole property of Spotify or its licensors. The Agreements do not grant you any rights to use any Spotify Brand Features whether for commercial or non-commercial use.
You agree to abide by our User guidelines and not to use the Spotify Service, the Content, or any part thereof in any manner not expressly permitted by the Agreements. Except for the rights expressly granted to you in these Agreements, Spotify grants no right, title, or interest to you in the Spotify Service or Content.
Third party software (for example, open source software libraries) included in the Spotify Service are licensed to you either under the Agreements or under the relevant third party software library’s licence terms as published in the help or settings section of our desktop and mobile client and/or on our website.
5 Third Party Applications
The Spotify Service is integrated with third party applications, websites, and services ("Third Party Applications") to make available content, products, and/or services to you. These Third Party Applications may have their own terms and conditions of use and privacy policies and your use of these Third Party Applications will be governed by and subject to such terms and conditions and privacy policies. You understand and agree that Spotify does not endorse and is not responsible or liable for the behavior, features, or content of any Third Party Application or for any transaction you may enter into with the provider of any such Third Party Applications.
6 User-Generated Content
Spotify users may post, upload, and/or contribute ("post") content to the Service (which may include, for example, pictures, text, messages, information, playlist compilations, and/or other types of content) ("User Content"). For the avoidance of doubt, "User Content" includes any such content posted to the Spotify Support Community as well as any other part of the Spotify Service.
You promise that, with respect to any User Content you post on Spotify, (1) you have the right to post such User Content, and (2) such User Content, or its use by Spotify as contemplated by the Agreements, does not violate the Agreements, applicable law, or the intellectual property (including without limitation copyright), publicity, personality, or other rights of others or imply any affiliation with or endorsement of you or your User Content by Spotify or any artist, band, label, entity or individual without express written consent from such individual or entity.
Spotify may, but has no obligation to, monitor, review, or edit User Content. In all cases, Spotify reserves the right to remove or disable access to any User Content for any or no reason, including but not limited to, User Content that, in Spotify’s sole discretion, violates the Agreements. Spotify may take these actions without prior notification to you or any third party. Removal or disabling of access to User Content shall be at our sole discretion, and we do not promise to remove or disable access to any specific User Content.
You are solely responsible for all User Content that you post. Spotify is not responsible for User Content nor does it endorse any opinion contained in any User Content. YOU AGREE THAT IF ANYONE BRINGS A CLAIM AGAINST SPOTIFY RELATED TO USER CONTENT THAT YOU POST, THEN, TO THE EXTENT PERMISSIBLE UNDER LOCAL LAW, YOU WILL INDEMNIFY AND HOLD SPOTIFY HARMLESS FROM AND AGAINST ALL DAMAGES, LOSSES, AND EXPENSES OF ANY KIND (INCLUDING REASONABLE ATTORNEY FEES AND COSTS) ARISING OUT OF SUCH CLAIM.
7 Rights you grant us
In consideration for the rights granted to you under the Agreements, you grant us the right (1) to allow the Spotify Service to use the processor, bandwidth, and storage hardware on your Device in order to facilitate the operation of the Service, (2) to provide advertising and other information to you, and (3) to allow our business partners to do the same. In any part of the Spotify Service, the Content you view, including its selection and placement, may be influenced by commercial considerations, including agreements with third parties. Some Content licensed or provided to Spotify (e.g. podcasts) may contain advertising as part of the Content. In such cases, Spotify will make such Content available to you unmodified.
If you provide feedback, ideas or suggestions to Spotify in connection with the Spotify Service or Content ("Feedback"), you acknowledge that the Feedback is not confidential and you authorize Spotify to use that Feedback without restriction and without payment to you. Feedback is considered a type of User Content.
You grant Spotify a non-exclusive, transferable, sub-licensable, royalty-free, perpetual (or, in jurisdictions where this is not permitted, for a term equal to the duration of the Agreements plus twenty (20) years), irrevocable, fully paid, worldwide licence to use, reproduce, make available to the public (e.g. perform or display), publish, translate, modify, create derivative works from, and distribute any of your User Content in connection with the Service through any medium, whether alone or in combination with other content or materials, in any manner and by any means, method or technology, whether now known or hereafter created. Aside from the rights specifically granted herein, you retain ownership of all rights, including intellectual property rights, in the User Content. Where applicable and permitted under applicable law, you also agree to waive any "moral rights" (or the equivalent under applicable law) such as your right to be identified as the author of any User Content, including Feedback, and your right to object to derogatory treatment of such User Content.
8 User guidelines
Spotify respects intellectual property rights and expects you to do the same. We’ve established a few ground rules for you to follow when using the Service, to make sure Spotify stays enjoyable for everyone. Please follow these rules and encourage other users to do the same.
The following is not permitted for any reason whatsoever:
copying, redistributing, reproducing, "ripping", recording, transferring, performing or displaying to the public, broadcasting, or making available to the public any part of the Spotify Service or the Content, or otherwise making any use of the Spotify Service or the Content which is not expressly permitted under the Agreements or applicable law or which otherwise infringes the intellectual property rights (such as copyright) in the Spotify Service or the Content or any part of it;
using the Spotify Service to import or copy any local files you do not have the legal right to import or copy in this way;
transferring copies of cached Content from an authorized Device to any other Device via any means;
reverse-engineering, decompiling, disassembling, modifying, or creating derivative works based on the Spotify Service, Content or any part thereof unless permitted by applicable law;
circumventing any technology used by Spotify, its licensors, or any third party to protect the Content or the Service;
selling, renting, sublicensing or leasing of any part of the Spotify Service or the Content;
circumventing any territorial restrictions applied by Spotify or it licensors;
artificially increasing play count or otherwise manipulating the Services by using a script or other automated process;
removing or altering any copyright, trademark, or other intellectual property notices contained on or provided through the Spotify Service (including for the purpose of disguising or changing any indications of the ownership or source of any Content);
providing your password to any other person or using any other person’s username and password;
"crawling" the Spotify Service or otherwise using any automated means (including bots, scrapers, and spiders) to collect information from Spotify; or
selling a user account or playlist, or otherwise accepting any compensation, financial or otherwise, to influence the name of an account or playlist or the content included on an account or playlist.
Please respect Spotify, the owners of the Content, and other users of the Spotify Service. Don’t engage in any activity, post any User Content, or register and/or use a username, which is or includes material that:
is offensive, abusive, defamatory, pornographic, threatening, or obscene;
is illegal, or intended to promote or commit an illegal act of any kind, including but not limited to violations of intellectual property rights, privacy rights, or proprietary rights of Spotify or a third party;
includes your password or purposely includes any other user’s password or purposely includes personal data of third parties or is intended to solicit such personal data;
includes malicious content such as malware, Trojan horses, or viruses, or otherwise interferes with any user’s access to the Service;
is intended to or does harass or bully other users;
impersonates or misrepresents your affiliation with another user, person, or entity, or is otherwise fraudulent, false, deceptive, or misleading;
uses automated means to artificially promote content;
involves the transmission of unsolicited mass mailings or other forms of spam ("spam"), junk mail, chain letters, or similar, including through the Spotify inbox;
involves commercial or sales activities, such as advertising, promotions, contests, sweepstakes, or pyramid schemes, that are not expressly authorized by Spotify;
links to, references, or otherwise promotes commercial products or services, except as expressly authorized by Spotify;
interferes with or in any way disrupts the Spotify Service, tampers with, breaches, or attempts to probe, scan, or test for vulnerabilities in the Service or Spotify’s computer systems, network, usage rules, or any of Spotify’s security components, authentication measures or any other protection measures applicable to the Service, the Content or any part thereof; or
conflicts with the Agreements, as determined by Spotify.
You acknowledge and agree that posting any such User Content may result in immediate termination or suspension of your Spotify account. You also agree that Spotify may also reclaim your username for any reason.
Please be thoughtful about how you use the Spotify Service and what you share. The Spotify Service includes social and interactive features, including the ability to post User Content, share content, and make certain information about you public. Remember that shared or publicly available information may be used and re-shared by other users on Spotify or across the web, so please use Spotify carefully and be mindful of your account settings. Spotify has no responsibility for your choices to post material on the Service.
Your password protects your user account, and you are solely responsible for keeping your password confidential and secure. You understand that you are responsible for all use of your username and password on the Service. If your username or password is lost or stolen, or if you believe there has been unauthorized access to your account by third parties, please notify us immediately and change your password as soon as possible.
9 Infringement and reporting User Content
Spotify respects the rights of intellectual property owners. If you believe that any Content infringes your intellectual property rights or other rights, see Spotify’s copyright policy. If Spotify is notified by a copyright holder that any Content infringes a copyright, Spotify may in its absolute discretion take actions without prior notification to the provider of that Content. If the provider believes that the content is not infringing, the provider may submit a counter-notification to Spotify with a request to restore the removed content.
If you believe that any Content does not comply with the User guidelines, please fill out our notice form.
10 Service limitations and modifications
Spotify will make reasonable efforts to keep the Spotify Service operational. However, certain technical difficulties or maintenance may, from time to time, result in temporary interruptions. To the extent permissible under applicable law, Spotify reserves the right, periodically and at any time, to modify or discontinue, temporarily or permanently, functions and features of the Spotify Service, with or without notice, all without liability to you, except where prohibited by law, for any interruption, modification, or discontinuation of the Spotify Service or any function or feature thereof. Notwithstanding the foregoing, if you have prepaid fees for Paid Subscriptions that Spotify permanently discontinues prior to the end of the Pre-Paid Period (defined in the Payments, cancellations, and cooling off section), Spotify will refund you the prepaid fees for the Pre-Paid Period after such discontinuation. You understand, agree, and accept that Spotify has no obligation to maintain, support, upgrade, or update the Service, or to provide all or any specific content through the Service. This section will be enforced to the extent permissible by applicable law. Spotify and/or the owners of any Content may, from time to time, remove any such Content without notice to the extent permitted by applicable law.
11 Brand Accounts
If you establish a Spotify account on behalf of a company, organization, entity, or brand (a "Brand", and such account a "Brand Account"), the terms "you" and "your", as used throughout the Agreements, apply to both you and the Brand, as applicable.
If you open a Brand Account, you represent and warrant that you are authorized to grant all permissions and licences provided in the Agreements and to bind the Brand to the Agreements.
11.1 Following
The Brand may only follow users who first follow the Brand; and the Brand may not take any action that implies an endorsement or relationship between the Brand and the followed user, unless the Brand has independently obtained the rights to imply such an endorsement. Upon Spotify’s request, in its sole discretion, a Brand must cease following a user.
11.2 Listening
The Brand may not stream media.
11.3 Messaging
The Brand may only send messages to users who first send messages to the Brand.
11.4 Brand Playlists and Sharing
The Brand may not create or share any Spotify playlists, whether within the Spotify Service or elsewhere, that imply an endorsement or relationship between the Brand and any artist or any other party, unless the Brand has independently obtained the rights to imply such an endorsement. Brands may wish to consult Spotify’s Brand Playlist Guidelines.
12 Spotify Support Community
The Spotify Support Community is a place for discussions and exchange of information, tips, and other materials related to the Spotify Service. In order to use the Spotify Support Community, you must (1) have an existing Spotify account; and (2) authenticate your Spotify account for use on the Support Community (a "Spotify Support Account"). Instructions for creating a Spotify Support Account can be found on the Community registration page. In addition to the Agreements, you also agree to adhere to the Spotify Support Community Guidelines that you will be presented with upon registration (the "Support Community Guidelines") when using the Spotify Support Community. If you do not agree to the Agreements or the Support Community Guidelines, you may not use the Spotify Support Community.
12.1 Spotify Support Accounts
By creating a Spotify Support Account, you confirm that any registration information that you submit to Spotify is true, accurate, and complete and that you will update such information in order to keep it current. It is strictly prohibited to include information in your profile that suggests that you are a Spotify employee or moderator or to otherwise pose as such an employee or moderator when using the Spotify Support Community. You also acknowledge and agree that Spotify may remove or reclaim your username at any time if Spotify in its absolute discretion considers such action appropriate.
12.2 No official support
No User Content or other content posted by Spotify employees, moderators and/or representatives on the Spotify Support Community should be construed as official support provided by Spotify. For details regarding official support, see the section Customer Support. Any content provided or made available to you on the Spotify Support Community by Spotify employees, moderators, and/or representatives is provided on an "as is" basis without warranties of any kind.
You acknowledge that opinions expressed in User Content on the Spotify Support Community are those of contributors of such User Content only and do not reflect the opinions or policies of Spotify or any of its officers, shareholders, employees, agents, directors, subsidiaries, affiliates, suppliers, or licensors.
12.3 Reward Program
The Spotify Support Community features a reward system whereby Spotify, in its sole discretion, may reward users based on the amount of "Kudos" received or quality of responses by a user. You agree to only give Kudos to other users (and not to yourself) and only when deserved, and to refrain from any attempts to manipulate the reward system, e.g., by creating multiple accounts or artificial responses. You acknowledge that Spotify’s decision in respect of any reward shall be final and binding.
13 Customer support
For customer support with account-related and payment-related questions ("Customer Support Queries"), please submit a ticket to our customer service department using the Customer Service contact form on the About Us section of our website. We will use reasonable endeavours to respond to all Customer Support Queries within a reasonable time frame but we make no guarantees or warranties of any kind that any Customer Support Queries will be responded to within any particular time frame and/or that we will be able to satisfactorily answer any such queries.
14 Export control
Spotify’s products may be subject to U.S. export and re-export control laws and regulations or similar laws applicable in other jurisdictions, including the Export Administration Regulations ("EAR") maintained by the U.S. Department of Commerce, trade and economic sanctions maintained by the Treasury Department’s Office of Foreign Assets Control ("OFAC"), and the International Traffic in Arms Regulations ("ITAR") maintained by the Department of State. You warrant that you are (1) not located in Cuba, Iran, North Korea, Sudan, or Syria; and (2) are not a denied party as specified in the regulations listed above.
You agree to comply with all applicable export and reexport control laws and regulations, including the EAR, trade and economic sanctions maintained by OFAC, and the ITAR. Specifically, you agree that you shall not – directly or indirectly – sell, export, reexport, transfer, divert, or otherwise dispose of any products, software, or technology (including products derived from or based on such technology) received from Spotify under the Agreements to any destination, entity, or person prohibited by any applicable laws or regulations of the United States or any other jurisdiction without obtaining prior authorization from the competent government authorities as required by those laws and regulations. This export control clause shall survive termination or cancellation of the Agreements.
15 Payments, cancellations, and cooling off
Paid Subscriptions can be purchased directly from Spotify or through a third party, such as a telephone company, either by (1) paying a monthly subscription fee; or (2) pre-payment giving you access to the Spotify Service for a specific time period ("Pre-Paid Period"). If you have purchased a Paid Subscription using a Code, your Paid Subscription will automatically terminate at the end of the Pre-Paid Period, or when there is an insufficient pre-paid balance to pay for the Service.
When you register for a Paid Subscription, Trial, or Code online, you consent to get access to Spotify Premium immediately. If you reside outside the United States and register for a Paid Subscription or Code online, you may change your mind for any or no reason and receive a full refund of all monies paid within fourteen (14) days starting from the day you sign-up for the relevant service (the "Cooling-off Period"). Refunds will not, however, be provided if you have accessed Spotify at any time during the Cooling-off Period.
Unless your Paid Subscription has been purchased as a Pre-Paid Period, your payment to Spotify will automatically renew at the end of the subscription period, unless you cancel your Paid Subscription through your subscription page before the end of the current subscription period. The cancellation will take effect the day after the last day of the current subscription period, and you will be downgraded to the Free Service. However, if you cancel your payment or Paid Subscription and/or terminate any of the Agreements (1) after you have accessed Spotify during the Cooling-off Period, or (2) after the Cooling-off Period is over (where applicable), or (3) before the end of the current subscription period, we will not refund any subscription fees already paid to us. The refund method will depend upon the payment method.
If you wish to receive a full refund of all monies paid before the Cooling-off Period is over, you must contact Customer Support.
If you have purchased your Paid Subscription through a third party, your subscription is also subject to the terms of your agreement with that third party (in addition to these Terms). To cancel your subscription, you must cancel directly with that third party.
Spotify may change the price for the Paid Subscriptions, Pre-Paid Period (for periods not yet paid for), or Codes from time to time, and will communicate any price changes to you in advance and, if applicable, how to accept those changes. Price changes for Paid Subscriptions will take effect at the start of the next subscription period following the date of the price change. As permitted by local law, you accept the new price by continuing to use the Spotify Service after the price change takes effect. If you do not agree with the price changes, you have the right to reject the change by unsubscribing from the Spotify Service prior to the price change going into effect. Please therefore make sure you read any such notification of price changes carefully.
16 Term and termination
The Agreements will continue to apply to you until terminated by either you or Spotify. However, you acknowledge and agree that the perpetual licence granted by you in relation to User Content, including Feedback, is irrevocable and will therefore continue after expiry or termination of any of the Agreements for any reason. Spotify may terminate the Agreements or suspend your access to the Spotify Service at any time, including in the event of your actual or suspected unauthorised use of the Spotify Service and/or Content, or non-compliance with the Agreements. If you or Spotify terminate the Agreements, or if Spotify suspends your access to the Spotify Service, you agree that Spotify shall have no liability or responsibility to you and Spotify will not refund any amounts that you have already paid, to the fullest extent permitted under applicable law. To learn how to terminate your Spotify account, please contact us through the Customer Service contact form which is available on our About Us page. This section will be enforced to the extent permissible by applicable law. You may terminate the Agreements at any time.
Sections 6, 7, 8, 10, 14, 16, 17, 18, 19, 20, 21, 22, 23, and 24 herein, as well as any other sections of the Agreements that, either explicitly or by their nature, must remain in effect even after termination of the Agreements, shall survive termination.
17 Warranty and disclaimer
WE ENDEAVOUR TO PROVIDE THE BEST SERVICE WE CAN, BUT YOU UNDERSTAND AND AGREE THAT THE SPOTIFY SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT EXPRESS OR IMPLIED WARRANTY OR CONDITION OF ANY KIND. YOU USE THE SPOTIFY SERVICE AT YOUR OWN RISK. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, SPOTIFY AND ALL OWNERS OF THE CONTENT MAKE NO REPRESENTATIONS AND DISCLAIM ANY WARRANTIES OR CONDITIONS OF SATISFACTORY QUALITY, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. NEITHER SPOTIFY NOR ANY OWNER OF CONTENT WARRANTS THAT THE SPOTIFY SERVICE IS FREE OF MALWARE OR OTHER HARMFUL COMPONENTS. IN ADDITION, SPOTIFY MAKES NO REPRESENTATION NOR DOES IT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY THIRD PARTY APPLICATIONS (OR THE CONTENT THEREOF), USER CONTENT, OR ANY OTHER PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY ON OR THROUGH THE SPOTIFY SERVICE OR ANY HYPERLINKED WEBSITE, OR FEATURED IN ANY BANNER OR OTHER ADVERTISING. YOU UNDERSTAND AND AGREE THAT SPOTIFY IS NOT RESPONSIBLE OR LIABLE FOR ANY TRANSACTION BETWEEN YOU AND THIRD PARTY PROVIDERS OF THIRD PARTY APPLICATIONS OR PRODUCTS OR SERVICES ADVERTISED ON OR THROUGH THE SPOTIFY SERVICE. AS WITH ANY PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE. NO ADVICE OR INFORMATION WHETHER ORAL OR IN WRITING OBTAINED BY YOU FROM SPOTIFY SHALL CREATE ANY WARRANTY ON BEHALF OF SPOTIFY IN THIS REGARD. SOME ASPECTS OF THIS SECTION MAY NOT APPLY IN SOME JURISDICTIONS IF PROHIBITED BY APPLICABLE LAW.
THIS DOES NOT AFFECT YOUR STATUTORY RIGHTS AS A CONSUMER.
18 Limitation
YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, YOUR SOLE AND EXCLUSIVE REMEDY FOR ANY PROBLEMS OR DISSATISFACTION WITH THE SPOTIFY SERVICE IS TO UNINSTALL ANY SPOTIFY SOFTWARE AND TO STOP USING THE SPOTIFY SERVICE. WHILE SPOTIFY ACCEPTS NO RESPONSIBILITY FOR THIRD PARTY APPLICATIONS OR THE CONTENT THEREOF, AND WHILE YOUR RELATIONSHIP WITH SUCH THIRD PARTY APPLICATIONS MAY BE GOVERNED BY SEPARATE AGREEMENTS WITH SUCH THIRD PARTIES, TO THE EXTENT PERMITTED BY APPLICABLE LAW, YOUR SOLE AND EXCLUSIVE REMEDY, AS WITH RESPECT TO SPOTIFY, FOR ANY PROBLEMS OR DISSATISFACTION WITH THIRD PARTY APPLICATIONS OR THE CONTENT THEREOF, IS TO UNINSTALL AND/OR STOP USING ANY SUCH THIRD PARTY APPLICATIONS.
TO THE FULLEST EXTENT PERMITTED BY LAW, IN NO EVENT WILL SPOTIFY, ITS OFFICERS, SHAREHOLDERS, EMPLOYEES, AGENTS, DIRECTORS, SUBSIDIARIES, AFFILIATES, SUCCESSORS, ASSIGNS, SUPPLIERS, OR LICENSORS BE LIABLE FOR (1) ANY INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES; (2) ANY LOSS OF USE, DATA, BUSINESS, OR PROFITS (WHETHER DIRECT OR INDIRECT), IN ALL CASES ARISING OUT OF THE USE OR INABILITY TO USE THE SPOTIFY SERVICE, THIRD PARTY APPLICATIONS, OR THIRD PARTY APPLICATION CONTENT, REGARDLESS OF LEGAL THEORY, WITHOUT REGARD TO WHETHER SPOTIFY HAS BEEN WARNED OF THE POSSIBILITY OF THOSE DAMAGES, AND EVEN IF A REMEDY FAILS OF ITS ESSENTIAL PURPOSE; OR (3) AGGREGATE LIABILITY FOR ALL CLAIMS RELATING TO THE SPOTIFY SERVICE, THIRD PARTY APPLICATIONS, OR THIRD PARTY APPLICATION CONTENT MORE THAN THE AMOUNTS PAID BY YOU TO SPOTIFY DURING THE PRIOR TWELVE MONTHS IN QUESTION, TO THE EXTENT PERMISSIBLE BY APPLICABLE LAW.
Nothing in the Agreements removes or limits Spotify’s liability for fraud, fraudulent misrepresentation, death or personal injury caused by its negligence, and, if required by applicable law, gross negligence. Some aspects of this section may not apply in some jurisdictions if prohibited by applicable law.
19 Third party rights
You acknowledge and agree that the owners of the Content and certain distributors (such as app store providers) are intended beneficiaries of the Agreements and have the right to enforce the Agreements directly against you. Other than as set out in this section, the Agreements are not intended to grant rights to anyone except you and Spotify, and in no event shall the Agreements create any third party beneficiary rights. Furthermore, the rights to terminate, rescind, or agree to any variation, waiver, or settlement of the Agreements are not subject to the consent of any other person.
If you have downloaded the App from the Apple, Inc. ("Apple") App Store or if you are using the App on an iOS device, you acknowledge that you have read, understood, and agree to the following notice regarding Apple. This Agreement is between you and Spotify only, not with Apple, and Apple is not responsible for the Service and the content thereof. Apple has no obligation whatsoever to furnish any maintenance and support services with respect to the Service. In the event of any failure of the Service to conform to any applicable warranty, then you may notify Apple and Apple will refund any applicable purchase price for the App to you; and, to the maximum extent permitted by applicable law, Apple has no other warranty obligation whatsoever with respect to the Service. Apple is not responsible for addressing any claims by you or any third party relating to the Service or your possession and/or use of the Service, including, but not limited to: (1) product liability claims; (2) any claim that the Service fails to conform to any applicable legal or regulatory requirement; and (3) claims arising under consumer protection or similar legislation. Apple is not responsible for the investigation, defense, settlement and discharge of any third party claim that the Service and/or your possession and use of the App infringe that third party’s intellectual property rights. You agree to comply with any applicable third party terms, when using the Service. Apple, and Apple’s subsidiaries, are third party beneficiaries of this Agreement, and upon your acceptance of this Agreement, Apple will have the right (and will be deemed to have accepted the right) to enforce this Agreement against you as a third party beneficiary of this Agreement. You hereby represent and warrant that (1) you are not located in a country that is subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a "terrorist supporting" country; and (2) you are not listed on any U.S. Government list of prohibited or restricted parties.
20 Entire agreement
Other than as stated in this section or as explicitly agreed upon in writing between you and Spotify, the Agreements constitute all the terms and conditions agreed upon between you and Spotify and supersede any prior agreements in relation to the subject matter of these Agreements, whether written or oral.
Please note, however, that other aspects of your use of the Spotify Service may be governed by additional agreements. That could include, for example, access to the Spotify Service as a result of a gift card or free or discounted Trials. When you are presented with an offer for such aspects of your use, you will be presented with any related additional agreement, and you may have an opportunity to agree to additional terms. Some of those additional terms are listed on Spotify’s website. To the extent that there is any irreconcilable conflict between any additional terms and these Terms, the additional terms shall prevail.
21 Severability and waiver
Unless as otherwise stated in the Agreements, should any provision of the Agreements be held invalid or unenforceable for any reason or to any extent, such invalidity or enforceability shall not in any manner affect or render invalid or unenforceable the remaining provisions of the Agreements, and the application of that provision shall be enforced to the extent permitted by law.
Any failure by Spotify or any third party beneficiary to enforce the Agreements or any provision thereof shall not waive Spotify’s or the applicable third party beneficiary’s right to do so.
22 Assignment
Spotify may assign the Agreements or any part of them, and Spotify may delegate any of its obligations under the Agreements. You may not assign the Agreements or any part of them, nor transfer or sub-license your rights under the Agreements, to any third party.
23 Indemnification
To the fullest extent permitted by applicable law, you agree to indemnify and hold Spotify harmless from and against all damages, losses, and expenses of any kind (including reasonable attorney fees and costs) arising out of: (1) your breach of this Agreement; (2) any User Content; (3) any activity in which you engage on or through the Spotify Service; and (4) your violation of any law or the rights of a third party.
24 Choice of law, mandatory arbitration and venue
24.1 Governing Law / Jurisdiction
Unless otherwise required by a mandatory law of a member state of the European Union or any other jurisdiction, the Agreements (and any non-contractual disputes/claims arising out of or in connection with them) are subject to the laws of the state or country listed below, without regard to choice or conflicts of law principles.
Further, you and Spotify agree to the jurisdiction of the courts listed below to resolve any dispute, claim, or controversy that arises in connection with the Agreements (and any non-contractual disputes/claims arising out of or in connection with them). (In some cases, that jurisdiction will be "exclusive", meaning that no other countries’ courts can preside over the matter; have jurisdiction; in other cases, the jurisdiction is "non-exclusive", meaning that other countries’ courts may have jurisdiction as well. This is indicated in the chart as well.)
Country Choice of Law Jurisdiction
Poland, Italy Laws of Sweden Exclusive; Courts of Local Country
Turkey Laws of Sweden Non-exclusive; Courts and other tribunals in the Republic of Turkey
Brazil Laws of Brazil Exclusive; State and Federal Courts of São Paulo, State of São Paulo, Brazil
Canada Laws of the Province of Ontario Exclusive; Courts of Ontario, Canada
United States, Argentina, Bolivia, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, El Salvador, Guatemala, Honduras, Nicaragua, Panama, Paraguay, Peru, Uruguay State of California, United States Exclusive; State and Federal Courts of San Francisco County, CA or New York, NY
Estonia, Hong Kong, Latvia, Lithuania Laws of Sweden Non-exclusive; Courts of Sweden
Spain Laws of Spain Exclusive; Courts of the consumer’s current domicile in Spain.
All remaining countries Laws of Sweden Exclusive; Courts of Sweden
Spotify does not accept any codes of conduct as mandatory in connection with the services provided under these Agreements.
24.2 CLASS ACTION WAIVER
WHERE PERMITTED UNDER THE APPLICABLE LAW, YOU AND SPOTIFY AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE ACTION. Unless both you and Spotify agree, no arbitrator or judge may consolidate more than one person’s claims or otherwise preside over any form of a representative or class proceeding.
24.3 ARBITRATION
If you are located in, are based in, have offices in, or do business in a jurisdiction in which this Section 24.3. is enforceable, the following mandatory arbitration provisions apply to you:
24.3.1 Dispute resolution and arbitration
You and Spotify agree that any dispute, claim, or controversy between you and Spotify arising in connection with or relating in any way to these Agreements or to your relationship with Spotify as a user of the Service (whether based in contract, tort, statute, fraud, misrepresentation, or any other legal theory, and whether the claims arise during or after the termination of the Agreements) will be determined by mandatory binding individual arbitration. Arbitration is more informal than a lawsuit in court. THERE IS NO JUDGE OR JURY IN ARBITRATION, AND COURT REVIEW OF AN ARBITRATION AWARD IS LIMITED. There may be more limited discovery than in court. The arbitrator must follow this agreement and can award the same damages and relief as a court (including attorney fees), except that the arbitrator may not award declaratory or injunctive relief benefiting anyone but the parties to the arbitration. This arbitration provision will survive termination of the Agreements.
24.3.2 Exceptions
Notwithstanding clause (24.3.1) above, you and Spotify both agree that nothing herein will be deemed to waive, preclude, or otherwise limit either of our rights, at any time, to (1) bring an individual action in small claims court, (2) pursue enforcement actions through applicable federal, state, or local agencies where such actions are available, (3) seek injunctive relief in a court of law, or (4) to file suit in a court of law to address intellectual property infringement claims.
24.3.3 Arbitration rules
Either you or we may start arbitration proceedings. Any arbitration between you and Spotify will be finally settled under the Rules of Arbitration of the International Chamber of Commerce (the "ICC") then in force (the "ICC Rules") by one or more arbitrators appointed in accordance with the ICC Rules, as modified by these Agreements, and will be administered by the International Court of Arbitration of the ICC.
Any arbitration will be conducted in the English language and unless otherwise required by a mandatory law of a member state of the European Union or any other jurisdiction, the law to be applied in any arbitration shall be the law of the State of California, United States, without regard to choice or conflicts of law principles.
24.3.4 Time for filing
Any arbitration must be commenced by filing a demand for arbitration within ONE (1) YEAR after the date the party asserting the claim first knows or reasonably should know of the act, omission, or default giving rise to the claim; and there shall be no right to any remedy for any claim not asserted within that time period. If applicable law prohibits a one-year limitation period for asserting claims, any claim must be asserted within the shortest time period permitted by applicable law.
24.3.5 Notice; Process
A party who intends to seek arbitration must first send a written notice of the dispute to the other, by certified mail or Federal Express (signature required), or in the event that we do not have a physical address on file for you, by electronic mail ("Notice"). Spotify's address for Notice is: Spotify, Attn: General Counsel, 45 W. 18th Street, 7th Floor, New York, New York 10011, USA. The Notice must (1) describe the nature and basis of the claim or dispute; and (2) set forth the specific relief sought ("Demand"). We agree to use good faith efforts to resolve the claim directly, but if we do not reach an agreement to do so within 30 days after the Notice is received, you or Spotify may commence an arbitration proceeding. During the arbitration, the amount of any settlement offer made by you or Spotify shall not be disclosed to the arbitrator until after the arbitrator makes a final decision and award, if any. In the event our dispute is finally resolved through arbitration in your favor, Spotify shall pay you (1) the amount awarded by the arbitrator, if any, (2) the last written settlement amount offered by Spotify in settlement of the dispute prior to the arbitrator’s award; or (3) $1,000.00, whichever is greater. All documents and information disclosed in the course of the arbitration shall be kept strictly confidential by the recipient and shall not be used by the recipient for any purpose other than for purposes of the arbitration or the enforcement of arbitrator’s decision and award and shall not be disclosed except in confidence to persons who have a need to know for such purposes or as required by applicable law. Except as required to enforce the arbitrator’s decision and award, neither you nor Spotify shall make any public announcement or public comment or originate any publicity concerning the arbitration, including, but not limited to, the fact that the parties are in dispute, the existence of the arbitration, or any decision or award of the arbitrator.
24.3.6 Modifications
In the event that Spotify makes any future change to this arbitration provision (other than a change to Spotify's address for Notice), you may reject any such change by sending us written notice within 30 days of the change to Spotify's address for Notice, in which case your account with Spotify shall be immediately terminated and this arbitration provision, as in effect immediately prior to the amendments you reject, shall survive.
24.3.7 Enforceability
If the class action waiver at Section 24.2 is found to be unenforceable in arbitration or if any part of this Section 24.3 is found to be invalid or unenforceable, then the entirety of this Section 24.3 shall be null and void and, in such case, the parties agree that the exclusive jurisdiction and venue described in Section 24.1 shall govern any action arising out of or related to the Agreements.
25 Contact us
If you have any questions concerning the Spotify Service or the Agreements, please contact Spotify customer service by visiting the About Us section of our website.
If you are a California resident, you may have the Agreements mailed to you electronically by sending a letter to Spotify, Attn: General Counsel, 45 West 18th Street, 7th Floor, New York, New York 10011, USA with your email address and a request for the Agreements. In addition, under California Civil Code Section 1789.3, you may contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 N. Market Blvd., Suite S-202, Sacramento, California 95834, or by telephone at 1-800-952-5210 in order to resolve a complaint regarding the service or to receive further information regarding use of the service.
Thank you for reading our Terms. We hope you enjoy Spotify!
Contracting entity:
Spotify AB
Birger Jarlsgatan 61, 113 56 Stockholm
Sweden
SE556703748501
(C) Spotify AB.
+98
View File
@@ -0,0 +1,98 @@
# Maintainer: Christian Heusel <christian@heusel.eu>
# Maintainer: Robin Candau <antiz@archlinux.org>
# Contributor: NicoHood <archlinux {cat} nicohood {dog} de>
# Contributor: TobFromme < TobFromme {hat} pm {dont} me >
# Contributor: Ashley Whetter <(firstname) @ awhetter.co.uk>
# Contributor: Eothred <yngve.levinsen@gmail.com>
pkgname=spotify
pkgver='1.2.79.425'
epoch=1
_commit=g1d0fcf61
pkgrel=1
pkgdesc='A proprietary music streaming service'
arch=('x86_64')
license=('custom')
url='https://www.spotify.com'
depends=('alsa-lib>=1.0.14' 'gtk3' 'libxss' 'desktop-file-utils' 'openssl' 'nss' 'at-spi2-atk' 'libcurl-gnutls' 'libsm' 'libayatana-appindicator')
optdepends=('ffmpeg4.4: Adds support for playback of local files'
'zenity: Adds support for importing local files'
'libnotify: Desktop notifications')
options=('!strip')
# NOTE: We switched from stable to testing on 18th march, as the spotify
# stable repository is always outdated. Testing seems to be in sync with snap:
# https://snapcraft.io/spotify
# http://repository.spotify.com/dists/testing/Release
# http://repository.spotify.com/dists/testing/non-free/binary-amd64/Packages
# http://repository.spotify.com/dists/testing/Release.gpg
source=("${pkgname}-${pkgver}-${_commit}-x86_64.deb::http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_${pkgver}.${_commit}_amd64.deb"
"spotify.sh"
"spotify.protocol"
"LICENSE"
# GPG signature check
"${pkgname}-${pkgver}-${pkgrel}-Release::http://repository.spotify.com/dists/testing/Release"
"${pkgname}-${pkgver}-${pkgrel}-Release.sig::http://repository.spotify.com/dists/testing/Release.gpg"
"${pkgname}-${pkgver}-${pkgrel}-x86_64-Packages::http://repository.spotify.com/dists/testing/non-free/binary-amd64/Packages")
sha512sums=('5e002024bbab5db2fb494ae4a1b3b98a819e6eb485b754557fa0b0647465516a77cafa5fb97548b9f25f181980a5cfae61b896733c750acd0c7067d51b2d4225'
'da48b628a4ea925dd8521133ebf364b261b11aed252d264dde6605d915cdb631919ffe672c58534bcdb60869e5d87a49a60a8198780b99517123f0031e83fdb1'
'999abe46766a4101e27477f5c9f69394a4bb5c097e2e048ec2c6cb93dfa1743eb436bde3768af6ba1b90eaac78ea8589d82e621f9cbe7d9ab3f41acee6e8ca20'
'2e16f7c7b09e9ecefaa11ab38eb7a792c62ae6f33d95ab1ff46d68995316324d8c5287b0d9ce142d1cf15158e61f594e930260abb8155467af8bc25779960615'
'SKIP'
'SKIP'
'SKIP')
# Import key with:
# curl -sS https://download.spotify.com/debian/pubkey_5384CE82BA52C83A.gpg | gpg --import -
validpgpkeys=('E1096BCBFF6D418796DE78515384CE82BA52C83A') # Spotify Public Repository Signing Key <tux@spotify.com>
# Old Keys:
# 63CBEEC9006602088F9B19326224F9941A8AA6D1
# E27409F51D1B66337F2D2F417A3A762FAFD4A51F
# F9A211976ED662F00E59361E5E3C45D7B312C643
# 8FD3D9A8D3800305A9FFF259D1742AD60D811D58
# 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90
# 2EBF997C15BDA244B6EBF5D84773BD5E130D1D45
# B420FD3777CCE3A7F0076B55C85668DF69375001
prepare() {
# Validate hashes from the PGP signed "Release" file
echo "$(grep non-free/binary-amd64/Packages ${pkgname}-${pkgver}-${pkgrel}-Release | tail -n 2 | head -n 1 | awk '{print $1}') ${pkgname}-${pkgver}-${pkgrel}-x86_64-Packages" \
> "${pkgname}-${pkgver}-x86_64-Packages.sha256"
sha256sum -c "${pkgname}-${pkgver}-x86_64-Packages.sha256"
echo "$(grep SHA512 ${pkgname}-${pkgver}-${pkgrel}-x86_64-Packages | head -n 1 | awk '{print $2}') ${pkgname}-${pkgver}-${_commit}-x86_64.deb" \
> "${pkgname}-${pkgver}-x86_64.deb.sha512"
sha512sum -c "${pkgname}-${pkgver}-x86_64.deb.sha512"
}
package() {
tar -xzf data.tar.gz --no-same-owner -C "${pkgdir}"
# Enable spotify to open URLs from the webapp
sed -i 's/^Exec=.*/Exec=spotify --uri=%u/' "${pkgdir}/usr/share/spotify/spotify.desktop"
install -Dm 644 "${pkgdir}/usr/share/spotify/spotify.desktop" "${pkgdir}/usr/share/applications/spotify.desktop"
install -Dm 644 "${pkgdir}/usr/share/spotify/icons/spotify-linux-512.png" "${pkgdir}/usr/share/pixmaps/spotify-client.png"
for size in 22 24 32 48 64 128 256 512; do
install -Dm 644 "${pkgdir}/usr/share/spotify/icons/spotify-linux-${size}.png" \
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/spotify.png"
done
# Move spotify binary to its proper location
mkdir -p "${pkgdir}/opt/spotify"
mv "${pkgdir}/usr/share/spotify" "${pkgdir}/opt/"
# Copy launch script which allows the use of custom flags
install -Dm 755 spotify.sh "${pkgdir}/usr/bin/spotify"
# Copy protocol file for KDE
install -Dm 644 spotify.protocol "${pkgdir}/usr/share/kservices5/spotify.protocol"
# Install license
# https://www.spotify.com/legal/end-user-agreement
install -Dm 644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
# Fix permissions
chmod -R go-w "${pkgdir}"
}
@@ -0,0 +1,29 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGc0vwABEADQtWcyZgno2mdh35eZDzL676CCFLwCnai5HcLTo9l1ZlcNPzvL
ql6Fj63ZBpq9Y4Ucf6rqNo4uMIRJKC6ybVGhxzzyHijEXwhN+clFhFQPzZQEfyU/
jEgiOL8R8rAkItlNeumkrvX5Q+TpSkQr8Yh518fMnbKtFnlKEI3Mu3XyDvisGjef
1ES6HTAEbzHSbBAnp0+mzNPQ1NV5kJtRQ2S7eyd31rwRFKEBHzs8rgwti0af6OeH
pnBiaWnB2KznRX1ZR2gU6pKFwx8oraaw876IL2WxpPyhwtDZP6rjtM+GIyd8BmWT
GSOY82RCdaKT+w2/iJl6qYO2fBlphemH8imdhBGbAC1+oGnMjPxOHw6ClTV1aDm6
nrovFsmyum6F9ou0qA32KIiy4sznPDpGsqIwRcSawDQS9PlCrV02RVtn6uk1Ylpu
s/Fle29ia8cJDosYq4g+KNiC8Z1a4ripqQlSH/XXiem2iKW0C0S/VOE4v6HiON48
zQBN/B7q4O+D95YehqboSp02gUQwLOUDk1+WrMDIHsQl76QXY9izrYy5caq9cZBy
klGDC0SaEZGbNeKywa6GYejQxPuTBbeQY+CHZgxPkOd35KecighIgdWaI9uiXHEI
wjod7zZVHvQWP20y160WNakYHRJUOUOIUY5C7Yl8cwafNuYJ+J6/ue5JOwARAQAB
tDdTcG90aWZ5IFB1YmxpYyBSZXBvc2l0b3J5IFNpZ25pbmcgS2V5IDx0dXhAc3Bv
dGlmeS5jb20+iQJUBBMBCAA+FiEEtCD9N3fM46fwB2tVyFZo32k3UAEFAmc0vwAC
GwMFCQJRQwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyFZo32k3UAGSoxAA
rS4ewvpj0vE9jp3qG7cAM5bIkU6H4/cWBED5/l9n/0kQhPTUeeNKE8T52rbdOard
jd25J9CsyaItbDJ7LkE6acRm0V/qtmE7XwlrhLcCUe0qEyCeXWXtuGCiTpbBlZG/
qJCP6AuiEGBmKlh9ToagMUM/yrng68pgVJXWe/b39GP21mrTDu3H56rXd7jrPO2n
jzlxxhEJq9NxD8+PV5XUFefK2C35idgUhX1yWDEZ9YUBCYPwrBxTr0gEhcIhFZzo
S30T3lG8oU7X97+Kk4QloiV4zsLH+7Aer/F1AMVRe+MVTlDwLlpnusKwAI+Syy3u
aqKp2JGR14JmG3w/PsuzhqJ9rJC1UNYUY5tlIpy8Lje+PP7ag36DteSvzuHSNDMa
feSk2Bve6UKng+zYq0dOLI7NiIQl7KZsHzSGzcskfx3wSdaVw7it3ssvoscul9mM
uhqz4qoCXCXv4N2t49H1XgQtrZ54s/pJ4V9H2G/Xv85qKBrnlSi5xv43w6KbY1cX
1upY90GkKwdhWZu+EueIXNvzA1VkquCSuLmlzUdnCZE7iNTRLDfm/A4afnC8f9K0
z7qRIk/bCQAXTKngHPwd0qG3yD4z/a3F0W/+PNXIwCzCTC6/kr4goP6gxUkN5b2e
TW2bDjIXULm9fpQsWJ0Y+/zCl69tZHtQ1Nop/3Nrl1M=
=Muvn
-----END PGP PUBLIC KEY BLOCK-----
+11
View File
@@ -0,0 +1,11 @@
[Protocol]
exec=/usr/bin/spotify -uri "%u"
protocol=spotify
input=none
output=none
helper=true
listing=false
reading=false
writing=false
makedir=false
deleting=false
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Substitute XDG_CONFIG_HOME by ~/.config if the env var is unset or empty
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-~/.config}
# Allow users to override command-line options
if [[ -f "${XDG_CONFIG_HOME}/spotify-flags.conf" ]]; then
mapfile -t SPOTIFY_USER_FLAGS <<< "$(grep -v '^#' "${XDG_CONFIG_HOME}/spotify-flags.conf")"
echo "User flags:" "${SPOTIFY_USER_FLAGS[@]}"
fi
# Launch Spotify with the given flags
exec /opt/spotify/spotify "${SPOTIFY_USER_FLAGS[@]}" "$@"
+20
View File
@@ -0,0 +1,20 @@
pkgbase = sublime-text-4
pkgdesc = Sophisticated text editor for code, html and prose - stable build
pkgver = 4.4200
pkgrel = 1
url = https://www.sublimetext.com/download
arch = x86_64
arch = aarch64
license = custom
depends = libpng
depends = gtk3
provides = sublime-text
conflicts = sublime-text
source = sublime-text-4.sh
sha512sums = ac56e9b7dddaebb3d222795cfc644109c93cc3f79695b8f9ee56022c74fe04a1134dd54cab07c74ff1f96b783cb3dbc026c16095552f1d2dd83115ea274dc2e9
source_x86_64 = sublime_text_4_4_4200_1_x64.tar.xz::https://download.sublimetext.com/sublime_text_build_4200_x64.tar.xz
sha512sums_x86_64 = 0a6ff4be7ae35ce80d568a2bf8dc5ed6fcf9f845517f7a1b8b24f180842f72ef16f9792e91fc70a277cfaf66bf1be482bb1328c98252d7c524d3412cfe9f22e3
source_aarch64 = sublime_text_4_4_4200_1_arm64.tar.xz::https://download.sublimetext.com/sublime_text_build_4200_arm64.tar.xz
sha512sums_aarch64 = bb8f314e3c0ffff2536f91331fe43fe55d42fed27fca32bced5e779331296c7ee4b619dacc0193bc7f2cfa16a770177a81783ed959c786522e9688b028c7c221
pkgname = sublime-text-4
+43
View File
@@ -0,0 +1,43 @@
# Maintainer: Manuel Hüsers <aur@huesers.de>
pkgname=sublime-text-4
pkgver=4.4200
pkgrel=1
pkgdesc='Sophisticated text editor for code, html and prose - stable build'
arch=('x86_64' 'aarch64')
url='https://www.sublimetext.com/download'
license=('custom')
depends=('libpng' 'gtk3')
conflicts=('sublime-text')
provides=('sublime-text')
source=("${pkgname}.sh")
source_x86_64=("${pkgname//-/_}_${pkgver/./_}_${pkgrel}_x64.tar.xz::https://download.sublimetext.com/sublime_text_build_${pkgver:2}_x64.tar.xz")
source_aarch64=("${pkgname//-/_}_${pkgver/./_}_${pkgrel}_arm64.tar.xz::https://download.sublimetext.com/sublime_text_build_${pkgver:2}_arm64.tar.xz")
sha512sums=('ac56e9b7dddaebb3d222795cfc644109c93cc3f79695b8f9ee56022c74fe04a1134dd54cab07c74ff1f96b783cb3dbc026c16095552f1d2dd83115ea274dc2e9')
sha512sums_x86_64=('0a6ff4be7ae35ce80d568a2bf8dc5ed6fcf9f845517f7a1b8b24f180842f72ef16f9792e91fc70a277cfaf66bf1be482bb1328c98252d7c524d3412cfe9f22e3')
sha512sums_aarch64=('bb8f314e3c0ffff2536f91331fe43fe55d42fed27fca32bced5e779331296c7ee4b619dacc0193bc7f2cfa16a770177a81783ed959c786522e9688b028c7c221')
prepare() {
sed -i -e "s|@ST_PATH@|/opt/sublime_text|g" "${pkgname}.sh"
sed -i -e 's#/opt/sublime_text/sublime_text#/usr/bin/subl#g' 'sublime_text/sublime_text.desktop'
sed -i -e '\#^StartupNotify=#a StartupWMClass=subl' 'sublime_text/sublime_text.desktop'
}
package() {
install -dm755 "${pkgdir}/opt"
cp --preserve=mode -r 'sublime_text' "${pkgdir}/opt/sublime_text"
rm -f "${pkgdir}/opt/sublime_text/sublime_text.desktop"
for res in 128x128 16x16 256x256 32x32 48x48; do
install -dm755 "${pkgdir}/usr/share/icons/hicolor/${res}/apps"
ln -s "/opt/sublime_text/Icon/${res}/sublime-text.png" "${pkgdir}/usr/share/icons/hicolor/${res}/apps/sublime-text.png"
done
install -dm755 "${pkgdir}/usr/share/applications"
install -Dm644 'sublime_text/sublime_text.desktop' "${pkgdir}/usr/share/applications/sublime_text.desktop"
install -dm755 "${pkgdir}/usr/bin"
install -Dm755 "${pkgname}.sh" "${pkgdir}/usr/bin/subl"
}
@@ -0,0 +1,3 @@
#!/bin/sh
exec @ST_PATH@/sublime_text "$@"
+16
View File
@@ -0,0 +1,16 @@
pkgbase = symfony-cli
pkgdesc = The Symfony client helps developers create and manage Symfony applications.
pkgver = 5.16.1
pkgrel = 8
url = https://symfony.com/
arch = x86_64
license = AGPL3
makedepends = git
makedepends = go
depends = glibc
provides = symfony-cli
conflicts = symfony-cli
source = git+https://github.com/symfony-cli/symfony-cli#tag=v5.16.1
sha256sums = SKIP
pkgname = symfony-cli
+4
View File
@@ -0,0 +1,4 @@
pkg/
src/
symfony*
!symfony-cli.install
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Florian Moser
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+31
View File
@@ -0,0 +1,31 @@
# Maintainer: Florian Moser <arch@famoser.ch>
pkgname=symfony-cli
pkgrel=8
pkgver=5.16.1
pkgdesc="The Symfony client helps developers create and manage Symfony applications."
url="https://symfony.com/"
arch=('x86_64')
license=('AGPL3')
depends=('glibc')
makedepends=('git' 'go')
provides=('symfony-cli')
conflicts=('symfony-cli')
source=(
"git+https://github.com/symfony-cli/symfony-cli#tag=v${pkgver}"
)
sha256sums=('SKIP')
build() {
cd "symfony-cli"
DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
PKGVER=${pkgver}
go mod download
go build -trimpath -ldflags '-s -w -X main.channel=stable -X main.buildDate='"${DATE}"' -X main.version='"${PKGVER}"''
}
package() {
install -D -m 755 "${srcdir}/symfony-cli/symfony-cli" "${pkgdir}/usr/bin/symfony"
}
+15
View File
@@ -0,0 +1,15 @@
# Symfony CLI AUR Package
## Update package
0. Get newest version from https://github.com/symfony/cli/releases
1. Update package version in PKGBUILD
2. Execute `update.sh`
or
3. Generate new checksums with `updpkgsums`
4. Test install `makepkg -si`
5. Update .SRCINFO `makepkg --printsrcinfo > .SRCINFO`
6. `git remote add arch ssh://aur@aur.archlinux.org/symfony-cli.git`
7. `git push arch`
+17
View File
@@ -0,0 +1,17 @@
# /bin/bash
set +e
sudo pacman -R symfony-cli-bin --noconfirm
sudo pacman -R symfony-cli-bin-debug --noconfirm
set -e
rm -rf src
rm -rf pkg
rm -rf symfony-cli-*.gz
rm -rf symfony-cli-*.tar.zst
makepkg -si --noconfirm
makepkg --printsrcinfo > .SRCINFO
set +e
git add .
git commit -m "update package"
git push
git remote add arch ssh://aur@aur.archlinux.org/symfony-cli.git
git push arch
@@ -0,0 +1,47 @@
pkgbase = visual-studio-code-bin
pkgdesc = Visual Studio Code (vscode): Editor for building and debugging modern web and cloud applications (official binary version)
pkgver = 1.108.0
pkgrel = 1
url = https://code.visualstudio.com/
install = visual-studio-code-bin.install
arch = x86_64
arch = aarch64
arch = armv7h
license = custom: commercial
depends = libxkbfile
depends = gnupg
depends = gtk3
depends = libsecret
depends = nss
depends = gcc-libs
depends = libnotify
depends = libxss
depends = glibc
depends = lsof
depends = shared-mime-info
depends = xdg-utils
depends = alsa-lib
optdepends = glib2: Needed for move to trash functionality
optdepends = libdbusmenu-glib: Needed for KDE global menu
optdepends = org.freedesktop.secrets: Needed for settings sync
optdepends = icu69: Needed for live share
provides = code
provides = vscode
conflicts = code
options = !strip
source = code-1.108.0.desktop.in::https://raw.githubusercontent.com/microsoft/vscode/1.108.0/resources/linux/code.desktop
source = code-1.108.0-url-handler.desktop.in::https://raw.githubusercontent.com/microsoft/vscode/1.108.0/resources/linux/code-url-handler.desktop
source = code-1.108.0-workspace.xml.in::https://raw.githubusercontent.com/microsoft/vscode/1.108.0/resources/linux/code-workspace.xml
source = visual-studio-code-bin.sh
sha256sums = 2f1782b30c4e040efff655fd9cf477930c5a0c81ddae27749b0cbb922c1d248e
sha256sums = c361efa7e02fcad759ed80d2fbab67877f33219b981578af6fffaf18aeb12d9b
sha256sums = 3af748dd6578a1775e8eb7248ba397b7e11840df2ea6ee234ff76fee3dc306cf
sha256sums = 8257a5ad82fa1f7dec11dfa064217b80df4cfec24f50cec7ca0ad62cf8295bfe
source_x86_64 = code_x64_1.108.0.tar.gz::https://update.code.visualstudio.com/1.108.0/linux-x64/stable
sha256sums_x86_64 = db4c9d0df1c5872dc13710bd6c71b52538326c563dcf1c5cf35100a4e561df09
source_aarch64 = code_arm64_1.108.0.tar.gz::https://update.code.visualstudio.com/1.108.0/linux-arm64/stable
sha256sums_aarch64 = de66b49beb81b909464e275115b23401cc0672f5bc79b9c99e7ae102e4ba7447
source_armv7h = code_armhf_1.108.0.tar.gz::https://update.code.visualstudio.com/1.108.0/linux-armhf/stable
sha256sums_armv7h = 2a2027ae96f44a139a948078faf2843dee401ebdeb538b206de651513119699b
pkgname = visual-studio-code-bin
@@ -0,0 +1,2 @@
*.in
.xml
@@ -0,0 +1,83 @@
# Maintainer: D. Can Celasun <can[at]dcc[dot]im>
pkgname=visual-studio-code-bin
_pkgname=visual-studio-code
pkgver=1.108.0
pkgrel=1
pkgdesc="Visual Studio Code (vscode): Editor for building and debugging modern web and cloud applications (official binary version)"
arch=('x86_64' 'aarch64' 'armv7h')
url="https://code.visualstudio.com/"
license=('custom: commercial')
provides=('code' 'vscode')
conflicts=('code')
# Upstream has signature verification for extensions and stripping breaks it
# See https://github.com/microsoft/vscode/issues/223455#issuecomment-2610001754
options=(!strip)
install=$pkgname.install
# lsof: needed for terminal splitting, see https://github.com/Microsoft/vscode/issues/62991
# xdg-utils: needed for opening web links with xdg-open
depends=(libxkbfile gnupg gtk3 libsecret nss gcc-libs libnotify libxss glibc lsof shared-mime-info xdg-utils alsa-lib)
optdepends=('glib2: Needed for move to trash functionality'
'libdbusmenu-glib: Needed for KDE global menu'
'org.freedesktop.secrets: Needed for settings sync'
# See https://github.com/MicrosoftDocs/live-share/issues/4650
'icu69: Needed for live share' )
source=(code-${pkgver}.desktop.in::https://raw.githubusercontent.com/microsoft/vscode/${pkgver}/resources/linux/code.desktop
code-${pkgver}-url-handler.desktop.in::https://raw.githubusercontent.com/microsoft/vscode/${pkgver}/resources/linux/code-url-handler.desktop
code-${pkgver}-workspace.xml.in::https://raw.githubusercontent.com/microsoft/vscode/${pkgver}/resources/linux/code-workspace.xml
${_pkgname}-bin.sh)
source_x86_64=(code_x64_${pkgver}.tar.gz::https://update.code.visualstudio.com/${pkgver}/linux-x64/stable)
source_aarch64=(code_arm64_${pkgver}.tar.gz::https://update.code.visualstudio.com/${pkgver}/linux-arm64/stable)
source_armv7h=(code_armhf_${pkgver}.tar.gz::https://update.code.visualstudio.com/${pkgver}/linux-armhf/stable)
sha256sums=('2f1782b30c4e040efff655fd9cf477930c5a0c81ddae27749b0cbb922c1d248e'
'c361efa7e02fcad759ed80d2fbab67877f33219b981578af6fffaf18aeb12d9b'
'3af748dd6578a1775e8eb7248ba397b7e11840df2ea6ee234ff76fee3dc306cf'
'8257a5ad82fa1f7dec11dfa064217b80df4cfec24f50cec7ca0ad62cf8295bfe')
sha256sums_x86_64=('db4c9d0df1c5872dc13710bd6c71b52538326c563dcf1c5cf35100a4e561df09')
sha256sums_aarch64=('de66b49beb81b909464e275115b23401cc0672f5bc79b9c99e7ae102e4ba7447')
sha256sums_armv7h=('2a2027ae96f44a139a948078faf2843dee401ebdeb538b206de651513119699b')
_set_meta_info() {
sed 's/@@NAME_LONG@@/Visual Studio Code/g' "$1" |\
sed 's/@@NAME_SHORT@@/Code/g' |\
sed 's/@@NAME@@/code/g' |\
sed 's#@@EXEC@@#/usr/bin/code#g' |\
sed 's/@@ICON@@/visual-studio-code/g' |\
sed 's/@@URLPROTOCOL@@/vscode/g'
}
prepare() {
_set_meta_info "${srcdir}/code-${pkgver}.desktop.in" > "${srcdir}/code.desktop"
_set_meta_info "${srcdir}/code-${pkgver}-url-handler.desktop.in" > "${srcdir}/code-url-handler.desktop"
_set_meta_info "${srcdir}/code-${pkgver}-workspace.xml.in" > "${srcdir}/code-workspace.xml"
}
_pkg() {
if [ "${CARCH}" = "aarch64" ]; then
echo 'VSCode-linux-arm64'
elif [ "${CARCH}" = "armv7h" ]; then
echo 'VSCode-linux-armhf'
else
echo 'VSCode-linux-x64'
fi
}
package() {
install -d "${pkgdir}/opt/${_pkgname}"
install -d "${pkgdir}/usr/bin"
install -d "${pkgdir}/usr/share/"{applications,pixmaps,mime/packages,licenses/${_pkgname}}
install -m644 "${srcdir}/$(_pkg)/resources/app/LICENSE.rtf" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE.rtf"
install -m644 "${srcdir}/$(_pkg)/resources/app/resources/linux/code.png" "${pkgdir}/usr/share/pixmaps/${_pkgname}.png"
install -m644 "${srcdir}/code.desktop" "${pkgdir}/usr/share/applications/code.desktop"
install -m644 "${srcdir}/code-url-handler.desktop" "${pkgdir}/usr/share/applications/code-url-handler.desktop"
install -m644 "${srcdir}/code-workspace.xml" "${pkgdir}/usr/share/mime/packages/${pkgname}-workspace.xml"
install -Dm 644 "${srcdir}/$(_pkg)/resources/completions/bash/code" "${pkgdir}/usr/share/bash-completion/completions/code"
install -Dm 644 "${srcdir}/$(_pkg)/resources/completions/zsh/_code" "${pkgdir}/usr/share/zsh/site-functions/_code"
cp -r "${srcdir}/$(_pkg)/"* "${pkgdir}/opt/${_pkgname}"
# Launcher
install -m755 "${srcdir}/${_pkgname}-bin.sh" "${pkgdir}/usr/bin/code"
}
@@ -0,0 +1,21 @@
# Colored makepkg-like functions
msg_blue() {
printf "${blue}==>${bold} $1${all_off}\n"
}
note() {
printf "${blue}==>${yellow} NOTE:${bold} $1${all_off}\n"
}
all_off="$(tput sgr0)"
bold="${all_off}$(tput bold)"
blue="${bold}$(tput setaf 4)"
yellow="${bold}$(tput setaf 3)"
post_install() {
note "Custom flags should be put directly in: ~/.config/code-flags.conf"
}
post_upgrade() {
post_install
}
@@ -0,0 +1,11 @@
#!/bin/bash
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-~/.config}
# Allow users to override command-line options
if [[ -f $XDG_CONFIG_HOME/code-flags.conf ]]; then
CODE_USER_FLAGS="$(sed 's/#.*//' $XDG_CONFIG_HOME/code-flags.conf | tr '\n' ' ')"
fi
# Launch
exec /opt/visual-studio-code/bin/code "$@" $CODE_USER_FLAGS
+45
View File
@@ -0,0 +1,45 @@
pkgbase = voxtype-bin
pkgdesc = Push-to-talk voice-to-text for Linux (pre-built binaries)
pkgver = 0.4.11
pkgrel = 2
url = https://voxtype.io
install = voxtype-bin.install
arch = x86_64
license = MIT
depends = alsa-lib
depends = curl
depends = gcc-libs
depends = glibc
optdepends = wtype: keyboard simulation for Wayland (recommended, best CJK support)
optdepends = ydotool: keyboard simulation fallback (X11/TTY support)
optdepends = wl-clipboard: clipboard support
optdepends = libnotify: desktop notifications
optdepends = pipewire: audio server (recommended)
optdepends = pipewire-alsa: ALSA compatibility for PipeWire (required if using PipeWire)
optdepends = pulseaudio: audio server (alternative to PipeWire)
optdepends = vulkan-icd-loader: GPU acceleration via Vulkan (enable with: voxtype setup gpu --enable)
provides = voxtype
conflicts = voxtype
backup = etc/voxtype/config.toml
source = voxtype-0.4.11-avx2::https://github.com/peteonrails/voxtype/releases/download/v0.4.11/voxtype-0.4.11-linux-x86_64-avx2
source = voxtype-0.4.11-avx512::https://github.com/peteonrails/voxtype/releases/download/v0.4.11/voxtype-0.4.11-linux-x86_64-avx512
source = voxtype-0.4.11-vulkan::https://github.com/peteonrails/voxtype/releases/download/v0.4.11/voxtype-0.4.11-linux-x86_64-vulkan
source = config-0.4.11.toml::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/config/default.toml
source = voxtype-0.4.11.service::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/packaging/systemd/voxtype.service
source = voxtype-0.4.11.bash::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/packaging/completions/voxtype.bash
source = voxtype-0.4.11.zsh::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/packaging/completions/voxtype.zsh
source = voxtype-0.4.11.fish::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/packaging/completions/voxtype.fish
source = LICENSE-0.4.11::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/LICENSE
source = README-0.4.11.md::https://raw.githubusercontent.com/peteonrails/voxtype/v0.4.11/README.md
sha256sums = 0b15ef42486370bf7d2b6c5f71e1e9cd6b544e28afbfe10a08b3e47b700f6191
sha256sums = 6eb668fa56c34b643caac6b96c8c56ee39895c77edae572bf32bef9f434d15a9
sha256sums = 187a66c3b246c8fc3b5f2e55a28e8d9a4379cda4cbe6824aeb880b1ed3e9faf4
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
pkgname = voxtype-bin
+6
View File
@@ -0,0 +1,6 @@
*
!.nvchecker.toml
!.gitignore
!*.install
!PKGBUILD
!.SRCINFO
@@ -0,0 +1,5 @@
[voxtype-bin]
source = "github"
github = "peteonrails/voxtype"
use_latest_release = true
prefix = "v"
Loaded 100 of 253 files, more files were not shown because too many files have changed in this diff. Show more