diff --git a/pkgbuilds/omarchy-studio/.omarchy/package.json b/pkgbuilds/omarchy-studio/.omarchy/package.json new file mode 100644 index 000000000..c2e9877e6 --- /dev/null +++ b/pkgbuilds/omarchy-studio/.omarchy/package.json @@ -0,0 +1,10 @@ +{ + "source": "local", + "upstream": { + "git_tags": "https://github.com/the2dl/omarchy-studio.git", + "tag_pattern": "v{pkgver}", + "sources": { + "any": ["https://github.com/the2dl/omarchy-studio/archive/refs/tags/{tag}.tar.gz"] + } + } +} diff --git a/pkgbuilds/omarchy-studio/PKGBUILD b/pkgbuilds/omarchy-studio/PKGBUILD new file mode 100644 index 000000000..7350eca62 --- /dev/null +++ b/pkgbuilds/omarchy-studio/PKGBUILD @@ -0,0 +1,106 @@ +# Maintainer: Dan + +pkgname=omarchy-studio +pkgver=0.1.0 +pkgrel=1 +pkgdesc="Non-destructive screen recorder and editor for Hyprland: automatic zoom, camera, backdrops, redaction" +arch=('x86_64' 'aarch64') +url="https://github.com/the2dl/omarchy-studio" +license=('Apache-2.0') +depends=( + 'bash' + 'ffmpeg' + 'gpu-screen-recorder' + 'hyprland' + 'jq' + 'libnotify' + 'libpulse' + 'mpv' + 'omarchy' + 'python' + 'qt6-declarative' + 'qt6-multimedia' + 'slurp' + 'v4l-utils' + 'xdg-utils' +) +makedepends=('gcc' 'mesa' 'pkgconf' 'wayland' 'wayland-protocols') +checkdepends=('python-pytest') +optdepends=( + 'python-faster-whisper: local speech-to-text for automatic captions' + 'hyprland-studio-screenshare: hides the camera self-view from a portal capture instead of blacking it out (hyprpm)' +) +options=('!debug') + +source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") +sha256sums=('52eebf81bb343af034a6e71dc989d507e2b302d1a0c9bd4ce1449a66582bfb03') + +build() { + cd "$pkgname-$pkgver" + + # Optional. Without it, "just this window" falls back to capturing the window's + # rectangle, which records whatever is stacked on top of it. + contrib/omarchy-capture-window/build.sh \ + || warning "native window recorder did not build; window capture falls back to a rectangle" +} + +check() { + cd "$pkgname-$pkgver" + + # tests/test_parity.py is excluded, not skipped by accident. It renders frames through + # QML and compares them pixel-wise against the ffmpeg export, so it wants a live + # compositor -- a VideoOutput grabs empty under every headless Qt platform. On a build + # host it is either skipped for that reason or, worse, runs and is flaky. It belongs in + # a graphical session, where the project runs it. Everything else -- the filtergraph + # compilers, the timing model, the audio chain, the bundle format -- runs here. + OMARCHY_STUDIO_NO_REVEAL=1 python -m pytest -q --ignore=tests/test_parity.py +} + +package() { + cd "$pkgname-$pkgver" + local root="$pkgdir/usr/lib/$pkgname" + + # Installed whole rather than split across FHS: the entry points locate lib/, + # editor/, daemon/ and contrib/ relative to their own resolved path. + install -d "$root" + cp -a bin lib editor daemon "$root/" + if [[ -x contrib/omarchy-capture-window/omarchy-capture-window ]]; then + install -Dm755 contrib/omarchy-capture-window/omarchy-capture-window \ + "$root/contrib/omarchy-capture-window/omarchy-capture-window" + fi + find "$root" -name '__pycache__' -type d -prune -exec rm -rf {} + 2>/dev/null || true + + # Public commands as "PATH name:file in the tree". The recorder is deliberately not + # installed as omarchy-capture-screenrecording: omarchy already owns that path, and + # this is the studio's recorder rather than a replacement for it. Nothing internal is + # affected -- callers reach it by absolute path, never through PATH. + install -d "$pkgdir/usr/bin" + local pair name target + for pair in \ + omarchy-studio:omarchy-studio \ + omarchy-recordings:omarchy-recordings \ + omarchy-studio-record:omarchy-capture-screenrecording \ + omarchy-capture-screenrecording-edit:omarchy-capture-screenrecording-edit \ + omarchy-studio-transcribe:omarchy-studio-transcribe \ + omarchy-teleprompter:omarchy-teleprompter + do + name="${pair%%:*}" + target="${pair##*:}" + ln -s "/usr/lib/$pkgname/bin/$target" "$pkgdir/usr/bin/$name" + done + + install -Dm644 packaging/omarchy-studio.desktop \ + "$pkgdir/usr/share/applications/$pkgname.desktop" + + local size + for size in 16 24 32 64 128 256 512; do + install -Dm644 "docs/media/logo/png/mark-$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/$pkgname.png" + done + install -Dm644 docs/media/logo/svg/mark-full-accent.svg \ + "$pkgdir/usr/share/icons/hicolor/scalable/apps/$pkgname.svg" + + install -Dm644 README.md docs/how-it-works.md docs/engines.md docs/using-the-editor.md \ + -t "$pkgdir/usr/share/doc/$pkgname" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +}