1Password reads the display scale itself, the way Electron apps do, so on a scaled monitor it comes up oversized next to every other window. Pin it in the .desktop we install and let the compositor scale it. Rewriting Exec on the way in is how spotify, perplexity and sublime-text already fix up their entries here. Only the stable package: 1password-beta syncs from the AUR, so a patch there would be overwritten. Claude-Session: https://claude.ai/code/session_01JB9phxP56gnP7qSidkkUJE Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
91 lines
3.9 KiB
Bash
91 lines
3.9 KiB
Bash
pkgname=1password
|
|
pkgver=8.12.34
|
|
pkgrel=36
|
|
conflicts=('1password-beta' '1password-beta-bin')
|
|
pkgdesc="Password manager and secure wallet"
|
|
arch=('x86_64' 'aarch64')
|
|
url='https://1password.com'
|
|
license=('LicenseRef-1Password-Proprietary')
|
|
options=(!strip)
|
|
install="1password.install"
|
|
source_x86_64=(
|
|
"https://downloads.1password.com/linux/tar/stable/x86_64/1password-${pkgver}.x64.tar.gz"
|
|
"https://downloads.1password.com/linux/tar/stable/x86_64/1password-${pkgver}.x64.tar.gz.sig"
|
|
)
|
|
source_aarch64=(
|
|
"https://downloads.1password.com/linux/tar/stable/aarch64/1password-${pkgver}.arm64.tar.gz"
|
|
"https://downloads.1password.com/linux/tar/stable/aarch64/1password-${pkgver}.arm64.tar.gz.sig"
|
|
)
|
|
sha256sums_x86_64=('297784aa66770b645607a7f04c9ba2c4aebed4f46d21202487f521ba572b7b13'
|
|
'ec085bef60de748895d3c51a8208301ba2ac8fb47db99334539ba4bd1d3260d7'
|
|
)
|
|
sha256sums_aarch64=('ea5102363d6cf3442b96a7abd6743da8c1d261f56a628e1a3c183d84fa65fdcb'
|
|
'f44db73fa44c3f68c3ab78a9cce140be9355de1dd9be4ce731c9d6597960c907'
|
|
)
|
|
validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22')
|
|
|
|
package() {
|
|
depends=('hicolor-icon-theme' 'libgtk-3.so=0' 'nss' 'xdg-utils')
|
|
|
|
# 1Password names its tarballs by a vendor architecture suffix. arch=()
|
|
# above already limits which architectures makepkg builds, so no fallback
|
|
# branch is needed here; keeping this inside package() means sourcing the
|
|
# PKGBUILD without CARCH (as the version check does) still reads the
|
|
# version correctly.
|
|
local _tararch
|
|
case "$CARCH" in
|
|
x86_64) _tararch=x64 ;;
|
|
aarch64) _tararch=arm64 ;;
|
|
esac
|
|
|
|
# Go to source directory
|
|
cd "1password-${pkgver}.${_tararch}"
|
|
|
|
# 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/
|
|
|
|
# 1Password reads the display scale itself, the way Electron apps do, and
|
|
# comes up oversized next to every other window on a scaled monitor. Pin it
|
|
# and let the compositor do the scaling.
|
|
sed -i 's|^Exec=.*|Exec=/opt/1Password/1password --force-device-scale-factor=1 %U|' \
|
|
"${pkgdir}/usr/share/applications/1password.desktop"
|
|
|
|
# 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-${pkgver}.${_tararch}" "${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
|
|
}
|