# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop xdg

DESCRIPTION="A powerful knowledge base on top of a local folder of plain text Markdown files"
HOMEPAGE="https://obsidian.md/"
SRC_URI="https://github.com/obsidianmd/obsidian-releases/releases/download/v${PV}/${PN}-${PV}.tar.gz"

S="${WORKDIR}/${PN}-${PV}"

LICENSE="Obsidian-EULA"
SLOT="0"
KEYWORDS="-* ~amd64"
IUSE="appindicator wayland"

RESTRICT="bindist mirror strip"

QA_PREBUILT="*"

RDEPEND="
	>=app-accessibility/at-spi2-core-2.46.0:2
	app-crypt/libsecret
	dev-libs/expat
	dev-libs/glib:2
	dev-libs/nspr
	dev-libs/nss
	media-libs/alsa-lib
	media-libs/libglvnd
	media-libs/mesa
	net-print/cups
	sys-apps/dbus
	x11-libs/cairo
	x11-libs/gtk+:3
	x11-libs/libdrm
	x11-libs/libX11
	x11-libs/libxcb
	x11-libs/libXcomposite
	x11-libs/libXdamage
	x11-libs/libXext
	x11-libs/libXfixes
	x11-libs/libxkbcommon
	x11-libs/libXrandr
	x11-libs/pango
	x11-misc/xdg-utils
	appindicator? ( dev-libs/libayatana-appindicator )
"

src_install() {
	dodir /opt/Obsidian
	cp -r "${S}/." "${ED}/opt/Obsidian/" || die

	fperms +x /opt/Obsidian/obsidian
	if [[ -f "${ED}/opt/Obsidian/chrome-sandbox" ]]; then
		fperms 4711 /opt/Obsidian/chrome-sandbox
	fi

	# Icon
	if [[ -f "${S}/resources/app.asar.unpacked/icon.png" ]]; then
		newicon -s 256 "${S}/resources/app.asar.unpacked/icon.png" obsidian.png
	fi

	# Standard launcher (XWayland under Wayland sessions)
	cat > "${T}/obsidian.desktop" <<-EOF || die
		[Desktop Entry]
		Name=Obsidian
		Exec=/opt/Obsidian/obsidian %u
		Terminal=false
		Type=Application
		Icon=obsidian
		StartupWMClass=obsidian
		Comment=Knowledge base on top of plain text Markdown files
		MimeType=x-scheme-handler/obsidian;
		Categories=Office;
	EOF
	domenu "${T}/obsidian.desktop"

	if use wayland; then
		# Native Wayland launcher (some users report instability)
		cat > "${T}/obsidian-wayland.desktop" <<-EOF || die
			[Desktop Entry]
			Name=Obsidian (Wayland)
			Exec=/opt/Obsidian/obsidian --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations --enable-wayland-ime %u
			Terminal=false
			Type=Application
			Icon=obsidian
			StartupWMClass=obsidian
			Comment=Knowledge base on top of plain text Markdown files (native Wayland)
			MimeType=x-scheme-handler/obsidian;
			Categories=Office;
		EOF
		domenu "${T}/obsidian-wayland.desktop"
	fi

	dosym -r /opt/Obsidian/obsidian /usr/bin/obsidian
}