Add omapresent Markdown presentation package
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
{ "source": "local" }
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
# Maintainer: Jethro Jones <jethro@jethrojones.com>
|
||||||
|
|
||||||
|
pkgname=omapresent
|
||||||
|
pkgver=0.1.0
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc='Dead-simple, Markdown-only presentation app built with Qt Quick'
|
||||||
|
# Only x86_64 has ever been built and tested. aarch64 is plausible (the build
|
||||||
|
# is plain qmake6 + make) but unproven, so it is not claimed here.
|
||||||
|
arch=('x86_64')
|
||||||
|
url='https://github.com/jethrojones/omapresent'
|
||||||
|
license=('MIT')
|
||||||
|
# No .install file. On current Arch, gtk-update-icon-cache.hook and
|
||||||
|
# update-desktop-database.hook already refresh both caches, and namcap flags a
|
||||||
|
# scriptlet that duplicates them. Spec §15 milestone 8 wanted the agent skill
|
||||||
|
# installed from a scriptlet; it cannot be — that runs as root and the skill
|
||||||
|
# belongs in the invoking user's home — so Omapresent links it itself on first
|
||||||
|
# run (Backend::installAgentSkill) from the copy packaged below.
|
||||||
|
# The binary carries no useful debug symbols for a release package, and the
|
||||||
|
# split -debug package trips namcap's empty-package rule.
|
||||||
|
options=('!debug')
|
||||||
|
# Spec §12's list needed three corrections, each checked against the built
|
||||||
|
# binary rather than assumed:
|
||||||
|
# * qt6-quickcontrols2 is not a package on Arch. Quick Controls 2 and Quick
|
||||||
|
# Dialogs 2 ship inside qt6-declarative.
|
||||||
|
# * qt6-multimedia is a runtime module. `QT += multimedia` in omapresent.pro
|
||||||
|
# links libQt6Multimedia even though no QML file imports QtMultimedia, so it
|
||||||
|
# is a runtime dependency as well as a build dependency.
|
||||||
|
# * gst-plugins-{base,good,bad,ugly} are not in the playback path at all.
|
||||||
|
# Local video is an HTML <video> element (src/renderer/render.js:335)
|
||||||
|
# decoded by QtWebEngine's own Chromium stack, which Arch links against
|
||||||
|
# ffmpeg and openh264 through qt6-webengine. GStreamer is never loaded.
|
||||||
|
# No yt-dlp, per the spec.
|
||||||
|
depends=(
|
||||||
|
'hicolor-icon-theme'
|
||||||
|
'qt6-base'
|
||||||
|
'qt6-declarative'
|
||||||
|
'qt6-webengine'
|
||||||
|
'qt6-webchannel'
|
||||||
|
'qt6-multimedia'
|
||||||
|
# File dialogs and the light/dark system setting go through the portal.
|
||||||
|
'xdg-desktop-portal'
|
||||||
|
# Spec §12: depend on the iA Writer S family, never bundle it.
|
||||||
|
'ttf-ia-writer'
|
||||||
|
)
|
||||||
|
# gcc and make come from base-devel, which makepkg requires. qmake6, moc and rcc
|
||||||
|
# come from qt6-base and qt6-declarative, which are runtime dependencies too.
|
||||||
|
makedepends=(
|
||||||
|
'imagemagick' # rescales the icon master into the hicolor sizes
|
||||||
|
)
|
||||||
|
|
||||||
|
_srcdir="$pkgname-$pkgver"
|
||||||
|
|
||||||
|
# Release source: the GitHub tag tarball, checksum-verified.
|
||||||
|
#
|
||||||
|
# Local validation path: point OMAPRESENT_SRC at a checkout and makepkg builds
|
||||||
|
# that tree instead, downloading nothing. This is the same convention Omarchy's
|
||||||
|
# own packages use (see omarchy-dev's OMARCHY_SRC), so
|
||||||
|
#
|
||||||
|
# OMAPRESENT_SRC="$PWD" makepkg -f --cleanbuild -C -p pkgbuild/PKGBUILD
|
||||||
|
#
|
||||||
|
# exercises the real prepare/build/package path against uncommitted work.
|
||||||
|
if [[ -n ${OMAPRESENT_SRC:-} ]]; then
|
||||||
|
source=()
|
||||||
|
sha256sums=()
|
||||||
|
else
|
||||||
|
source=("$_srcdir.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||||
|
# Filled in on the default branch after the immutable tag exists by
|
||||||
|
# ./release-checksums; see pkgbuild/RELEASING.md. The zero placeholder is not
|
||||||
|
# a valid checksum for anything, so makepkg refuses to build before that
|
||||||
|
# release gate.
|
||||||
|
sha256sums=('b8cc096a21612ef65a2ffd75dd70d3b80f002e0d9466007b379fd49ff664c648')
|
||||||
|
fi
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
[[ -n ${OMAPRESENT_SRC:-} ]] || return 0
|
||||||
|
|
||||||
|
# Copy rather than build in place: makepkg owns $srcdir and may clean it.
|
||||||
|
# The excludes matter twice over — object trees and history would add
|
||||||
|
# hundreds of megabytes and are not in a release tarball, and makepkg's own
|
||||||
|
# working directories live inside the checkout when the default
|
||||||
|
# pkgbuild/ layout is used, so a plain copy would recurse into itself.
|
||||||
|
rm -rf "$srcdir/$_srcdir"
|
||||||
|
mkdir -p "$srcdir/$_srcdir"
|
||||||
|
tar -C "$OMAPRESENT_SRC" -cf - \
|
||||||
|
--exclude=./.git \
|
||||||
|
--exclude=./build \
|
||||||
|
--exclude=./build-tests \
|
||||||
|
--exclude=./pkgbuild/src \
|
||||||
|
--exclude=./pkgbuild/pkg \
|
||||||
|
--exclude='./pkgbuild/*.pkg.tar*' \
|
||||||
|
--exclude='./pkgbuild/*.log' \
|
||||||
|
. | tar -C "$srcdir/$_srcdir" -xf -
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cd "$srcdir/$_srcdir"
|
||||||
|
./bin/build
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd "$srcdir/$_srcdir"
|
||||||
|
|
||||||
|
install -Dm755 build/omapresent "$pkgdir/usr/bin/omapresent"
|
||||||
|
|
||||||
|
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||||
|
install -Dm644 NOTICE "$pkgdir/usr/share/licenses/$pkgname/NOTICE"
|
||||||
|
# The renderer's vendored libraries are compiled into the binary, so their
|
||||||
|
# licences have to ship with it.
|
||||||
|
install -Dm644 src/renderer/vendor/LICENSES.md \
|
||||||
|
"$pkgdir/usr/share/licenses/$pkgname/vendor/LICENSES.md"
|
||||||
|
install -m644 -t "$pkgdir/usr/share/licenses/$pkgname/vendor" \
|
||||||
|
src/renderer/vendor/LICENSE.*
|
||||||
|
|
||||||
|
# First run links the skill into the agent skill directories itself
|
||||||
|
# (src/backend.cpp), because a pacman hook must not write into a home.
|
||||||
|
install -Dm644 skill/SKILL.md "$pkgdir/usr/share/$pkgname/skill/SKILL.md"
|
||||||
|
install -d "$pkgdir/usr/share/$pkgname/skill/reference"
|
||||||
|
install -m644 -t "$pkgdir/usr/share/$pkgname/skill/reference" \
|
||||||
|
skill/reference/*.md
|
||||||
|
|
||||||
|
# Backend installs this through `omarchy hook install theme-set`, which puts
|
||||||
|
# the user copy in ~/.config/omarchy/hooks/theme-set.d/ with mode 755.
|
||||||
|
install -Dm755 pkgbuild/omapresent-theme-refresh \
|
||||||
|
"$pkgdir/usr/share/$pkgname/hooks/omapresent-theme-refresh"
|
||||||
|
|
||||||
|
install -Dm644 welcome/welcome.md "$pkgdir/usr/share/$pkgname/welcome.md"
|
||||||
|
|
||||||
|
# The icon master is a single 1024x1024 PNG. hicolor's index.theme lists no
|
||||||
|
# 1024x1024 directory, so an icon installed only at its native size is never
|
||||||
|
# found by a spec-compliant lookup; rescale it into the sizes the theme
|
||||||
|
# actually indexes. The placeholder omapresent.svg is deliberately not
|
||||||
|
# packaged — it is superseded by this artwork.
|
||||||
|
local size
|
||||||
|
for size in 16 22 24 32 48 64 128 256 512; do
|
||||||
|
install -d "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps"
|
||||||
|
magick pkgbuild/omapresent.png -filter Lanczos -resize "${size}x${size}" \
|
||||||
|
-strip "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/omapresent.png"
|
||||||
|
chmod 644 "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/omapresent.png"
|
||||||
|
done
|
||||||
|
|
||||||
|
install -Dm644 pkgbuild/omapresent.desktop \
|
||||||
|
"$pkgdir/usr/share/applications/omapresent.desktop"
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Omapresent
|
||||||
|
GenericName=Presentation Tool
|
||||||
|
Comment=Dead-simple, Markdown-only presentation app for Omarchy
|
||||||
|
Exec=omapresent %f
|
||||||
|
Icon=omapresent
|
||||||
|
Terminal=false
|
||||||
|
Categories=Office;Presentation;
|
||||||
|
MimeType=text/markdown;text/x-markdown;
|
||||||
|
Keywords=presentation;slides;markdown;deck;present;
|
||||||
|
StartupWMClass=omapresent
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 313 KiB |
Reference in New Issue
Block a user