Files
omarchy-pkgs/pkgbuilds/hermes-desktop/hermes-desktop.sh
T
Omabot 4ebb07b267 Fix what the review found in the desktop package
Pin the build stamp. write-build-stamp.mjs resolves the commit the app pins
its first-launch bootstrap to, preferring $GITHUB_SHA and otherwise running
`git rev-parse`. That fallback is wrong under makepkg: the build happens
inside this repository, so git ascends out of srcdir and stamps the app with
an omarchy-pkgs commit that means nothing upstream. Confirmed by rebuilding --
the stamp now reads the tag's own commit rather than this repo's HEAD.

Ship upstream's MIT licence. The package declares MIT and was installing only
Electron's licence text.

Repair a drifted CLI before launching rather than only a missing one. `mise
up` can leave Hermes rebuilt against the system Python, and a stub can be
there but cold; either way the wrapper's own repair takes minutes while the
app allows 15 seconds before bootstrapping its own copy. Running the installer
unconditionally costs nothing when Hermes is healthy.

Register the hermes:// scheme. The desktop entry took %U while declaring no
MimeType, so the scheme electron-builder configures went unhandled.
2026-08-19 03:08:40 -07:00

36 lines
1.6 KiB
Bash

#!/bin/bash
set -euo pipefail
# The desktop app is only a shell: it runs `hermes serve` against a Hermes CLI
# it does not ship. Finding none, it clones its own copy with the upstream
# install script -- an unpinned checkout in ~/.hermes that no package manages.
#
# command -v rather than omarchy-cmd-present: no other launcher in this repo
# makes a package depend on omarchy, and this has to behave on a plain Arch box.
# Run the installer even when hermes is already on PATH. A stub can be there
# and cold, and `mise up` can leave one pointing at a Hermes built against the
# wrong Python; repairing either costs minutes, and the app allows 15 seconds
# before it gives up and bootstraps. Installing here is a no-op when healthy.
if command -v omarchy-install-hermes-cli >/dev/null 2>&1; then
omarchy-install-hermes-cli --now
elif ! command -v hermes >/dev/null 2>&1; then
echo "The Hermes CLI is not installed, so Hermes Desktop will install its" >&2
echo "own copy under ~/.hermes. Install the CLI first to avoid that." >&2
fi
# Chromium's own Ozone detection falls back to XWayland often enough to matter,
# and the result is a blurry window on every scaled display. Ask for Wayland
# directly, unless the user has already picked a platform themselves.
platform_flags=()
if [[ -n "${WAYLAND_DISPLAY:-}" || ${XDG_SESSION_TYPE:-} == wayland ]]; then
platform_flags=(--ozone-platform=wayland)
for flag in "$@"; do
case "$flag" in
--ozone-platform=* | --ozone-platform-hint=*) platform_flags=() ;;
esac
done
fi
exec /opt/hermes-desktop/Hermes "${platform_flags[@]}" "$@"