The icon was already embedded and had been all along: `app.slint` sets it and `build.rs` compiles it into the binary with `EmbedFiles`. That is not what a Wayland compositor looks at. It ignores a client-set icon entirely, matches the surface's `app_id` against installed `.desktop` files, and takes the icon from the one whose basename agrees. Nothing set an app id and no desktop entry existed, so GNOME had nothing to resolve and drew the placeholder. Both halves are needed and neither substitutes for the other: the embedded icon is what X11 and the window itself use, and the desktop entry is what the overview, the dash and alt-tab use. The app id, the `.desktop` basename and the installed icon's filename are one string in three places — `paris.tourolle.darkroom`, the same reverse-DNS name the Android manifest already uses, because it is one application. Change one without the others and the icon disappears again with nothing logged, so each file says so where the string appears. The PKGBUILD builds from the checkout rather than a release tarball, so `makepkg -si` installs what is being worked on. Install verified by inspection of the built package: binary, desktop entry, and the icon under hicolor/256x256 by the name the entry asks for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
47 lines
1.8 KiB
Bash
47 lines
1.8 KiB
Bash
# Maintainer: Duncan Tourolle <duncan@tourolle.paris>
|
|
#
|
|
# Builds from the local checkout rather than a release tarball, which is what
|
|
# makes `makepkg -si` in this directory install what you are actually working
|
|
# on. Swap `source` for a tagged tarball when there is something to release.
|
|
pkgname=darkroom
|
|
pkgver=0.3.0
|
|
pkgrel=1
|
|
pkgdesc="Non-destructive RAW photo library and editor"
|
|
arch=('x86_64')
|
|
url="https://gitea.tourolle.paris/dtourolle/DarkRoom"
|
|
license=('GPL-3.0-or-later')
|
|
# Runtime: Vulkan for wgpu, and a Secret Service implementation for the
|
|
# Nextcloud credentials (FR-NC-2) — gnome-keyring or kwallet both provide it.
|
|
depends=('vulkan-icd-loader' 'fontconfig' 'libxkbcommon')
|
|
makedepends=('cargo' 'git')
|
|
optdepends=('gnome-keyring: store Nextcloud credentials'
|
|
'kwallet: store Nextcloud credentials')
|
|
options=('!lto') # the workspace sets its own LTO in Cargo.toml
|
|
|
|
_repo="$(cd "${startdir}/.." && pwd)"
|
|
|
|
build() {
|
|
cd "${_repo}"
|
|
export RUSTUP_TOOLCHAIN=stable
|
|
export CARGO_TARGET_DIR="${_repo}/target"
|
|
cargo build --release --locked -p darkroom-desktop
|
|
}
|
|
|
|
package() {
|
|
cd "${_repo}"
|
|
install -Dm755 "target/release/darkroom-desktop" \
|
|
"${pkgdir}/usr/bin/darkroom-desktop"
|
|
|
|
install -Dm644 "packaging/paris.tourolle.darkroom.desktop" \
|
|
"${pkgdir}/usr/share/applications/paris.tourolle.darkroom.desktop"
|
|
|
|
# The icon's *name* is the contract, not its path: the desktop entry says
|
|
# `Icon=paris.tourolle.darkroom` and the compositor resolves that through
|
|
# the hicolor theme. Installed under 256x256 because that is the source's
|
|
# actual size — lying about it makes scaled-down icons look wrong.
|
|
install -Dm644 "ui/dr-ui/ui/app-icon.png" \
|
|
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/paris.tourolle.darkroom.png"
|
|
|
|
install -Dm644 "README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
|
|
}
|