View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Powerful cross-platform MQTT 5.0 desktop, CLI, and WebSocket client toolbox"
HOMEPAGE="https://mqttx.app https://github.com/emqx/MQTTX"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
SRC_URI="https://packages.emqx.io/MQTTX/v${PV}/MQTTX-${PV}.AppImage -> MQTTX-${PV}.AppImage"
RDEPEND="
sys-fs/fuse:0
media-libs/alsa-lib
media-libs/fontconfig:1.0
media-libs/freetype:2
media-libs/libglvnd
media-libs/mesa
net-print/cups
sys-apps/dbus
x11-libs/cairo
x11-libs/gdk-pixbuf:2
x11-libs/gtk+:3[X]
x11-libs/libX11
x11-libs/libXScrnSaver
x11-libs/libXcomposite
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXtst
x11-libs/pango
"
inherit desktop wrapper xdg
S="${WORKDIR}"
src_unpack() {
cp "${DISTDIR}/MQTTX-${PV}.AppImage" "${WORKDIR}/MQTTX.AppImage" || die
chmod +x "${WORKDIR}/MQTTX.AppImage" || die
}
src_install() {
local dest="/opt/${PN}"
exeinto "${dest}"
newexe "${WORKDIR}/MQTTX.AppImage" MQTTX.AppImage
# Extract AppImage
"${WORKDIR}/MQTTX.AppImage" --appimage-extract || die "AppImage extraction failed"
insinto "${dest}"
doins -r squashfs-root/.
# Fix permissions: Make AppRun and main binary executable
chmod +x "${D}${dest}/AppRun" || die "chmod AppRun failed"
chmod +x "${D}${dest}/mqttx" || die "chmod main binary failed"
# Optional: other potential executables
chmod +x "${D}${dest}"/chrome_* 2>/dev/null || true
rm -rf squashfs-root || die
make_wrapper mqttx "${dest}/AppRun" "${dest}"
# Improved icon search
local icon_found=""
for candidate in \
"${D}${dest}/usr/share/icons/hicolor/"*"/apps/mqttx.png" \
"${D}${dest}/usr/share/icons/hicolor/"*"/apps/mqttx.svg" \
"${D}${dest}/.DirIcon" \
"${D}${dest}/icon.png" \
"${D}${dest}/resources/icon.png" \
"${D}${dest}/resources/app/icon.png" \
"${D}${dest}/*.png" "${D}${dest}/*.svg" ; do
if [[ -f "${candidate}" ]]; then
icon_found="${candidate}"
break
fi
done
if [[ -n "${icon_found}" ]]; then
newicon "${icon_found}" mqttx.png
elog "Found and installed icon: ${icon_found#${D}}"
else
ewarn "No icon file found in extracted AppImage. Desktop entry will use generic/fallback icon."
fi
make_desktop_entry mqttx "MQTTX" mqttx "Development;Network;Utility;"
}
pkg_postinst() {
xdg_pkg_postinst
elog "MQTTX v${PV} installed to /opt/mqttx"
elog "Run with: mqttx"
}