mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-04 16:56:59 +01:00
Videos without a server thumbnail fell through to the local fallback, which downloaded the whole file, failed to decode it as an image and wrote the video off for good. Grab one frame with ffmpeg instead, a second in or from the start for shorter clips. Probe for ffmpeg before downloading, bound every run, and skip videos over 256 MiB. Migration V32 gives the videos written off so far another try. Those videos had no server thumbnail because our uploads never sent one. Every upload path (bulk upload, drained mount writes, conflict copies, new revisions and folder sync) now attaches a thumbnail rendered from the local file, kept under the 60 KiB Proton's own clients use. Files that are not images or videos, or cannot be decoded, upload bare as before; a .ts file only counts as video with an MPEG-TS sync byte. ffmpeg is a new optional dependency in the PKGBUILDs.
82 lines
3.0 KiB
Bash
82 lines
3.0 KiB
Bash
# Maintainer: Nils Pukropp <contact@narl.io>
|
|
#
|
|
# Local-build PKGBUILD. Builds the proton-drive-linux workspace from the
|
|
# checkout this file lives in: this is NOT a source-fetch package, it compiles
|
|
# the working tree in place. The Proton SDK is unpublished and comes from its
|
|
# GitHub repo (pinned by Cargo.lock), so the build needs network access — no
|
|
# sibling checkout required any more.
|
|
#
|
|
# Build + install: cd packaging && makepkg -fi
|
|
|
|
pkgname=proton-drive-linux
|
|
pkgver=2.1.1
|
|
pkgrel=1
|
|
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
|
|
arch=('x86_64')
|
|
url="https://github.com/narrrl/proton-drive-linux"
|
|
license=('MIT')
|
|
depends=('fuse3' 'gtk4' 'libadwaita' 'webkitgtk-6.0' 'perl-image-exiftool')
|
|
makedepends=('cargo' 'git' 'gettext')
|
|
provides=('pdfs')
|
|
# Files-on-demand mount + keyring need these at runtime.
|
|
optdepends=('gnome-keyring: credential storage via Secret Service'
|
|
'ffmpeg: video thumbnails'
|
|
'xdg-utils: "Open folder" action from the tray'
|
|
'fzf: live search-as-you-type launcher (pdfs-prompt --fzf)'
|
|
'foot: terminal for pdfs-prompt --fzf started from a keybinding')
|
|
options=('!lto' '!debug')
|
|
|
|
# Built in place from the checkout; nothing to fetch or checksum.
|
|
source=()
|
|
sha256sums=()
|
|
|
|
# Absolute path to the workspace root (packaging/ lives directly under it).
|
|
_workspace="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
pkgver() {
|
|
cd "$_workspace"
|
|
local v
|
|
v=$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
|
|
printf '%s' "${v:-0.1.0}"
|
|
}
|
|
|
|
build() {
|
|
cd "$_workspace"
|
|
export RUSTUP_TOOLCHAIN=stable
|
|
export CARGO_TARGET_DIR="$_workspace/target"
|
|
# `--locked` not `--frozen`: the lock is authoritative, but cargo must still be
|
|
# allowed to fetch the git-sourced SDK.
|
|
cargo build --release --locked \
|
|
--bin pdfs \
|
|
--bin pdfs-tray \
|
|
--bin pdfs-app \
|
|
--bin pdfs-prompt
|
|
}
|
|
|
|
package() {
|
|
cd "$_workspace"
|
|
local rel="target/release"
|
|
|
|
install -Dm755 "$rel/pdfs" "$pkgdir/usr/bin/pdfs"
|
|
install -Dm755 "$rel/pdfs-tray" "$pkgdir/usr/bin/pdfs-tray"
|
|
install -Dm755 "$rel/pdfs-app" "$pkgdir/usr/bin/pdfs-app"
|
|
install -Dm755 "$rel/pdfs-prompt" "$pkgdir/usr/bin/pdfs-prompt"
|
|
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.desktop" \
|
|
"$pkgdir/usr/share/applications/io.narl.proton-drive-linux.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux-tray.desktop" \
|
|
"$pkgdir/etc/xdg/autostart/io.narl.proton-drive-linux-tray.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.svg" \
|
|
"$pkgdir/usr/share/icons/hicolor/scalable/apps/io.narl.proton-drive-linux.svg"
|
|
|
|
# systemd user service that runs the auto-mount daemon. Enabled per-user by
|
|
# the GUI on login (`systemctl --user enable --now proton-drive.service`).
|
|
install -Dm644 "packaging/proton-drive.service" \
|
|
"$pkgdir/usr/lib/systemd/user/proton-drive.service"
|
|
|
|
# Translations: compiled from po/ into /usr/share/locale.
|
|
po/build.sh "$pkgdir/usr/share/locale"
|
|
|
|
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
|
}
|